From 5b60f49cb60442d8af5d298a22bbad6c7f0019a0 Mon Sep 17 00:00:00 2001 From: pelya Date: Mon, 26 Nov 2012 19:13:39 +0200 Subject: [PATCH] Deleted unused files with spaces --- .../jni/python/src/Mac/BuildScript/README.txt | 78 - .../src/Mac/BuildScript/build-installer.py | 1064 - .../src/Mac/BuildScript/ncurses-5.5.patch | 36 - .../src/Mac/BuildScript/resources/ReadMe.txt | 30 - .../src/Mac/BuildScript/resources/Welcome.rtf | 18 - .../Mac/BuildScript/resources/background.jpg | Bin 45421 -> 0 bytes .../scripts/postflight.documentation | 11 - .../BuildScript/scripts/postflight.framework | 33 - .../scripts/postflight.patch-profile | 96 - .../jni/python/src/Mac/BuildScript/seticon.m | 26 - .../src/Mac/Demo/PICTbrowse/ICONbrowse.py | 161 - .../src/Mac/Demo/PICTbrowse/PICTbrowse.py | 140 - .../src/Mac/Demo/PICTbrowse/PICTbrowse.rsrc | Bin 785 -> 0 bytes .../src/Mac/Demo/PICTbrowse/PICTbrowse2.py | 162 - .../src/Mac/Demo/PICTbrowse/cicnbrowse.py | 161 - .../src/Mac/Demo/PICTbrowse/oldPICTbrowse.py | 158 - .../Mac/Demo/PICTbrowse/oldPICTbrowse.rsrc | Bin 502 -> 0 bytes .../jni/python/src/Mac/Demo/applescript.html | 362 - .../applescript/Disk_Copy/Special_Events.py | 424 - .../applescript/Disk_Copy/Standard_Suite.py | 477 - .../applescript/Disk_Copy/Utility_Events.py | 213 - .../Demo/applescript/Disk_Copy/__init__.py | 35 - .../src/Mac/Demo/applescript/makedisk.py | 15 - project/jni/python/src/Mac/Demo/example0.html | 75 - .../python/src/Mac/Demo/example0/checktext.py | 35 - project/jni/python/src/Mac/Demo/example1.html | 193 - .../src/Mac/Demo/example1/dnslookup-1.gif | Bin 2570 -> 0 bytes .../src/Mac/Demo/example1/dnslookup-1.py | 55 - .../src/Mac/Demo/example1/dnslookup-1.rsrc | Bin 604 -> 0 bytes project/jni/python/src/Mac/Demo/example2.html | 162 - .../src/Mac/Demo/example2/dnslookup-2.gif | Bin 2984 -> 0 bytes .../src/Mac/Demo/example2/dnslookup-2.py | 85 - .../src/Mac/Demo/example2/dnslookup-2.rsrc | Bin 707 -> 0 bytes .../src/Mac/Demo/html.icons/createmake.png | Bin 14212 -> 0 bytes .../src/Mac/Demo/html.icons/mkapplet.gif | Bin 1010 -> 0 bytes .../src/Mac/Demo/html.icons/modulator.gif | Bin 6479 -> 0 bytes .../src/Mac/Demo/html.icons/options.gif | Bin 4231 -> 0 bytes .../src/Mac/Demo/html.icons/preferences.gif | Bin 5344 -> 0 bytes .../python/src/Mac/Demo/html.icons/python.gif | Bin 1004 -> 0 bytes .../src/Mac/Demo/imgbrowse/imgbrowse.py | 115 - .../src/Mac/Demo/imgbrowse/mac_image.py | 55 - project/jni/python/src/Mac/Demo/index.html | 156 - project/jni/python/src/Mac/Demo/mlte/mlted.py | 374 - .../src/Mac/Demo/quicktime/MovieInWindow.py | 70 - .../Mac/Demo/quicktime/VerySimplePlayer.py | 92 - .../python/src/Mac/Demo/resources/copyres.py | 57 - .../python/src/Mac/Demo/resources/listres.py | 60 - .../jni/python/src/Mac/Demo/sound/morse.py | 180 - .../jni/python/src/Mac/Demo/sound/morselib.py | 188 - .../jni/python/src/Mac/Demo/sound/playaiff.py | 45 - project/jni/python/src/Mac/Demo/textedit.html | 150 - .../jni/python/src/Mac/Demo/textedit/ped.py | 359 - project/jni/python/src/Mac/Extras.ReadMe.txt | 5 - project/jni/python/src/Mac/Extras.install.py | 54 - project/jni/python/src/Mac/IDLE/Info.plist.in | 55 - project/jni/python/src/Mac/IDLE/Makefile.in | 60 - .../python/src/Mac/IDLE/config-extensions.def | 88 - .../jni/python/src/Mac/IDLE/config-main.def | 79 - project/jni/python/src/Mac/IDLE/idlemain.py | 73 - .../jni/python/src/Mac/Icons/Disk Image.icns | Bin 50703 -> 0 bytes project/jni/python/src/Mac/Icons/IDLE.icns | Bin 53456 -> 0 bytes .../python/src/Mac/Icons/Python Folder.icns | Bin 133608 -> 0 bytes .../python/src/Mac/Icons/PythonCompiled.icns | Bin 60777 -> 0 bytes .../python/src/Mac/Icons/PythonLauncher.icns | Bin 42658 -> 0 bytes .../python/src/Mac/Icons/PythonSource.icns | Bin 54522 -> 0 bytes project/jni/python/src/Mac/Icons/ReadMe.txt | 3 - project/jni/python/src/Mac/Makefile.in | 317 - .../src/Mac/Modules/ColorPickermodule.c | 90 - project/jni/python/src/Mac/Modules/MacOS.c | 730 - project/jni/python/src/Mac/Modules/Nav.c | 977 - .../python/src/Mac/Modules/OSATerminology.c | 98 - project/jni/python/src/Mac/Modules/ae/README | 24 - .../jni/python/src/Mac/Modules/ae/_AEmodule.c | 1459 - .../jni/python/src/Mac/Modules/ae/aescan.py | 97 - .../python/src/Mac/Modules/ae/aesupport.py | 237 - .../jni/python/src/Mac/Modules/ah/_AHmodule.c | 144 - .../jni/python/src/Mac/Modules/ah/ahscan.py | 51 - .../python/src/Mac/Modules/ah/ahsupport.py | 45 - .../python/src/Mac/Modules/app/_Appmodule.c | 1832 - .../jni/python/src/Mac/Modules/app/appscan.py | 80 - .../python/src/Mac/Modules/app/appsupport.py | 133 - project/jni/python/src/Mac/Modules/autoGIL.c | 152 - .../Mac/Modules/carbonevt/CarbonEvtscan.py | 115 - .../Mac/Modules/carbonevt/CarbonEvtsupport.py | 314 - .../Mac/Modules/carbonevt/_CarbonEvtmodule.c | 2231 -- .../jni/python/src/Mac/Modules/cf/_CFmodule.c | 4996 --- .../jni/python/src/Mac/Modules/cf/cfscan.py | 141 - .../python/src/Mac/Modules/cf/cfsupport.py | 666 - .../python/src/Mac/Modules/cf/pycfbridge.c | 303 - .../python/src/Mac/Modules/cf/pycfbridge.h | 11 - .../python/src/Mac/Modules/cg/CFMLateImport.c | 1360 - .../python/src/Mac/Modules/cg/CFMLateImport.h | 272 - .../jni/python/src/Mac/Modules/cg/CGStubLib | Bin 2776 -> 0 bytes .../python/src/Mac/Modules/cg/CGStubLib.exp | 60 - .../src/Mac/Modules/cg/CGStubLib.readme | 3 - .../jni/python/src/Mac/Modules/cg/_CGmodule.c | 1316 - .../jni/python/src/Mac/Modules/cg/cgscan.py | 83 - .../python/src/Mac/Modules/cg/cgsupport.py | 192 - .../jni/python/src/Mac/Modules/cm/_Cmmodule.c | 955 - .../jni/python/src/Mac/Modules/cm/cmscan.py | 88 - .../python/src/Mac/Modules/cm/cmsupport.py | 125 - .../python/src/Mac/Modules/ctl/_Ctlmodule.c | 5815 ---- .../jni/python/src/Mac/Modules/ctl/ctledit.py | 45 - .../jni/python/src/Mac/Modules/ctl/ctlscan.py | 171 - .../python/src/Mac/Modules/ctl/ctlsupport.py | 826 - .../python/src/Mac/Modules/dlg/_Dlgmodule.c | 1609 - .../jni/python/src/Mac/Modules/dlg/dlgscan.py | 115 - .../python/src/Mac/Modules/dlg/dlgsupport.py | 278 - .../python/src/Mac/Modules/drag/_Dragmodule.c | 1158 - .../python/src/Mac/Modules/drag/dragscan.py | 79 - .../src/Mac/Modules/drag/dragsupport.py | 293 - .../python/src/Mac/Modules/evt/_Evtmodule.c | 559 - .../jni/python/src/Mac/Modules/evt/evtedit.py | 9 - .../jni/python/src/Mac/Modules/evt/evtscan.py | 80 - .../python/src/Mac/Modules/evt/evtsupport.py | 92 - .../python/src/Mac/Modules/file/_Filemodule.c | 3410 -- .../python/src/Mac/Modules/file/filescan.py | 198 - .../src/Mac/Modules/file/filesupport.py | 918 - .../jni/python/src/Mac/Modules/fm/_Fmmodule.c | 368 - .../jni/python/src/Mac/Modules/fm/fmscan.py | 71 - .../python/src/Mac/Modules/fm/fmsupport.py | 81 - .../src/Mac/Modules/folder/_Foldermodule.c | 342 - .../src/Mac/Modules/folder/folderscan.py | 67 - .../src/Mac/Modules/folder/foldersupport.py | 56 - .../python/src/Mac/Modules/gestaltmodule.c | 55 - .../python/src/Mac/Modules/help/_Helpmodule.c | 196 - .../python/src/Mac/Modules/help/helpscan.py | 66 - .../src/Mac/Modules/help/helpsupport.py | 78 - .../src/Mac/Modules/ibcarbon/IBCarbonscan.py | 47 - .../Mac/Modules/ibcarbon/IBCarbonsupport.py | 51 - .../src/Mac/Modules/ibcarbon/_IBCarbon.c | 270 - .../jni/python/src/Mac/Modules/icgluemodule.c | 478 - .../python/src/Mac/Modules/icn/_Icnmodule.c | 1607 - .../jni/python/src/Mac/Modules/icn/icnscan.py | 71 - .../python/src/Mac/Modules/icn/icnsupport.py | 90 - .../src/Mac/Modules/launch/_Launchmodule.c | 481 - .../src/Mac/Modules/launch/launchscan.py | 85 - .../src/Mac/Modules/launch/launchsupport.py | 101 - .../python/src/Mac/Modules/launch/setup.py | 13 - .../python/src/Mac/Modules/list/_Listmodule.c | 1140 - .../python/src/Mac/Modules/list/listscan.py | 87 - .../src/Mac/Modules/list/listsupport.py | 255 - .../python/src/Mac/Modules/menu/_Menumodule.c | 3477 -- .../python/src/Mac/Modules/menu/menuedit.py | 123 - .../python/src/Mac/Modules/menu/menuscan.py | 96 - .../src/Mac/Modules/menu/menusupport.py | 108 - .../python/src/Mac/Modules/mlte/_Mltemodule.c | 1690 - .../python/src/Mac/Modules/mlte/mltescan.py | 142 - .../src/Mac/Modules/mlte/mltesupport.py | 202 - .../python/src/Mac/Modules/osa/_OSAmodule.c | 899 - .../jni/python/src/Mac/Modules/osa/osascan.py | 61 - .../python/src/Mac/Modules/osa/osasupport.py | 105 - .../jni/python/src/Mac/Modules/osa/setup.py | 13 - .../jni/python/src/Mac/Modules/qd/_Qdmodule.c | 7154 ---- .../jni/python/src/Mac/Modules/qd/qdedit.py | 158 - .../jni/python/src/Mac/Modules/qd/qdscan.py | 234 - .../python/src/Mac/Modules/qd/qdsupport.py | 377 - .../src/Mac/Modules/qdoffs/_Qdoffsmodule.c | 722 - .../src/Mac/Modules/qdoffs/qdoffsscan.py | 65 - .../src/Mac/Modules/qdoffs/qdoffssupport.py | 139 - .../jni/python/src/Mac/Modules/qt/_Qtmodule.c | 28091 ---------------- .../jni/python/src/Mac/Modules/qt/qtscan.py | 318 - .../python/src/Mac/Modules/qt/qtsupport.py | 382 - .../jni/python/src/Mac/Modules/qt/setup.py | 13 - .../python/src/Mac/Modules/res/_Resmodule.c | 1760 - .../jni/python/src/Mac/Modules/res/resedit.py | 102 - .../jni/python/src/Mac/Modules/res/resscan.py | 83 - .../python/src/Mac/Modules/res/ressupport.py | 221 - .../src/Mac/Modules/scrap/_Scrapmodule.c | 365 - .../python/src/Mac/Modules/scrap/scrapscan.py | 60 - .../src/Mac/Modules/scrap/scrapsupport.py | 75 - .../python/src/Mac/Modules/snd/_Sndihooks.c | 512 - .../python/src/Mac/Modules/snd/_Sndmodule.c | 1161 - .../jni/python/src/Mac/Modules/snd/sndscan.py | 127 - .../python/src/Mac/Modules/snd/sndsupport.py | 319 - .../jni/python/src/Mac/Modules/te/_TEmodule.c | 1339 - .../jni/python/src/Mac/Modules/te/tescan.py | 66 - .../python/src/Mac/Modules/te/tesupport.py | 216 - .../python/src/Mac/Modules/win/_Winmodule.c | 3265 -- .../jni/python/src/Mac/Modules/win/winedit.py | 69 - .../jni/python/src/Mac/Modules/win/winscan.py | 129 - .../python/src/Mac/Modules/win/winsupport.py | 226 - .../PythonLauncher/English.lproj/Credits.rtf | 30 - .../English.lproj/MainMenu.nib/classes.nib | 12 - .../English.lproj/MainMenu.nib/info.nib | 21 - .../English.lproj/MainMenu.nib/objects.nib | Bin 5016 -> 0 bytes .../English.lproj/MyDocument.nib/classes.nib | 26 - .../English.lproj/MyDocument.nib/info.nib | 16 - .../English.lproj/MyDocument.nib/objects.nib | Bin 4845 -> 0 bytes .../PreferenceWindow.nib/classes.nib | 26 - .../PreferenceWindow.nib/info.nib | 16 - .../PreferenceWindow.nib/objects.nib | Bin 5882 -> 0 bytes .../src/Mac/PythonLauncher/FileSettings.h | 64 - .../src/Mac/PythonLauncher/FileSettings.m | 313 - .../src/Mac/PythonLauncher/Info.plist.in | 65 - .../python/src/Mac/PythonLauncher/Makefile.in | 82 - .../src/Mac/PythonLauncher/MyAppDelegate.h | 15 - .../src/Mac/PythonLauncher/MyAppDelegate.m | 96 - .../src/Mac/PythonLauncher/MyDocument.h | 41 - .../src/Mac/PythonLauncher/MyDocument.m | 175 - .../PreferencesWindowController.h | 38 - .../PreferencesWindowController.m | 121 - .../python/src/Mac/PythonLauncher/doscript.h | 12 - .../python/src/Mac/PythonLauncher/doscript.m | 59 - .../Mac/PythonLauncher/factorySettings.plist | 87 - .../jni/python/src/Mac/PythonLauncher/main.m | 17 - project/jni/python/src/Mac/README | 163 - .../src/Mac/Resources/app/Info.plist.in | 60 - .../jni/python/src/Mac/Resources/app/PkgInfo | 1 - .../Documentation/PackageManager.gif | Bin 6087 -> 0 bytes .../Documentation/community.html | 69 - .../Documentation/doc/index.html | 21 - .../English.lproj/Documentation/finder.html | 36 - .../English.lproj/Documentation/gui.html | 54 - .../English.lproj/Documentation/ide/IDE.gif | Bin 10249 -> 0 bytes .../ide/entering_in_new_window.gif | Bin 15578 -> 0 bytes .../Documentation/ide/hello_world.gif | Bin 15681 -> 0 bytes .../Documentation/ide/index.html | 222 - .../Documentation/ide/loading_ide.gif | Bin 50595 -> 0 bytes .../Documentation/ide/making_new_window.gif | Bin 25978 -> 0 bytes .../Documentation/ide/new_ide_window.gif | Bin 20606 -> 0 bytes .../Documentation/ide/new_window_made.gif | Bin 21808 -> 0 bytes .../Documentation/ide/output_window.gif | Bin 37660 -> 0 bytes .../Documentation/ide/saving_edited_file.gif | Bin 26559 -> 0 bytes .../Documentation/ide/simple_commands.gif | Bin 14134 -> 0 bytes .../Documentation/ide/syntax_error.gif | Bin 12850 -> 0 bytes .../English.lproj/Documentation/index.html | 51 - .../English.lproj/Documentation/intro.html | 76 - .../English.lproj/Documentation/packman.html | 64 - .../English.lproj/Documentation/python.gif | Bin 6389 -> 0 bytes .../Documentation/pythonsmall.gif | Bin 138 -> 0 bytes .../Documentation/scripting.html | 53 - .../English.lproj/Documentation/shell.html | 52 - .../Resources/app/Resources/PythonApplet.icns | Bin 63136 -> 0 bytes .../app/Resources/PythonInterpreter.icns | Bin 42658 -> 0 bytes .../src/Mac/Resources/framework/Info.plist.in | 28 - .../python/src/Mac/Resources/iconsrc/IDE.psd | Bin 83876 -> 0 bytes .../Mac/Resources/iconsrc/PackageManager.psd | Bin 71056 -> 0 bytes .../Mac/Resources/iconsrc/PythonApplet.psd | Bin 41543 -> 0 bytes .../Mac/Resources/iconsrc/PythonCompiled.psd | Bin 76118 -> 0 bytes .../src/Mac/Resources/iconsrc/PythonIcon.psd | Bin 67236 -> 0 bytes .../Mac/Resources/iconsrc/PythonSource.psd | Bin 62075 -> 0 bytes .../Mac/Resources/iconsrc/PythonWSource.psd | Bin 64185 -> 0 bytes .../Help_Indexing_Tool_Suite.py | 110 - .../Miscellaneous_Standards.py | 49 - .../Doc/HelpIndexingTool/Required_Suite.py | 32 - .../Doc/HelpIndexingTool/Standard_Suite.py | 343 - .../Tools/Doc/HelpIndexingTool/__init__.py | 78 - .../Doc/HelpIndexingTool/odds_and_ends.py | 49 - project/jni/python/src/Mac/Tools/Doc/README | 35 - project/jni/python/src/Mac/Tools/Doc/setup.py | 214 - .../python/src/Mac/Tools/fixapplepython23.py | 130 - project/jni/python/src/Mac/Tools/pythonw.c | 17 - .../python/src/Mac/scripts/BuildApplet.icns | Bin 120107 -> 0 bytes .../python/src/Mac/scripts/BuildApplet.plist | 55 - .../jni/python/src/Mac/scripts/BuildApplet.py | 149 - .../python/src/Mac/scripts/BuildApplet.rsrc | Bin 3169 -> 0 bytes project/jni/python/src/Mac/scripts/bgenall.py | 56 - .../jni/python/src/Mac/scripts/buildpkg.py | 484 - .../jni/python/src/Mac/scripts/cachersrc.py | 44 - project/jni/python/src/Mac/scripts/errors.txt | 1852 - .../python/src/Mac/scripts/genallsuites.py | 52 - .../python/src/Mac/scripts/mkestrres-errno.h | 7 - .../src/Mac/scripts/mkestrres-macerrors.h | 13 - .../jni/python/src/Mac/scripts/mkestrres.py | 157 - .../jni/python/src/Mac/scripts/zappycfiles.py | 36 - project/jni/python/src/Misc/ACKS | 783 - project/jni/python/src/Misc/AIX-NOTES | 155 - project/jni/python/src/Misc/BeOS-NOTES | 43 - project/jni/python/src/Misc/BeOS-setup.py | 574 - project/jni/python/src/Misc/HISTORY | 17442 ---------- project/jni/python/src/Misc/NEWS | 3744 -- project/jni/python/src/Misc/NEWS.help | 73 - project/jni/python/src/Misc/PURIFY.README | 97 - project/jni/python/src/Misc/Porting | 42 - project/jni/python/src/Misc/README | 33 - project/jni/python/src/Misc/README.OpenBSD | 38 - project/jni/python/src/Misc/README.coverity | 22 - project/jni/python/src/Misc/README.klocwork | 30 - project/jni/python/src/Misc/README.valgrind | 97 - project/jni/python/src/Misc/RFD | 114 - project/jni/python/src/Misc/RPM/README | 16 - .../jni/python/src/Misc/RPM/python-2.6.spec | 387 - project/jni/python/src/Misc/SpecialBuilds.txt | 261 - .../2 to 3 - Module Deletion.tmCommand | 64 - .../Commands/Build Docs.tmCommand | 23 - .../Commands/Build.tmCommand | 25 - .../Commands/Go to Issue.tmCommand | 20 - .../Commands/Open Docs.tmCommand | 32 - .../Commands/Open PEP.tmCommand | 23 - .../2 to 3 - Module Deletion (docs).tmSnippet | 16 - .../TextMate/Python-Dev.tmbundle/info.plist | 37 - project/jni/python/src/Misc/Vim/python.vim | 148 - .../jni/python/src/Misc/Vim/syntax_test.py | 62 - project/jni/python/src/Misc/Vim/vim_syntax.py | 227 - project/jni/python/src/Misc/Vim/vimrc | 89 - project/jni/python/src/Misc/build.sh | 296 - project/jni/python/src/Misc/cheatsheet | 2273 -- project/jni/python/src/Misc/developers.txt | 250 - .../python/src/Misc/find_recursionlimit.py | 117 - project/jni/python/src/Misc/gdbinit | 153 - project/jni/python/src/Misc/indent.pro | 15 - project/jni/python/src/Misc/pymemcompat.h | 85 - project/jni/python/src/Misc/python-config.in | 53 - project/jni/python/src/Misc/python-mode.el | 3906 --- project/jni/python/src/Misc/python.man | 403 - project/jni/python/src/Misc/setuid-prog.c | 176 - .../jni/python/src/Misc/valgrind-python.supp | 391 - project/jni/python/src/Misc/vgrindefs | 10 - 309 files changed, 141884 deletions(-) delete mode 100644 project/jni/python/src/Mac/BuildScript/README.txt delete mode 100644 project/jni/python/src/Mac/BuildScript/build-installer.py delete mode 100644 project/jni/python/src/Mac/BuildScript/ncurses-5.5.patch delete mode 100644 project/jni/python/src/Mac/BuildScript/resources/ReadMe.txt delete mode 100644 project/jni/python/src/Mac/BuildScript/resources/Welcome.rtf delete mode 100644 project/jni/python/src/Mac/BuildScript/resources/background.jpg delete mode 100644 project/jni/python/src/Mac/BuildScript/scripts/postflight.documentation delete mode 100644 project/jni/python/src/Mac/BuildScript/scripts/postflight.framework delete mode 100644 project/jni/python/src/Mac/BuildScript/scripts/postflight.patch-profile delete mode 100644 project/jni/python/src/Mac/BuildScript/seticon.m delete mode 100644 project/jni/python/src/Mac/Demo/PICTbrowse/ICONbrowse.py delete mode 100644 project/jni/python/src/Mac/Demo/PICTbrowse/PICTbrowse.py delete mode 100644 project/jni/python/src/Mac/Demo/PICTbrowse/PICTbrowse.rsrc delete mode 100644 project/jni/python/src/Mac/Demo/PICTbrowse/PICTbrowse2.py delete mode 100644 project/jni/python/src/Mac/Demo/PICTbrowse/cicnbrowse.py delete mode 100644 project/jni/python/src/Mac/Demo/PICTbrowse/oldPICTbrowse.py delete mode 100644 project/jni/python/src/Mac/Demo/PICTbrowse/oldPICTbrowse.rsrc delete mode 100644 project/jni/python/src/Mac/Demo/applescript.html delete mode 100644 project/jni/python/src/Mac/Demo/applescript/Disk_Copy/Special_Events.py delete mode 100644 project/jni/python/src/Mac/Demo/applescript/Disk_Copy/Standard_Suite.py delete mode 100644 project/jni/python/src/Mac/Demo/applescript/Disk_Copy/Utility_Events.py delete mode 100644 project/jni/python/src/Mac/Demo/applescript/Disk_Copy/__init__.py delete mode 100644 project/jni/python/src/Mac/Demo/applescript/makedisk.py delete mode 100644 project/jni/python/src/Mac/Demo/example0.html delete mode 100644 project/jni/python/src/Mac/Demo/example0/checktext.py delete mode 100644 project/jni/python/src/Mac/Demo/example1.html delete mode 100644 project/jni/python/src/Mac/Demo/example1/dnslookup-1.gif delete mode 100644 project/jni/python/src/Mac/Demo/example1/dnslookup-1.py delete mode 100644 project/jni/python/src/Mac/Demo/example1/dnslookup-1.rsrc delete mode 100644 project/jni/python/src/Mac/Demo/example2.html delete mode 100644 project/jni/python/src/Mac/Demo/example2/dnslookup-2.gif delete mode 100644 project/jni/python/src/Mac/Demo/example2/dnslookup-2.py delete mode 100644 project/jni/python/src/Mac/Demo/example2/dnslookup-2.rsrc delete mode 100644 project/jni/python/src/Mac/Demo/html.icons/createmake.png delete mode 100644 project/jni/python/src/Mac/Demo/html.icons/mkapplet.gif delete mode 100644 project/jni/python/src/Mac/Demo/html.icons/modulator.gif delete mode 100644 project/jni/python/src/Mac/Demo/html.icons/options.gif delete mode 100644 project/jni/python/src/Mac/Demo/html.icons/preferences.gif delete mode 100644 project/jni/python/src/Mac/Demo/html.icons/python.gif delete mode 100644 project/jni/python/src/Mac/Demo/imgbrowse/imgbrowse.py delete mode 100644 project/jni/python/src/Mac/Demo/imgbrowse/mac_image.py delete mode 100644 project/jni/python/src/Mac/Demo/index.html delete mode 100644 project/jni/python/src/Mac/Demo/mlte/mlted.py delete mode 100644 project/jni/python/src/Mac/Demo/quicktime/MovieInWindow.py delete mode 100644 project/jni/python/src/Mac/Demo/quicktime/VerySimplePlayer.py delete mode 100644 project/jni/python/src/Mac/Demo/resources/copyres.py delete mode 100644 project/jni/python/src/Mac/Demo/resources/listres.py delete mode 100644 project/jni/python/src/Mac/Demo/sound/morse.py delete mode 100644 project/jni/python/src/Mac/Demo/sound/morselib.py delete mode 100644 project/jni/python/src/Mac/Demo/sound/playaiff.py delete mode 100644 project/jni/python/src/Mac/Demo/textedit.html delete mode 100644 project/jni/python/src/Mac/Demo/textedit/ped.py delete mode 100644 project/jni/python/src/Mac/Extras.ReadMe.txt delete mode 100644 project/jni/python/src/Mac/Extras.install.py delete mode 100644 project/jni/python/src/Mac/IDLE/Info.plist.in delete mode 100644 project/jni/python/src/Mac/IDLE/Makefile.in delete mode 100644 project/jni/python/src/Mac/IDLE/config-extensions.def delete mode 100644 project/jni/python/src/Mac/IDLE/config-main.def delete mode 100644 project/jni/python/src/Mac/IDLE/idlemain.py delete mode 100644 project/jni/python/src/Mac/Icons/Disk Image.icns delete mode 100644 project/jni/python/src/Mac/Icons/IDLE.icns delete mode 100644 project/jni/python/src/Mac/Icons/Python Folder.icns delete mode 100644 project/jni/python/src/Mac/Icons/PythonCompiled.icns delete mode 100644 project/jni/python/src/Mac/Icons/PythonLauncher.icns delete mode 100644 project/jni/python/src/Mac/Icons/PythonSource.icns delete mode 100644 project/jni/python/src/Mac/Icons/ReadMe.txt delete mode 100644 project/jni/python/src/Mac/Makefile.in delete mode 100644 project/jni/python/src/Mac/Modules/ColorPickermodule.c delete mode 100644 project/jni/python/src/Mac/Modules/MacOS.c delete mode 100644 project/jni/python/src/Mac/Modules/Nav.c delete mode 100644 project/jni/python/src/Mac/Modules/OSATerminology.c delete mode 100644 project/jni/python/src/Mac/Modules/ae/README delete mode 100644 project/jni/python/src/Mac/Modules/ae/_AEmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/ae/aescan.py delete mode 100644 project/jni/python/src/Mac/Modules/ae/aesupport.py delete mode 100644 project/jni/python/src/Mac/Modules/ah/_AHmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/ah/ahscan.py delete mode 100644 project/jni/python/src/Mac/Modules/ah/ahsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/app/_Appmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/app/appscan.py delete mode 100644 project/jni/python/src/Mac/Modules/app/appsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/autoGIL.c delete mode 100644 project/jni/python/src/Mac/Modules/carbonevt/CarbonEvtscan.py delete mode 100644 project/jni/python/src/Mac/Modules/carbonevt/CarbonEvtsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/carbonevt/_CarbonEvtmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/cf/_CFmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/cf/cfscan.py delete mode 100644 project/jni/python/src/Mac/Modules/cf/cfsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/cf/pycfbridge.c delete mode 100644 project/jni/python/src/Mac/Modules/cf/pycfbridge.h delete mode 100644 project/jni/python/src/Mac/Modules/cg/CFMLateImport.c delete mode 100644 project/jni/python/src/Mac/Modules/cg/CFMLateImport.h delete mode 100644 project/jni/python/src/Mac/Modules/cg/CGStubLib delete mode 100644 project/jni/python/src/Mac/Modules/cg/CGStubLib.exp delete mode 100644 project/jni/python/src/Mac/Modules/cg/CGStubLib.readme delete mode 100644 project/jni/python/src/Mac/Modules/cg/_CGmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/cg/cgscan.py delete mode 100644 project/jni/python/src/Mac/Modules/cg/cgsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/cm/_Cmmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/cm/cmscan.py delete mode 100644 project/jni/python/src/Mac/Modules/cm/cmsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/ctl/_Ctlmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/ctl/ctledit.py delete mode 100644 project/jni/python/src/Mac/Modules/ctl/ctlscan.py delete mode 100644 project/jni/python/src/Mac/Modules/ctl/ctlsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/dlg/_Dlgmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/dlg/dlgscan.py delete mode 100644 project/jni/python/src/Mac/Modules/dlg/dlgsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/drag/_Dragmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/drag/dragscan.py delete mode 100644 project/jni/python/src/Mac/Modules/drag/dragsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/evt/_Evtmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/evt/evtedit.py delete mode 100644 project/jni/python/src/Mac/Modules/evt/evtscan.py delete mode 100644 project/jni/python/src/Mac/Modules/evt/evtsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/file/_Filemodule.c delete mode 100644 project/jni/python/src/Mac/Modules/file/filescan.py delete mode 100644 project/jni/python/src/Mac/Modules/file/filesupport.py delete mode 100644 project/jni/python/src/Mac/Modules/fm/_Fmmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/fm/fmscan.py delete mode 100644 project/jni/python/src/Mac/Modules/fm/fmsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/folder/_Foldermodule.c delete mode 100644 project/jni/python/src/Mac/Modules/folder/folderscan.py delete mode 100644 project/jni/python/src/Mac/Modules/folder/foldersupport.py delete mode 100644 project/jni/python/src/Mac/Modules/gestaltmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/help/_Helpmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/help/helpscan.py delete mode 100644 project/jni/python/src/Mac/Modules/help/helpsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/ibcarbon/IBCarbonscan.py delete mode 100644 project/jni/python/src/Mac/Modules/ibcarbon/IBCarbonsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/ibcarbon/_IBCarbon.c delete mode 100644 project/jni/python/src/Mac/Modules/icgluemodule.c delete mode 100644 project/jni/python/src/Mac/Modules/icn/_Icnmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/icn/icnscan.py delete mode 100644 project/jni/python/src/Mac/Modules/icn/icnsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/launch/_Launchmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/launch/launchscan.py delete mode 100644 project/jni/python/src/Mac/Modules/launch/launchsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/launch/setup.py delete mode 100644 project/jni/python/src/Mac/Modules/list/_Listmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/list/listscan.py delete mode 100644 project/jni/python/src/Mac/Modules/list/listsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/menu/_Menumodule.c delete mode 100644 project/jni/python/src/Mac/Modules/menu/menuedit.py delete mode 100644 project/jni/python/src/Mac/Modules/menu/menuscan.py delete mode 100644 project/jni/python/src/Mac/Modules/menu/menusupport.py delete mode 100644 project/jni/python/src/Mac/Modules/mlte/_Mltemodule.c delete mode 100644 project/jni/python/src/Mac/Modules/mlte/mltescan.py delete mode 100644 project/jni/python/src/Mac/Modules/mlte/mltesupport.py delete mode 100644 project/jni/python/src/Mac/Modules/osa/_OSAmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/osa/osascan.py delete mode 100644 project/jni/python/src/Mac/Modules/osa/osasupport.py delete mode 100644 project/jni/python/src/Mac/Modules/osa/setup.py delete mode 100644 project/jni/python/src/Mac/Modules/qd/_Qdmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/qd/qdedit.py delete mode 100644 project/jni/python/src/Mac/Modules/qd/qdscan.py delete mode 100644 project/jni/python/src/Mac/Modules/qd/qdsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/qdoffs/_Qdoffsmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/qdoffs/qdoffsscan.py delete mode 100644 project/jni/python/src/Mac/Modules/qdoffs/qdoffssupport.py delete mode 100644 project/jni/python/src/Mac/Modules/qt/_Qtmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/qt/qtscan.py delete mode 100644 project/jni/python/src/Mac/Modules/qt/qtsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/qt/setup.py delete mode 100644 project/jni/python/src/Mac/Modules/res/_Resmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/res/resedit.py delete mode 100644 project/jni/python/src/Mac/Modules/res/resscan.py delete mode 100644 project/jni/python/src/Mac/Modules/res/ressupport.py delete mode 100644 project/jni/python/src/Mac/Modules/scrap/_Scrapmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/scrap/scrapscan.py delete mode 100644 project/jni/python/src/Mac/Modules/scrap/scrapsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/snd/_Sndihooks.c delete mode 100644 project/jni/python/src/Mac/Modules/snd/_Sndmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/snd/sndscan.py delete mode 100644 project/jni/python/src/Mac/Modules/snd/sndsupport.py delete mode 100644 project/jni/python/src/Mac/Modules/te/_TEmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/te/tescan.py delete mode 100644 project/jni/python/src/Mac/Modules/te/tesupport.py delete mode 100644 project/jni/python/src/Mac/Modules/win/_Winmodule.c delete mode 100644 project/jni/python/src/Mac/Modules/win/winedit.py delete mode 100644 project/jni/python/src/Mac/Modules/win/winscan.py delete mode 100644 project/jni/python/src/Mac/Modules/win/winsupport.py delete mode 100644 project/jni/python/src/Mac/PythonLauncher/English.lproj/Credits.rtf delete mode 100644 project/jni/python/src/Mac/PythonLauncher/English.lproj/MainMenu.nib/classes.nib delete mode 100644 project/jni/python/src/Mac/PythonLauncher/English.lproj/MainMenu.nib/info.nib delete mode 100644 project/jni/python/src/Mac/PythonLauncher/English.lproj/MainMenu.nib/objects.nib delete mode 100644 project/jni/python/src/Mac/PythonLauncher/English.lproj/MyDocument.nib/classes.nib delete mode 100644 project/jni/python/src/Mac/PythonLauncher/English.lproj/MyDocument.nib/info.nib delete mode 100644 project/jni/python/src/Mac/PythonLauncher/English.lproj/MyDocument.nib/objects.nib delete mode 100644 project/jni/python/src/Mac/PythonLauncher/English.lproj/PreferenceWindow.nib/classes.nib delete mode 100644 project/jni/python/src/Mac/PythonLauncher/English.lproj/PreferenceWindow.nib/info.nib delete mode 100644 project/jni/python/src/Mac/PythonLauncher/English.lproj/PreferenceWindow.nib/objects.nib delete mode 100644 project/jni/python/src/Mac/PythonLauncher/FileSettings.h delete mode 100644 project/jni/python/src/Mac/PythonLauncher/FileSettings.m delete mode 100644 project/jni/python/src/Mac/PythonLauncher/Info.plist.in delete mode 100644 project/jni/python/src/Mac/PythonLauncher/Makefile.in delete mode 100644 project/jni/python/src/Mac/PythonLauncher/MyAppDelegate.h delete mode 100644 project/jni/python/src/Mac/PythonLauncher/MyAppDelegate.m delete mode 100644 project/jni/python/src/Mac/PythonLauncher/MyDocument.h delete mode 100644 project/jni/python/src/Mac/PythonLauncher/MyDocument.m delete mode 100644 project/jni/python/src/Mac/PythonLauncher/PreferencesWindowController.h delete mode 100644 project/jni/python/src/Mac/PythonLauncher/PreferencesWindowController.m delete mode 100644 project/jni/python/src/Mac/PythonLauncher/doscript.h delete mode 100644 project/jni/python/src/Mac/PythonLauncher/doscript.m delete mode 100644 project/jni/python/src/Mac/PythonLauncher/factorySettings.plist delete mode 100644 project/jni/python/src/Mac/PythonLauncher/main.m delete mode 100644 project/jni/python/src/Mac/README delete mode 100644 project/jni/python/src/Mac/Resources/app/Info.plist.in delete mode 100644 project/jni/python/src/Mac/Resources/app/PkgInfo delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/PackageManager.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/community.html delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/doc/index.html delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/finder.html delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/gui.html delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/IDE.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/entering_in_new_window.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/hello_world.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/index.html delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/loading_ide.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/making_new_window.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/new_ide_window.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/new_window_made.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/output_window.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/saving_edited_file.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/simple_commands.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/syntax_error.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/index.html delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/intro.html delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/packman.html delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/python.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/pythonsmall.gif delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/scripting.html delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/shell.html delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/PythonApplet.icns delete mode 100644 project/jni/python/src/Mac/Resources/app/Resources/PythonInterpreter.icns delete mode 100644 project/jni/python/src/Mac/Resources/framework/Info.plist.in delete mode 100644 project/jni/python/src/Mac/Resources/iconsrc/IDE.psd delete mode 100644 project/jni/python/src/Mac/Resources/iconsrc/PackageManager.psd delete mode 100644 project/jni/python/src/Mac/Resources/iconsrc/PythonApplet.psd delete mode 100644 project/jni/python/src/Mac/Resources/iconsrc/PythonCompiled.psd delete mode 100644 project/jni/python/src/Mac/Resources/iconsrc/PythonIcon.psd delete mode 100644 project/jni/python/src/Mac/Resources/iconsrc/PythonSource.psd delete mode 100644 project/jni/python/src/Mac/Resources/iconsrc/PythonWSource.psd delete mode 100644 project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Help_Indexing_Tool_Suite.py delete mode 100644 project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Miscellaneous_Standards.py delete mode 100644 project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Required_Suite.py delete mode 100644 project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Standard_Suite.py delete mode 100644 project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/__init__.py delete mode 100644 project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/odds_and_ends.py delete mode 100644 project/jni/python/src/Mac/Tools/Doc/README delete mode 100644 project/jni/python/src/Mac/Tools/Doc/setup.py delete mode 100644 project/jni/python/src/Mac/Tools/fixapplepython23.py delete mode 100644 project/jni/python/src/Mac/Tools/pythonw.c delete mode 100644 project/jni/python/src/Mac/scripts/BuildApplet.icns delete mode 100644 project/jni/python/src/Mac/scripts/BuildApplet.plist delete mode 100644 project/jni/python/src/Mac/scripts/BuildApplet.py delete mode 100644 project/jni/python/src/Mac/scripts/BuildApplet.rsrc delete mode 100644 project/jni/python/src/Mac/scripts/bgenall.py delete mode 100644 project/jni/python/src/Mac/scripts/buildpkg.py delete mode 100644 project/jni/python/src/Mac/scripts/cachersrc.py delete mode 100644 project/jni/python/src/Mac/scripts/errors.txt delete mode 100644 project/jni/python/src/Mac/scripts/genallsuites.py delete mode 100644 project/jni/python/src/Mac/scripts/mkestrres-errno.h delete mode 100644 project/jni/python/src/Mac/scripts/mkestrres-macerrors.h delete mode 100644 project/jni/python/src/Mac/scripts/mkestrres.py delete mode 100644 project/jni/python/src/Mac/scripts/zappycfiles.py delete mode 100644 project/jni/python/src/Misc/ACKS delete mode 100644 project/jni/python/src/Misc/AIX-NOTES delete mode 100644 project/jni/python/src/Misc/BeOS-NOTES delete mode 100644 project/jni/python/src/Misc/BeOS-setup.py delete mode 100644 project/jni/python/src/Misc/HISTORY delete mode 100644 project/jni/python/src/Misc/NEWS delete mode 100644 project/jni/python/src/Misc/NEWS.help delete mode 100644 project/jni/python/src/Misc/PURIFY.README delete mode 100644 project/jni/python/src/Misc/Porting delete mode 100644 project/jni/python/src/Misc/README delete mode 100644 project/jni/python/src/Misc/README.OpenBSD delete mode 100644 project/jni/python/src/Misc/README.coverity delete mode 100644 project/jni/python/src/Misc/README.klocwork delete mode 100644 project/jni/python/src/Misc/README.valgrind delete mode 100644 project/jni/python/src/Misc/RFD delete mode 100644 project/jni/python/src/Misc/RPM/README delete mode 100644 project/jni/python/src/Misc/RPM/python-2.6.spec delete mode 100644 project/jni/python/src/Misc/SpecialBuilds.txt delete mode 100644 project/jni/python/src/Misc/TextMate/Python-Dev.tmbundle/Commands/2 to 3 - Module Deletion.tmCommand delete mode 100644 project/jni/python/src/Misc/TextMate/Python-Dev.tmbundle/Commands/Build Docs.tmCommand delete mode 100644 project/jni/python/src/Misc/TextMate/Python-Dev.tmbundle/Commands/Build.tmCommand delete mode 100644 project/jni/python/src/Misc/TextMate/Python-Dev.tmbundle/Commands/Go to Issue.tmCommand delete mode 100644 project/jni/python/src/Misc/TextMate/Python-Dev.tmbundle/Commands/Open Docs.tmCommand delete mode 100644 project/jni/python/src/Misc/TextMate/Python-Dev.tmbundle/Commands/Open PEP.tmCommand delete mode 100644 project/jni/python/src/Misc/TextMate/Python-Dev.tmbundle/Snippets/2 to 3 - Module Deletion (docs).tmSnippet delete mode 100644 project/jni/python/src/Misc/TextMate/Python-Dev.tmbundle/info.plist delete mode 100644 project/jni/python/src/Misc/Vim/python.vim delete mode 100644 project/jni/python/src/Misc/Vim/syntax_test.py delete mode 100644 project/jni/python/src/Misc/Vim/vim_syntax.py delete mode 100644 project/jni/python/src/Misc/Vim/vimrc delete mode 100644 project/jni/python/src/Misc/build.sh delete mode 100644 project/jni/python/src/Misc/cheatsheet delete mode 100644 project/jni/python/src/Misc/developers.txt delete mode 100644 project/jni/python/src/Misc/find_recursionlimit.py delete mode 100644 project/jni/python/src/Misc/gdbinit delete mode 100644 project/jni/python/src/Misc/indent.pro delete mode 100644 project/jni/python/src/Misc/pymemcompat.h delete mode 100644 project/jni/python/src/Misc/python-config.in delete mode 100644 project/jni/python/src/Misc/python-mode.el delete mode 100644 project/jni/python/src/Misc/python.man delete mode 100644 project/jni/python/src/Misc/setuid-prog.c delete mode 100644 project/jni/python/src/Misc/valgrind-python.supp delete mode 100644 project/jni/python/src/Misc/vgrindefs diff --git a/project/jni/python/src/Mac/BuildScript/README.txt b/project/jni/python/src/Mac/BuildScript/README.txt deleted file mode 100644 index 0f1aeb5d2..000000000 --- a/project/jni/python/src/Mac/BuildScript/README.txt +++ /dev/null @@ -1,78 +0,0 @@ -Building a MacPython distribution -================================= - -The ``build-install.py`` script creates MacPython distributions, including -sleepycat db4, sqlite3 and readline support. It builds a complete -framework-based Python out-of-tree, installs it in a funny place with -$DESTROOT, massages that installation to remove .pyc files and such, creates -an Installer package from the installation plus other files in ``resources`` -and ``scripts`` and placed that on a ``.dmg`` disk image. - -Prerequisites -------------- - -* A MacOS X 10.4 (or later) - -* XCode 2.2 (or later), with the universal SDK - -* No Fink (in ``/sw``) or DarwinPorts (in ``/opt/local``), those could - interfere with the build. - -* The documentation for the release must be available on python.org - because it is included in the installer. - - -The Recipe ----------- - -Here are the steps you need to follow to build a MacPython installer: - -* Run ``./build-installer.py``. Optionally you can pass a number of arguments - to specify locations of various files. Please see the top of - ``build-installer.py`` for its usage. - - Running this script takes some time, I will not only build Python itself - but also some 3th-party libraries that are needed for extensions. - -* When done the script will tell you where the DMG image is (by default - somewhere in ``/tmp/_py``). - -Building a 4-way universal installer -.................................... - -It is also possible to build a 4-way universal installer that runs on -OSX Leopard or later:: - - $ ./build-installer.py --dep-target=10.5 --universal-archs=all --sdk=/ - -This requires that the deployment target is 10.5 (or later), and hence -also that your building on at least OSX 10.5. - -Testing -------- - -The resulting binaries should work on MacOSX 10.3.9 or later. I usually run -the installer on a 10.3.9, a 10.4.x PPC and a 10.4.x Intel system and then -run the testsuite to make sure. - - -Announcements -------------- - -(This is mostly of historic interest) - -When all is done, announcements can be posted to at least the following -places: -- pythonmac-sig@python.org -- python-dev@python.org -- python-announce@python.org -- archivist@info-mac.org -- adcnews@apple.com -- news@macnn.com -- http://www.macupdate.com -- http://guide.apple.com/usindex.lasso -- http://www.apple.com/downloads/macosx/submit -- http://www.versiontracker.com/ (userid Jack.Jansen@oratrix.com) -- http://www.macshareware.net (userid jackjansen) - -Also, check out Stephan Deibels http://pythonology.org/market contact list diff --git a/project/jni/python/src/Mac/BuildScript/build-installer.py b/project/jni/python/src/Mac/BuildScript/build-installer.py deleted file mode 100644 index 8d85434d1..000000000 --- a/project/jni/python/src/Mac/BuildScript/build-installer.py +++ /dev/null @@ -1,1064 +0,0 @@ -#!/usr/bin/python -""" -This script is used to build the "official unofficial" universal build on -Mac OS X. It requires Mac OS X 10.4, Xcode 2.2 and the 10.4u SDK to do its -work. 64-bit or four-way universal builds require at least OS X 10.5 and -the 10.5 SDK. - -Please ensure that this script keeps working with Python 2.3, to avoid -bootstrap issues (/usr/bin/python is Python 2.3 on OSX 10.4) - -Usage: see USAGE variable in the script. -""" -import platform, os, sys, getopt, textwrap, shutil, urllib2, stat, time, pwd -import grp - -INCLUDE_TIMESTAMP = 1 -VERBOSE = 1 - -from plistlib import Plist - -import MacOS - -try: - from plistlib import writePlist -except ImportError: - # We're run using python2.3 - def writePlist(plist, path): - plist.write(path) - -def shellQuote(value): - """ - Return the string value in a form that can safely be inserted into - a shell command. - """ - return "'%s'"%(value.replace("'", "'\"'\"'")) - -def grepValue(fn, variable): - variable = variable + '=' - for ln in open(fn, 'r'): - if ln.startswith(variable): - value = ln[len(variable):].strip() - return value[1:-1] - -def getVersion(): - return grepValue(os.path.join(SRCDIR, 'configure'), 'PACKAGE_VERSION') - -def getFullVersion(): - fn = os.path.join(SRCDIR, 'Include', 'patchlevel.h') - for ln in open(fn): - if 'PY_VERSION' in ln: - return ln.split()[-1][1:-1] - - raise RuntimeError, "Cannot find full version??" - -# The directory we'll use to create the build (will be erased and recreated) -WORKDIR = "/tmp/_py" - -# The directory we'll use to store third-party sources. Set this to something -# else if you don't want to re-fetch required libraries every time. -DEPSRC = os.path.join(WORKDIR, 'third-party') -DEPSRC = os.path.expanduser('~/Universal/other-sources') - -# Location of the preferred SDK -SDKPATH = "/Developer/SDKs/MacOSX10.4u.sdk" -#SDKPATH = "/" - -universal_opts_map = { '32-bit': ('i386', 'ppc',), - '64-bit': ('x86_64', 'ppc64',), - 'all': ('i386', 'ppc', 'x86_64', 'ppc64',) } - -UNIVERSALOPTS = tuple(universal_opts_map.keys()) - -UNIVERSALARCHS = '32-bit' - -ARCHLIST = universal_opts_map[UNIVERSALARCHS] - -# Source directory (asume we're in Mac/BuildScript) -SRCDIR = os.path.dirname( - os.path.dirname( - os.path.dirname( - os.path.abspath(__file__ - )))) - -# $MACOSX_DEPLOYMENT_TARGET -> minimum OS X level -DEPTARGET = '10.3' - -USAGE = textwrap.dedent("""\ - Usage: build_python [options] - - Options: - -? or -h: Show this message - -b DIR - --build-dir=DIR: Create build here (default: %(WORKDIR)r) - --third-party=DIR: Store third-party sources here (default: %(DEPSRC)r) - --sdk-path=DIR: Location of the SDK (default: %(SDKPATH)r) - --src-dir=DIR: Location of the Python sources (default: %(SRCDIR)r) - --dep-target=10.n OS X deployment target (default: %(DEPTARGET)r) - --universal-archs=x universal architectures (options: %(UNIVERSALOPTS)r, default: %(UNIVERSALARCHS)r) -""")% globals() - - -# Instructions for building libraries that are necessary for building a -# batteries included python. -# [The recipes are defined here for convenience but instantiated later after -# command line options have been processed.] -def library_recipes(): - return [ - dict( - name="Bzip2 1.0.4", - url="http://www.bzip.org/1.0.4/bzip2-1.0.4.tar.gz", - checksum='fc310b254f6ba5fbb5da018f04533688', - configure=None, - install='make install PREFIX=%s/usr/local/ CFLAGS="-arch %s -isysroot %s"'%( - shellQuote(os.path.join(WORKDIR, 'libraries')), - ' -arch '.join(ARCHLIST), - SDKPATH, - ), - ), - dict( - name="ZLib 1.2.3", - url="http://www.gzip.org/zlib/zlib-1.2.3.tar.gz", - checksum='debc62758716a169df9f62e6ab2bc634', - configure=None, - install='make install prefix=%s/usr/local/ CFLAGS="-arch %s -isysroot %s"'%( - shellQuote(os.path.join(WORKDIR, 'libraries')), - ' -arch '.join(ARCHLIST), - SDKPATH, - ), - ), - dict( - # Note that GNU readline is GPL'd software - name="GNU Readline 5.1.4", - url="http://ftp.gnu.org/pub/gnu/readline/readline-5.1.tar.gz" , - checksum='7ee5a692db88b30ca48927a13fd60e46', - patchlevel='0', - patches=[ - # The readline maintainers don't do actual micro releases, but - # just ship a set of patches. - 'http://ftp.gnu.org/pub/gnu/readline/readline-5.1-patches/readline51-001', - 'http://ftp.gnu.org/pub/gnu/readline/readline-5.1-patches/readline51-002', - 'http://ftp.gnu.org/pub/gnu/readline/readline-5.1-patches/readline51-003', - 'http://ftp.gnu.org/pub/gnu/readline/readline-5.1-patches/readline51-004', - ] - ), - - dict( - name="SQLite 3.6.11", - url="http://www.sqlite.org/sqlite-3.6.11.tar.gz", - checksum='7ebb099696ab76cc6ff65dd496d17858', - configure_pre=[ - '--enable-threadsafe', - '--enable-tempstore', - '--enable-shared=no', - '--enable-static=yes', - '--disable-tcl', - ] - ), - - dict( - name="NCurses 5.5", - url="http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.5.tar.gz", - checksum='e73c1ac10b4bfc46db43b2ddfd6244ef', - configure_pre=[ - "--without-cxx", - "--without-ada", - "--without-progs", - "--without-curses-h", - "--enable-shared", - "--with-shared", - "--datadir=/usr/share", - "--sysconfdir=/etc", - "--sharedstatedir=/usr/com", - "--with-terminfo-dirs=/usr/share/terminfo", - "--with-default-terminfo-dir=/usr/share/terminfo", - "--libdir=/Library/Frameworks/Python.framework/Versions/%s/lib"%(getVersion(),), - "--enable-termcap", - ], - patches=[ - "ncurses-5.5.patch", - ], - useLDFlags=False, - install='make && make install DESTDIR=%s && cd %s/usr/local/lib && ln -fs ../../../Library/Frameworks/Python.framework/Versions/%s/lib/lib* .'%( - shellQuote(os.path.join(WORKDIR, 'libraries')), - shellQuote(os.path.join(WORKDIR, 'libraries')), - getVersion(), - ), - ), - dict( - name="Sleepycat DB 4.7.25", - url="http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz", - checksum='ec2b87e833779681a0c3a814aa71359e', - buildDir="build_unix", - configure="../dist/configure", - configure_pre=[ - '--includedir=/usr/local/include/db4', - ] - ), - ] - - -# Instructions for building packages inside the .mpkg. -PKG_RECIPES = [ - dict( - name="PythonFramework", - long_name="Python Framework", - source="/Library/Frameworks/Python.framework", - readme="""\ - This package installs Python.framework, that is the python - interpreter and the standard library. This also includes Python - wrappers for lots of Mac OS X API's. - """, - postflight="scripts/postflight.framework", - ), - dict( - name="PythonApplications", - long_name="GUI Applications", - source="/Applications/Python %(VER)s", - readme="""\ - This package installs IDLE (an interactive Python IDE), - Python Launcher and Build Applet (create application bundles - from python scripts). - - It also installs a number of examples and demos. - """, - required=False, - ), - dict( - name="PythonUnixTools", - long_name="UNIX command-line tools", - source="/usr/local/bin", - readme="""\ - This package installs the unix tools in /usr/local/bin for - compatibility with older releases of Python. This package - is not necessary to use Python. - """, - required=False, - ), - dict( - name="PythonDocumentation", - long_name="Python Documentation", - topdir="/Library/Frameworks/Python.framework/Versions/%(VER)s/Resources/English.lproj/Documentation", - source="/pydocs", - readme="""\ - This package installs the python documentation at a location - that is useable for pydoc and IDLE. If you have installed Xcode - it will also install a link to the documentation in - /Developer/Documentation/Python - """, - postflight="scripts/postflight.documentation", - required=False, - ), - dict( - name="PythonProfileChanges", - long_name="Shell profile updater", - readme="""\ - This packages updates your shell profile to make sure that - the Python tools are found by your shell in preference of - the system provided Python tools. - - If you don't install this package you'll have to add - "/Library/Frameworks/Python.framework/Versions/%(VER)s/bin" - to your PATH by hand. - """, - postflight="scripts/postflight.patch-profile", - topdir="/Library/Frameworks/Python.framework", - source="/empty-dir", - required=False, - ), - dict( - name="PythonSystemFixes", - long_name="Fix system Python", - readme="""\ - This package updates the system python installation on - Mac OS X 10.3 to ensure that you can build new python extensions - using that copy of python after installing this version. - """, - postflight="../Tools/fixapplepython23.py", - topdir="/Library/Frameworks/Python.framework", - source="/empty-dir", - required=False, - ) -] - -def fatal(msg): - """ - A fatal error, bail out. - """ - sys.stderr.write('FATAL: ') - sys.stderr.write(msg) - sys.stderr.write('\n') - sys.exit(1) - -def fileContents(fn): - """ - Return the contents of the named file - """ - return open(fn, 'rb').read() - -def runCommand(commandline): - """ - Run a command and raise RuntimeError if it fails. Output is surpressed - unless the command fails. - """ - fd = os.popen(commandline, 'r') - data = fd.read() - xit = fd.close() - if xit is not None: - sys.stdout.write(data) - raise RuntimeError, "command failed: %s"%(commandline,) - - if VERBOSE: - sys.stdout.write(data); sys.stdout.flush() - -def captureCommand(commandline): - fd = os.popen(commandline, 'r') - data = fd.read() - xit = fd.close() - if xit is not None: - sys.stdout.write(data) - raise RuntimeError, "command failed: %s"%(commandline,) - - return data - -def checkEnvironment(): - """ - Check that we're running on a supported system. - """ - - if platform.system() != 'Darwin': - fatal("This script should be run on a Mac OS X 10.4 system") - - if platform.release() <= '8.': - fatal("This script should be run on a Mac OS X 10.4 system") - - if not os.path.exists(SDKPATH): - fatal("Please install the latest version of Xcode and the %s SDK"%( - os.path.basename(SDKPATH[:-4]))) - - - -def parseOptions(args=None): - """ - Parse arguments and update global settings. - """ - global WORKDIR, DEPSRC, SDKPATH, SRCDIR, DEPTARGET - global UNIVERSALOPTS, UNIVERSALARCHS, ARCHLIST - - if args is None: - args = sys.argv[1:] - - try: - options, args = getopt.getopt(args, '?hb', - [ 'build-dir=', 'third-party=', 'sdk-path=' , 'src-dir=', - 'dep-target=', 'universal-archs=', 'help' ]) - except getopt.error, msg: - print msg - sys.exit(1) - - if args: - print "Additional arguments" - sys.exit(1) - - for k, v in options: - if k in ('-h', '-?', '--help'): - print USAGE - sys.exit(0) - - elif k in ('-d', '--build-dir'): - WORKDIR=v - - elif k in ('--third-party',): - DEPSRC=v - - elif k in ('--sdk-path',): - SDKPATH=v - - elif k in ('--src-dir',): - SRCDIR=v - - elif k in ('--dep-target', ): - DEPTARGET=v - - elif k in ('--universal-archs', ): - if v in UNIVERSALOPTS: - UNIVERSALARCHS = v - ARCHLIST = universal_opts_map[UNIVERSALARCHS] - else: - raise NotImplementedError, v - - else: - raise NotImplementedError, k - - SRCDIR=os.path.abspath(SRCDIR) - WORKDIR=os.path.abspath(WORKDIR) - SDKPATH=os.path.abspath(SDKPATH) - DEPSRC=os.path.abspath(DEPSRC) - - print "Settings:" - print " * Source directory:", SRCDIR - print " * Build directory: ", WORKDIR - print " * SDK location: ", SDKPATH - print " * Third-party source:", DEPSRC - print " * Deployment target:", DEPTARGET - print " * Universal architectures:", ARCHLIST - print "" - - - - -def extractArchive(builddir, archiveName): - """ - Extract a source archive into 'builddir'. Returns the path of the - extracted archive. - - XXX: This function assumes that archives contain a toplevel directory - that is has the same name as the basename of the archive. This is - save enough for anything we use. - """ - curdir = os.getcwd() - try: - os.chdir(builddir) - if archiveName.endswith('.tar.gz'): - retval = os.path.basename(archiveName[:-7]) - if os.path.exists(retval): - shutil.rmtree(retval) - fp = os.popen("tar zxf %s 2>&1"%(shellQuote(archiveName),), 'r') - - elif archiveName.endswith('.tar.bz2'): - retval = os.path.basename(archiveName[:-8]) - if os.path.exists(retval): - shutil.rmtree(retval) - fp = os.popen("tar jxf %s 2>&1"%(shellQuote(archiveName),), 'r') - - elif archiveName.endswith('.tar'): - retval = os.path.basename(archiveName[:-4]) - if os.path.exists(retval): - shutil.rmtree(retval) - fp = os.popen("tar xf %s 2>&1"%(shellQuote(archiveName),), 'r') - - elif archiveName.endswith('.zip'): - retval = os.path.basename(archiveName[:-4]) - if os.path.exists(retval): - shutil.rmtree(retval) - fp = os.popen("unzip %s 2>&1"%(shellQuote(archiveName),), 'r') - - data = fp.read() - xit = fp.close() - if xit is not None: - sys.stdout.write(data) - raise RuntimeError, "Cannot extract %s"%(archiveName,) - - return os.path.join(builddir, retval) - - finally: - os.chdir(curdir) - -KNOWNSIZES = { - "http://ftp.gnu.org/pub/gnu/readline/readline-5.1.tar.gz": 7952742, - "http://downloads.sleepycat.com/db-4.4.20.tar.gz": 2030276, -} - -def downloadURL(url, fname): - """ - Download the contents of the url into the file. - """ - try: - size = os.path.getsize(fname) - except OSError: - pass - else: - if KNOWNSIZES.get(url) == size: - print "Using existing file for", url - return - fpIn = urllib2.urlopen(url) - fpOut = open(fname, 'wb') - block = fpIn.read(10240) - try: - while block: - fpOut.write(block) - block = fpIn.read(10240) - fpIn.close() - fpOut.close() - except: - try: - os.unlink(fname) - except: - pass - -def buildRecipe(recipe, basedir, archList): - """ - Build software using a recipe. This function does the - 'configure;make;make install' dance for C software, with a possibility - to customize this process, basically a poor-mans DarwinPorts. - """ - curdir = os.getcwd() - - name = recipe['name'] - url = recipe['url'] - configure = recipe.get('configure', './configure') - install = recipe.get('install', 'make && make install DESTDIR=%s'%( - shellQuote(basedir))) - - archiveName = os.path.split(url)[-1] - sourceArchive = os.path.join(DEPSRC, archiveName) - - if not os.path.exists(DEPSRC): - os.mkdir(DEPSRC) - - - if os.path.exists(sourceArchive): - print "Using local copy of %s"%(name,) - - else: - print "Did not find local copy of %s"%(name,) - print "Downloading %s"%(name,) - downloadURL(url, sourceArchive) - print "Archive for %s stored as %s"%(name, sourceArchive) - - print "Extracting archive for %s"%(name,) - buildDir=os.path.join(WORKDIR, '_bld') - if not os.path.exists(buildDir): - os.mkdir(buildDir) - - workDir = extractArchive(buildDir, sourceArchive) - os.chdir(workDir) - if 'buildDir' in recipe: - os.chdir(recipe['buildDir']) - - - for fn in recipe.get('patches', ()): - if fn.startswith('http://'): - # Download the patch before applying it. - path = os.path.join(DEPSRC, os.path.basename(fn)) - downloadURL(fn, path) - fn = path - - fn = os.path.join(curdir, fn) - runCommand('patch -p%s < %s'%(recipe.get('patchlevel', 1), - shellQuote(fn),)) - - if configure is not None: - configure_args = [ - "--prefix=/usr/local", - "--enable-static", - "--disable-shared", - #"CPP=gcc -arch %s -E"%(' -arch '.join(archList,),), - ] - - if 'configure_pre' in recipe: - args = list(recipe['configure_pre']) - if '--disable-static' in args: - configure_args.remove('--enable-static') - if '--enable-shared' in args: - configure_args.remove('--disable-shared') - configure_args.extend(args) - - if recipe.get('useLDFlags', 1): - configure_args.extend([ - "CFLAGS=-arch %s -isysroot %s -I%s/usr/local/include"%( - ' -arch '.join(archList), - shellQuote(SDKPATH)[1:-1], - shellQuote(basedir)[1:-1],), - "LDFLAGS=-syslibroot,%s -L%s/usr/local/lib -arch %s"%( - shellQuote(SDKPATH)[1:-1], - shellQuote(basedir)[1:-1], - ' -arch '.join(archList)), - ]) - else: - configure_args.extend([ - "CFLAGS=-arch %s -isysroot %s -I%s/usr/local/include"%( - ' -arch '.join(archList), - shellQuote(SDKPATH)[1:-1], - shellQuote(basedir)[1:-1],), - ]) - - if 'configure_post' in recipe: - configure_args = configure_args = list(recipe['configure_post']) - - configure_args.insert(0, configure) - configure_args = [ shellQuote(a) for a in configure_args ] - - print "Running configure for %s"%(name,) - runCommand(' '.join(configure_args) + ' 2>&1') - - print "Running install for %s"%(name,) - runCommand('{ ' + install + ' ;} 2>&1') - - print "Done %s"%(name,) - print "" - - os.chdir(curdir) - -def buildLibraries(): - """ - Build our dependencies into $WORKDIR/libraries/usr/local - """ - print "" - print "Building required libraries" - print "" - universal = os.path.join(WORKDIR, 'libraries') - os.mkdir(universal) - os.makedirs(os.path.join(universal, 'usr', 'local', 'lib')) - os.makedirs(os.path.join(universal, 'usr', 'local', 'include')) - - for recipe in library_recipes(): - buildRecipe(recipe, universal, ARCHLIST) - - - -def buildPythonDocs(): - # This stores the documentation as Resources/English.lproj/Documentation - # inside the framwork. pydoc and IDLE will pick it up there. - print "Install python documentation" - rootDir = os.path.join(WORKDIR, '_root') - buildDir = os.path.join('../../Doc') - docdir = os.path.join(rootDir, 'pydocs') - curDir = os.getcwd() - os.chdir(buildDir) - runCommand('make update') - runCommand('make html') - os.chdir(curDir) - if not os.path.exists(docdir): - os.mkdir(docdir) - os.rename(os.path.join(buildDir, 'build', 'html'), - os.path.join(docdir, 'python-docs-html')) - - -def buildPython(): - print "Building a universal python for %s architectures" % UNIVERSALARCHS - - buildDir = os.path.join(WORKDIR, '_bld', 'python') - rootDir = os.path.join(WORKDIR, '_root') - - if os.path.exists(buildDir): - shutil.rmtree(buildDir) - if os.path.exists(rootDir): - shutil.rmtree(rootDir) - os.mkdir(buildDir) - os.mkdir(rootDir) - os.mkdir(os.path.join(rootDir, 'empty-dir')) - curdir = os.getcwd() - os.chdir(buildDir) - - # Not sure if this is still needed, the original build script - # claims that parts of the install assume python.exe exists. - os.symlink('python', os.path.join(buildDir, 'python.exe')) - - # Extract the version from the configure file, needed to calculate - # several paths. - version = getVersion() - - # Since the extra libs are not in their installed framework location - # during the build, augment the library path so that the interpreter - # will find them during its extension import sanity checks. - os.environ['DYLD_LIBRARY_PATH'] = os.path.join(WORKDIR, - 'libraries', 'usr', 'local', 'lib') - print "Running configure..." - runCommand("%s -C --enable-framework --enable-universalsdk=%s " - "--with-universal-archs=%s " - "LDFLAGS='-g -L%s/libraries/usr/local/lib' " - "OPT='-g -O3 -I%s/libraries/usr/local/include' 2>&1"%( - shellQuote(os.path.join(SRCDIR, 'configure')), shellQuote(SDKPATH), - UNIVERSALARCHS, - shellQuote(WORKDIR)[1:-1], - shellQuote(WORKDIR)[1:-1])) - - print "Running make" - runCommand("make") - - print "Running make frameworkinstall" - runCommand("make frameworkinstall DESTDIR=%s"%( - shellQuote(rootDir))) - - print "Running make frameworkinstallextras" - runCommand("make frameworkinstallextras DESTDIR=%s"%( - shellQuote(rootDir))) - - del os.environ['DYLD_LIBRARY_PATH'] - print "Copying required shared libraries" - if os.path.exists(os.path.join(WORKDIR, 'libraries', 'Library')): - runCommand("mv %s/* %s"%( - shellQuote(os.path.join( - WORKDIR, 'libraries', 'Library', 'Frameworks', - 'Python.framework', 'Versions', getVersion(), - 'lib')), - shellQuote(os.path.join(WORKDIR, '_root', 'Library', 'Frameworks', - 'Python.framework', 'Versions', getVersion(), - 'lib')))) - - print "Fix file modes" - frmDir = os.path.join(rootDir, 'Library', 'Frameworks', 'Python.framework') - gid = grp.getgrnam('admin').gr_gid - - for dirpath, dirnames, filenames in os.walk(frmDir): - for dn in dirnames: - os.chmod(os.path.join(dirpath, dn), 0775) - os.chown(os.path.join(dirpath, dn), -1, gid) - - - for fn in filenames: - if os.path.islink(fn): - continue - - # "chmod g+w $fn" - p = os.path.join(dirpath, fn) - st = os.stat(p) - os.chmod(p, stat.S_IMODE(st.st_mode) | stat.S_IWGRP) - os.chown(p, -1, gid) - - # We added some directories to the search path during the configure - # phase. Remove those because those directories won't be there on - # the end-users system. - path =os.path.join(rootDir, 'Library', 'Frameworks', 'Python.framework', - 'Versions', version, 'lib', 'python%s'%(version,), - 'config', 'Makefile') - fp = open(path, 'r') - data = fp.read() - fp.close() - - data = data.replace('-L%s/libraries/usr/local/lib'%(WORKDIR,), '') - data = data.replace('-I%s/libraries/usr/local/include'%(WORKDIR,), '') - fp = open(path, 'w') - fp.write(data) - fp.close() - - # Add symlinks in /usr/local/bin, using relative links - usr_local_bin = os.path.join(rootDir, 'usr', 'local', 'bin') - to_framework = os.path.join('..', '..', '..', 'Library', 'Frameworks', - 'Python.framework', 'Versions', version, 'bin') - if os.path.exists(usr_local_bin): - shutil.rmtree(usr_local_bin) - os.makedirs(usr_local_bin) - for fn in os.listdir( - os.path.join(frmDir, 'Versions', version, 'bin')): - os.symlink(os.path.join(to_framework, fn), - os.path.join(usr_local_bin, fn)) - - os.chdir(curdir) - - - -def patchFile(inPath, outPath): - data = fileContents(inPath) - data = data.replace('$FULL_VERSION', getFullVersion()) - data = data.replace('$VERSION', getVersion()) - data = data.replace('$MACOSX_DEPLOYMENT_TARGET', ''.join((DEPTARGET, ' or later'))) - data = data.replace('$ARCHITECTURES', "i386, ppc") - data = data.replace('$INSTALL_SIZE', installSize()) - - # This one is not handy as a template variable - data = data.replace('$PYTHONFRAMEWORKINSTALLDIR', '/Library/Frameworks/Python.framework') - fp = open(outPath, 'wb') - fp.write(data) - fp.close() - -def patchScript(inPath, outPath): - data = fileContents(inPath) - data = data.replace('@PYVER@', getVersion()) - fp = open(outPath, 'wb') - fp.write(data) - fp.close() - os.chmod(outPath, 0755) - - - -def packageFromRecipe(targetDir, recipe): - curdir = os.getcwd() - try: - # The major version (such as 2.5) is included in the package name - # because having two version of python installed at the same time is - # common. - pkgname = '%s-%s'%(recipe['name'], getVersion()) - srcdir = recipe.get('source') - pkgroot = recipe.get('topdir', srcdir) - postflight = recipe.get('postflight') - readme = textwrap.dedent(recipe['readme']) - isRequired = recipe.get('required', True) - - print "- building package %s"%(pkgname,) - - # Substitute some variables - textvars = dict( - VER=getVersion(), - FULLVER=getFullVersion(), - ) - readme = readme % textvars - - if pkgroot is not None: - pkgroot = pkgroot % textvars - else: - pkgroot = '/' - - if srcdir is not None: - srcdir = os.path.join(WORKDIR, '_root', srcdir[1:]) - srcdir = srcdir % textvars - - if postflight is not None: - postflight = os.path.abspath(postflight) - - packageContents = os.path.join(targetDir, pkgname + '.pkg', 'Contents') - os.makedirs(packageContents) - - if srcdir is not None: - os.chdir(srcdir) - runCommand("pax -wf %s . 2>&1"%(shellQuote(os.path.join(packageContents, 'Archive.pax')),)) - runCommand("gzip -9 %s 2>&1"%(shellQuote(os.path.join(packageContents, 'Archive.pax')),)) - runCommand("mkbom . %s 2>&1"%(shellQuote(os.path.join(packageContents, 'Archive.bom')),)) - - fn = os.path.join(packageContents, 'PkgInfo') - fp = open(fn, 'w') - fp.write('pmkrpkg1') - fp.close() - - rsrcDir = os.path.join(packageContents, "Resources") - os.mkdir(rsrcDir) - fp = open(os.path.join(rsrcDir, 'ReadMe.txt'), 'w') - fp.write(readme) - fp.close() - - if postflight is not None: - patchScript(postflight, os.path.join(rsrcDir, 'postflight')) - - vers = getFullVersion() - major, minor = map(int, getVersion().split('.', 2)) - pl = Plist( - CFBundleGetInfoString="Python.%s %s"%(pkgname, vers,), - CFBundleIdentifier='org.python.Python.%s'%(pkgname,), - CFBundleName='Python.%s'%(pkgname,), - CFBundleShortVersionString=vers, - IFMajorVersion=major, - IFMinorVersion=minor, - IFPkgFormatVersion=0.10000000149011612, - IFPkgFlagAllowBackRev=False, - IFPkgFlagAuthorizationAction="RootAuthorization", - IFPkgFlagDefaultLocation=pkgroot, - IFPkgFlagFollowLinks=True, - IFPkgFlagInstallFat=True, - IFPkgFlagIsRequired=isRequired, - IFPkgFlagOverwritePermissions=False, - IFPkgFlagRelocatable=False, - IFPkgFlagRestartAction="NoRestart", - IFPkgFlagRootVolumeOnly=True, - IFPkgFlagUpdateInstalledLangauges=False, - ) - writePlist(pl, os.path.join(packageContents, 'Info.plist')) - - pl = Plist( - IFPkgDescriptionDescription=readme, - IFPkgDescriptionTitle=recipe.get('long_name', "Python.%s"%(pkgname,)), - IFPkgDescriptionVersion=vers, - ) - writePlist(pl, os.path.join(packageContents, 'Resources', 'Description.plist')) - - finally: - os.chdir(curdir) - - -def makeMpkgPlist(path): - - vers = getFullVersion() - major, minor = map(int, getVersion().split('.', 2)) - - pl = Plist( - CFBundleGetInfoString="Python %s"%(vers,), - CFBundleIdentifier='org.python.Python', - CFBundleName='Python', - CFBundleShortVersionString=vers, - IFMajorVersion=major, - IFMinorVersion=minor, - IFPkgFlagComponentDirectory="Contents/Packages", - IFPkgFlagPackageList=[ - dict( - IFPkgFlagPackageLocation='%s-%s.pkg'%(item['name'], getVersion()), - IFPkgFlagPackageSelection='selected' - ) - for item in PKG_RECIPES - ], - IFPkgFormatVersion=0.10000000149011612, - IFPkgFlagBackgroundScaling="proportional", - IFPkgFlagBackgroundAlignment="left", - IFPkgFlagAuthorizationAction="RootAuthorization", - ) - - writePlist(pl, path) - - -def buildInstaller(): - - # Zap all compiled files - for dirpath, _, filenames in os.walk(os.path.join(WORKDIR, '_root')): - for fn in filenames: - if fn.endswith('.pyc') or fn.endswith('.pyo'): - os.unlink(os.path.join(dirpath, fn)) - - outdir = os.path.join(WORKDIR, 'installer') - if os.path.exists(outdir): - shutil.rmtree(outdir) - os.mkdir(outdir) - - pkgroot = os.path.join(outdir, 'Python.mpkg', 'Contents') - pkgcontents = os.path.join(pkgroot, 'Packages') - os.makedirs(pkgcontents) - for recipe in PKG_RECIPES: - packageFromRecipe(pkgcontents, recipe) - - rsrcDir = os.path.join(pkgroot, 'Resources') - - fn = os.path.join(pkgroot, 'PkgInfo') - fp = open(fn, 'w') - fp.write('pmkrpkg1') - fp.close() - - os.mkdir(rsrcDir) - - makeMpkgPlist(os.path.join(pkgroot, 'Info.plist')) - pl = Plist( - IFPkgDescriptionTitle="Python", - IFPkgDescriptionVersion=getVersion(), - ) - - writePlist(pl, os.path.join(pkgroot, 'Resources', 'Description.plist')) - for fn in os.listdir('resources'): - if fn == '.svn': continue - if fn.endswith('.jpg'): - shutil.copy(os.path.join('resources', fn), os.path.join(rsrcDir, fn)) - else: - patchFile(os.path.join('resources', fn), os.path.join(rsrcDir, fn)) - - shutil.copy("../../LICENSE", os.path.join(rsrcDir, 'License.txt')) - - -def installSize(clear=False, _saved=[]): - if clear: - del _saved[:] - if not _saved: - data = captureCommand("du -ks %s"%( - shellQuote(os.path.join(WORKDIR, '_root')))) - _saved.append("%d"%((0.5 + (int(data.split()[0]) / 1024.0)),)) - return _saved[0] - - -def buildDMG(): - """ - Create DMG containing the rootDir. - """ - outdir = os.path.join(WORKDIR, 'diskimage') - if os.path.exists(outdir): - shutil.rmtree(outdir) - - imagepath = os.path.join(outdir, - 'python-%s-macosx'%(getFullVersion(),)) - if INCLUDE_TIMESTAMP: - imagepath = imagepath + '%04d-%02d-%02d'%(time.localtime()[:3]) - imagepath = imagepath + '.dmg' - - os.mkdir(outdir) - volname='Python %s'%(getFullVersion()) - runCommand("hdiutil create -format UDRW -volname %s -srcfolder %s %s"%( - shellQuote(volname), - shellQuote(os.path.join(WORKDIR, 'installer')), - shellQuote(imagepath + ".tmp.dmg" ))) - - - if not os.path.exists(os.path.join(WORKDIR, "mnt")): - os.mkdir(os.path.join(WORKDIR, "mnt")) - runCommand("hdiutil attach %s -mountroot %s"%( - shellQuote(imagepath + ".tmp.dmg"), shellQuote(os.path.join(WORKDIR, "mnt")))) - - # Custom icon for the DMG, shown when the DMG is mounted. - shutil.copy("../Icons/Disk Image.icns", - os.path.join(WORKDIR, "mnt", volname, ".VolumeIcon.icns")) - runCommand("/Developer/Tools/SetFile -a C %s/"%( - shellQuote(os.path.join(WORKDIR, "mnt", volname)),)) - - runCommand("hdiutil detach %s"%(shellQuote(os.path.join(WORKDIR, "mnt", volname)))) - - setIcon(imagepath + ".tmp.dmg", "../Icons/Disk Image.icns") - runCommand("hdiutil convert %s -format UDZO -o %s"%( - shellQuote(imagepath + ".tmp.dmg"), shellQuote(imagepath))) - setIcon(imagepath, "../Icons/Disk Image.icns") - - os.unlink(imagepath + ".tmp.dmg") - - return imagepath - - -def setIcon(filePath, icnsPath): - """ - Set the custom icon for the specified file or directory. - """ - - toolPath = os.path.join(os.path.dirname(__file__), "seticon.app/Contents/MacOS/seticon") - dirPath = os.path.dirname(__file__) - if not os.path.exists(toolPath) or os.stat(toolPath).st_mtime < os.stat(dirPath + '/seticon.m').st_mtime: - # NOTE: The tool is created inside an .app bundle, otherwise it won't work due - # to connections to the window server. - if not os.path.exists('seticon.app/Contents/MacOS'): - os.makedirs('seticon.app/Contents/MacOS') - runCommand("cc -o %s %s/seticon.m -framework Cocoa"%( - shellQuote(toolPath), shellQuote(dirPath))) - - runCommand("%s %s %s"%(shellQuote(os.path.abspath(toolPath)), shellQuote(icnsPath), - shellQuote(filePath))) - -def main(): - # First parse options and check if we can perform our work - parseOptions() - checkEnvironment() - - os.environ['MACOSX_DEPLOYMENT_TARGET'] = DEPTARGET - - if os.path.exists(WORKDIR): - shutil.rmtree(WORKDIR) - os.mkdir(WORKDIR) - - # Then build third-party libraries such as sleepycat DB4. - buildLibraries() - - # Now build python itself - buildPython() - - # And then build the documentation - # Remove the Deployment Target from the shell - # environment, it's no longer needed and - # an unexpected build target can cause problems - # when Sphinx and its dependencies need to - # be (re-)installed. - del os.environ['MACOSX_DEPLOYMENT_TARGET'] - buildPythonDocs() - - - # Prepare the applications folder - fn = os.path.join(WORKDIR, "_root", "Applications", - "Python %s"%(getVersion(),), "Update Shell Profile.command") - patchScript("scripts/postflight.patch-profile", fn) - - folder = os.path.join(WORKDIR, "_root", "Applications", "Python %s"%( - getVersion(),)) - os.chmod(folder, 0755) - setIcon(folder, "../Icons/Python Folder.icns") - - # Create the installer - buildInstaller() - - # And copy the readme into the directory containing the installer - patchFile('resources/ReadMe.txt', os.path.join(WORKDIR, 'installer', 'ReadMe.txt')) - - # Ditto for the license file. - shutil.copy('../../LICENSE', os.path.join(WORKDIR, 'installer', 'License.txt')) - - fp = open(os.path.join(WORKDIR, 'installer', 'Build.txt'), 'w') - print >> fp, "# BUILD INFO" - print >> fp, "# Date:", time.ctime() - print >> fp, "# By:", pwd.getpwuid(os.getuid()).pw_gecos - fp.close() - - - - # And copy it to a DMG - buildDMG() - - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/BuildScript/ncurses-5.5.patch b/project/jni/python/src/Mac/BuildScript/ncurses-5.5.patch deleted file mode 100644 index 0eab3d366..000000000 --- a/project/jni/python/src/Mac/BuildScript/ncurses-5.5.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff -r -u ncurses-5.5-orig/test/Makefile.in ncurses-5.5/test/Makefile.in ---- ncurses-5.5-orig/test/Makefile.in 2006-03-24 12:47:40.000000000 +0100 -+++ ncurses-5.5/test/Makefile.in 2006-03-24 12:47:50.000000000 +0100 -@@ -75,7 +75,7 @@ - MATH_LIB = @MATH_LIB@ - - LD = @LD@ --LINK = @LINK_TESTS@ $(LIBTOOL_LINK) $(CC) $(CFLAGS) -+LINK = @LINK_TESTS@ $(LIBTOOL_LINK) $(CC) - - usFLAGS = @LD_MODEL@ @LOCAL_LDFLAGS@ @LDFLAGS@ - -diff -ru ncurses-5.5-orig/ncurses/tinfo/read_entry.c ncurses-5.5/ncurses/tinfo/read_entry.c ---- ncurses-5.5-orig/ncurses/tinfo/read_entry.c 2004-01-11 02:57:05.000000000 +0100 -+++ ncurses-5.5/ncurses/tinfo/read_entry.c 2006-03-25 22:49:39.000000000 +0100 -@@ -474,7 +474,7 @@ - } - - /* truncate the terminal name to prevent buffer overflow */ -- (void) sprintf(ttn, "%c/%.*s", *tn, (int) sizeof(ttn) - 3, tn); -+ (void) sprintf(ttn, "%x/%.*s", *tn, (int) sizeof(ttn) - 3, tn); - - /* This is System V behavior, in conjunction with our requirements for - * writing terminfo entries. -diff -ru ncurses-5.5-orig/configure ncurses-5.5/configure ---- ncurses-5.5-orig/configure 2005-09-24 23:50:50.000000000 +0200 -+++ ncurses-5.5/configure 2006-03-26 22:24:59.000000000 +0200 -@@ -5027,7 +5027,7 @@ - darwin*) - EXTRA_CFLAGS="-no-cpp-precomp" - CC_SHARED_OPTS="-dynamic" -- MK_SHARED_LIB='$(CC) -dynamiclib -install_name $(DESTDIR)$(libdir)/`basename $@` -compatibility_version $(ABI_VERSION) -current_version $(ABI_VERSION) -o $@' -+ MK_SHARED_LIB='$(CC) $(CFLAGS) -dynamiclib -install_name $(DESTDIR)$(libdir)/`basename $@` -compatibility_version $(ABI_VERSION) -current_version $(ABI_VERSION) -o $@' - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi - cf_cv_shlib_version_infix=yes - ;; diff --git a/project/jni/python/src/Mac/BuildScript/resources/ReadMe.txt b/project/jni/python/src/Mac/BuildScript/resources/ReadMe.txt deleted file mode 100644 index d99f9f643..000000000 --- a/project/jni/python/src/Mac/BuildScript/resources/ReadMe.txt +++ /dev/null @@ -1,30 +0,0 @@ -This package will install MacPython $FULL_VERSION for Mac OS X -$MACOSX_DEPLOYMENT_TARGET for the following -architecture(s): $ARCHITECTURES. - -Separate installers are available for older versions -of Mac OS X, see the homepage, below. - -Installation requires approximately $INSTALL_SIZE MB of disk -space, ignore the message that it will take zero bytes. - -You must install onto your current boot disk, even -though the installer does not enforce this, otherwise -things will not work. - -MacPython consists of the Python programming language -interpreter, plus a set of programs to allow easy -access to it for Mac users including an integrated development -environment, IDLE, plus a set of pre-built extension modules -that open up specific Macintosh technologies to Python programs. - -The installer puts the applications in "Python $VERSION" -in your Applications folder, command-line tools in -/usr/local/bin and the underlying machinery in -$PYTHONFRAMEWORKINSTALLDIR. - -More information on MacPython can be found at -http://www.python.org/download/mac/. - -More information on Python in general can be found at -http://www.python.org. diff --git a/project/jni/python/src/Mac/BuildScript/resources/Welcome.rtf b/project/jni/python/src/Mac/BuildScript/resources/Welcome.rtf deleted file mode 100644 index 0753ea46a..000000000 --- a/project/jni/python/src/Mac/BuildScript/resources/Welcome.rtf +++ /dev/null @@ -1,18 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 -{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;} -{\colortbl;\red255\green255\blue255;} -\paperw11900\paperh16840\margl1440\margr1440\vieww9920\viewh10660\viewkind0 -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural - -\f0\fs24 \cf0 This package will install -\f1\b MacPython $FULL_VERSION -\f0\b0 for -\f1\b Mac OS X $MACOSX_DEPLOYMENT_TARGET -\f0\b0 .\ -\ -MacPython consists of the Python programming language interpreter, plus a set of programs to allow easy access to it for Mac users including an integrated development environment \b IDLE\b0 plus a set of pre-built extension modules that open up specific Macintosh technologies to Python programs.\ -\ -See the ReadMe file for more information.\ -\ -\ -This package will by default update your shell profile to ensure that this version of Python is on the search path of your shell. Please deselect the "Shell profile updater" package on the package customization screen if you want to avoid this modification. Double-click \b Update Shell Profile\b0 at any time to make $FULL_VERSION the default Python.} \ No newline at end of file diff --git a/project/jni/python/src/Mac/BuildScript/resources/background.jpg b/project/jni/python/src/Mac/BuildScript/resources/background.jpg deleted file mode 100644 index b3c76406cf4a264410e12d5af1c11380164f1e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45421 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

b}gzTg>irbnz4G+=6Q+ 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 diff --git a/project/jni/python/src/Mac/BuildScript/scripts/postflight.documentation b/project/jni/python/src/Mac/BuildScript/scripts/postflight.documentation deleted file mode 100644 index 9f5918ed7..000000000 --- a/project/jni/python/src/Mac/BuildScript/scripts/postflight.documentation +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -PYVER="@PYVER@" - -if [ -d /Developer/Documentation ]; then - if [ ! -d /Developer/Documentation/Python ]; then - mkdir -p /Developer/Documentation/Python - fi - - ln -fhs /Library/Frameworks/Python.framework/Versions/${PYVER}/Resources/English.lproj/Documentation "/Developer/Documentation/Python/Reference Documentation @PYVER@" -fi diff --git a/project/jni/python/src/Mac/BuildScript/scripts/postflight.framework b/project/jni/python/src/Mac/BuildScript/scripts/postflight.framework deleted file mode 100644 index b796a102b..000000000 --- a/project/jni/python/src/Mac/BuildScript/scripts/postflight.framework +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/sh -# -# Recompile the .py files. -# - -PYVER="@PYVER@" -FWK="/Library/Frameworks/Python.framework/Versions/@PYVER@" - -"${FWK}/bin/python" -Wi -tt \ - "${FWK}/lib/python${PYVER}/compileall.py" \ - -x badsyntax -x site-packages \ - "${FWK}/lib/python${PYVER}" - -"${FWK}/bin/python" -Wi -tt -O \ - "${FWK}/lib/python${PYVER}/compileall.py" \ - -x badsyntax -x site-packages \ - "${FWK}/lib/python${PYVER}" - -"${FWK}/bin/python" -Wi -tt \ - "${FWK}/lib/python${PYVER}/compileall.py" \ - -x badsyntax -x site-packages \ - "${FWK}/Mac/Tools" - -"${FWK}/bin/python" -Wi -tt -O \ - "${FWK}/lib/python${PYVER}/compileall.py" \ - -x badsyntax -x site-packages \ - "${FWK}/Mac/Tools" - - -chown -R admin "${FWK}" -chmod -R g+w "${FWK}" - -exit 0 diff --git a/project/jni/python/src/Mac/BuildScript/scripts/postflight.patch-profile b/project/jni/python/src/Mac/BuildScript/scripts/postflight.patch-profile deleted file mode 100644 index aa5e93c68..000000000 --- a/project/jni/python/src/Mac/BuildScript/scripts/postflight.patch-profile +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/sh - -echo "This script will update your shell profile when the 'bin' directory" -echo "of python is not early enough of the PATH of your shell." -echo "These changes will be effective only in shell windows that you open" -echo "after running this script." - -PYVER="@PYVER@" -PYTHON_ROOT="/Library/Frameworks/Python.framework/Versions/@PYVER@" - -if [ `id -ur` = 0 ]; then - # Run from the installer, do some trickery to fetch the information - # we need. - theShell="`finger $USER | grep Shell: | head -1 | awk '{ print $NF }'`" - -else - theShell="${SHELL}" -fi - -# Make sure the directory ${PYTHON_ROOT}/bin is on the users PATH. -BSH="`basename "${theShell}"`" -case "${BSH}" in -bash|ksh|sh|*csh) - if [ `id -ur` = 0 ]; then - P=`su - ${USER} -c 'echo A-X-4-X@@$PATH@@X-4-X-A' | grep 'A-X-4-X@@.*@@X-4-X-A' | sed -e 's/^A-X-4-X@@//g' -e 's/@@X-4-X-A$//g'` - else - P="`(exec -l ${theShell} -c 'echo $PATH')`" - fi - ;; -*) - echo "Sorry, I don't know how to patch $BSH shells" - exit 0 - ;; -esac - -# Now ensure that our bin directory is on $P and before /usr/bin at that -for elem in `echo $P | tr ':' ' '` -do - if [ "${elem}" == "${PYTHON_ROOT}/bin" ]; then - echo "All right, you're a python lover already" - exit 0 - elif [ "${elem}" == "/usr/bin" ]; then - break - fi -done - -echo "${PYTHON_ROOT}/bin is not on your PATH or at least not early enough" -case "${BSH}" in -*csh) - if [ -f "${HOME}/.tcshrc" ]; then - RC="${HOME}/.tcshrc" - else - RC="${HOME}/.cshrc" - fi - # Create backup copy before patching - if [ -f "${RC}" ]; then - cp -fp "${RC}" "${RC}.pysave" - fi - echo "" >> "${RC}" - echo "# Setting PATH for MacPython ${PYVER}" >> "${RC}" - echo "# The orginal version is saved in .cshrc.pysave" >> "${RC}" - echo "set path=(${PYTHON_ROOT}/bin "'$path'")" >> "${RC}" - if [ `id -ur` = 0 ]; then - chown "${USER}" "${RC}" - fi - exit 0 - ;; -bash) - if [ -e "${HOME}/.bash_profile" ]; then - PR="${HOME}/.bash_profile" - elif [ -e "${HOME}/.bash_login" ]; then - PR="${HOME}/.bash_login" - elif [ -e "${HOME}/.profile" ]; then - PR="${HOME}/.profile" - else - PR="${HOME}/.bash_profile" - fi - ;; -*sh) - PR="${HOME}/.profile" - ;; -esac - -# Create backup copy before patching -if [ -f "${PR}" ]; then - cp -fp "${PR}" "${PR}.pysave" -fi -echo "" >> "${PR}" -echo "# Setting PATH for MacPython ${PYVER}" >> "${PR}" -echo "# The orginal version is saved in `basename ${PR}`.pysave" >> "${PR}" -echo 'PATH="'"${PYTHON_ROOT}/bin"':${PATH}"' >> "${PR}" -echo 'export PATH' >> "${PR}" -if [ `id -ur` = 0 ]; then - chown "${USER}" "${PR}" -fi -exit 0 diff --git a/project/jni/python/src/Mac/BuildScript/seticon.m b/project/jni/python/src/Mac/BuildScript/seticon.m deleted file mode 100644 index 04e3d7dbd..000000000 --- a/project/jni/python/src/Mac/BuildScript/seticon.m +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Simple tool for setting an icon on a file. - */ -#import -#include - -int main(int argc, char** argv) -{ - if (argc != 3) { - fprintf(stderr, "Usage: seticon ICON TARGET"); - return 1; - } - - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - NSString* iconPath = [NSString stringWithUTF8String:argv[1]]; - NSString* filePath = [NSString stringWithUTF8String:argv[2]]; - - [NSApplication sharedApplication]; - - [[NSWorkspace sharedWorkspace] - setIcon: [[NSImage alloc] initWithContentsOfFile: iconPath] - forFile: filePath - options: 0]; - [pool release]; - return 0; -} diff --git a/project/jni/python/src/Mac/Demo/PICTbrowse/ICONbrowse.py b/project/jni/python/src/Mac/Demo/PICTbrowse/ICONbrowse.py deleted file mode 100644 index f55070bf5..000000000 --- a/project/jni/python/src/Mac/Demo/PICTbrowse/ICONbrowse.py +++ /dev/null @@ -1,161 +0,0 @@ -"""browsepict - Display all "ICON" resources found""" - -import FrameWork -import EasyDialogs -from Carbon import Res -from Carbon import Qd -from Carbon import Win -from Carbon import Controls -from Carbon import List -from Carbon import Icn -import macresource - -# -# Resource definitions -ID_MAIN=512 -MAIN_LIST=1 -MAIN_SHOW=2 - -# Where is the picture window? -LEFT=200 -TOP=64 -MINWIDTH=32 -MINHEIGHT=32 -MAXWIDTH=320 -MAXHEIGHT=320 - -def main(): - macresource.need('DLOG', ID_MAIN, "PICTbrowse.rsrc") - ICONbrowse() - -class ICONbrowse(FrameWork.Application): - def __init__(self): - # First init menus, etc. - FrameWork.Application.__init__(self) - # Next create our dialog - self.main_dialog = MyDialog(self) - # Now open the dialog - contents = self.findICONresources() - self.main_dialog.open(ID_MAIN, contents) - # Finally, go into the event loop - self.mainloop() - - def makeusermenus(self): - self.filemenu = m = FrameWork.Menu(self.menubar, "File") - self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit) - - def quit(self, *args): - self._quit() - - def showICON(self, resid): - w = ICONwindow(self) - w.open(resid) - #EasyDialogs.Message('Show ICON %r' % (resid,)) - - def findICONresources(self): - num = Res.CountResources('ICON') - rv = [] - for i in range(1, num+1): - Res.SetResLoad(0) - try: - r = Res.GetIndResource('ICON', i) - finally: - Res.SetResLoad(1) - id, type, name = r.GetResInfo() - rv.append((id, name)) - return rv - -class ICONwindow(FrameWork.Window): - def open(self, (resid, resname)): - if not resname: - resname = '#%r' % (resid,) - self.resid = resid - self.picture = Icn.GetIcon(self.resid) - l, t, r, b = 0, 0, 32, 32 - self.pictrect = (l, t, r, b) - width = r-l - height = b-t - if width < MINWIDTH: width = MINWIDTH - elif width > MAXWIDTH: width = MAXWIDTH - if height < MINHEIGHT: height = MINHEIGHT - elif height > MAXHEIGHT: height = MAXHEIGHT - bounds = (LEFT, TOP, LEFT+width, TOP+height) - - self.wid = Win.NewWindow(bounds, resname, 1, 0, -1, 1, 0) - self.do_postopen() - - def do_update(self, *args): - currect = self.fitrect() - Icn.PlotIcon(currect, self.picture) - - def fitrect(self): - """Return self.pictrect scaled to fit in window""" - graf = self.wid.GetWindowPort() - screenrect = graf.GetPortBounds() - picwidth = self.pictrect[2] - self.pictrect[0] - picheight = self.pictrect[3] - self.pictrect[1] - if picwidth > screenrect[2] - screenrect[0]: - factor = float(picwidth) / float(screenrect[2]-screenrect[0]) - picwidth = picwidth / factor - picheight = picheight / factor - if picheight > screenrect[3] - screenrect[1]: - factor = float(picheight) / float(screenrect[3]-screenrect[1]) - picwidth = picwidth / factor - picheight = picheight / factor - return (screenrect[0], screenrect[1], screenrect[0]+int(picwidth), - screenrect[1]+int(picheight)) - -class MyDialog(FrameWork.DialogWindow): - "Main dialog window for ICONbrowse" - - def open(self, id, contents): - self.id = id - FrameWork.DialogWindow.open(self, ID_MAIN) - self.dlg.SetDialogDefaultItem(MAIN_SHOW) - self.contents = contents - self.ctl = self.dlg.GetDialogItemAsControl(MAIN_LIST) - h = self.ctl.GetControlData_Handle(Controls.kControlListBoxPart, - Controls.kControlListBoxListHandleTag) - self.list = List.as_List(h) - self.setlist() - - def setlist(self): - self.list.LDelRow(0, 0) - self.list.LSetDrawingMode(0) - if self.contents: - self.list.LAddRow(len(self.contents), 0) - for i in range(len(self.contents)): - v = repr(self.contents[i][0]) - if self.contents[i][1]: - v = v + '"' + self.contents[i][1] + '"' - self.list.LSetCell(v, (0, i)) - self.list.LSetDrawingMode(1) - self.list.LUpdate(self.wid.GetWindowPort().visRgn) - - def getselection(self): - items = [] - point = (0,0) - while 1: - ok, point = self.list.LGetSelect(1, point) - if not ok: - break - items.append(point[1]) - point = point[0], point[1]+1 - values = [] - for i in items: - values.append(self.contents[i]) - return values - - def do_show(self, *args): - selection = self.getselection() - for resid in selection: - self.parent.showICON(resid) - - def do_close(self): - self.close() - - def do_itemhit(self, item, event): - if item == MAIN_SHOW: - self.do_show() - -main() diff --git a/project/jni/python/src/Mac/Demo/PICTbrowse/PICTbrowse.py b/project/jni/python/src/Mac/Demo/PICTbrowse/PICTbrowse.py deleted file mode 100644 index f92bdd011..000000000 --- a/project/jni/python/src/Mac/Demo/PICTbrowse/PICTbrowse.py +++ /dev/null @@ -1,140 +0,0 @@ -"""browsepict - Display all "PICT" resources found""" - -import FrameWork -import EasyDialogs -from Carbon import Res -from Carbon import Qd -from Carbon import Win -from Carbon import Controls -from Carbon import List -import struct -import macresource - -# -# Resource definitions -ID_MAIN=512 -MAIN_LIST=1 -MAIN_SHOW=2 - -# Where is the picture window? -LEFT=200 -TOP=64 - -def main(): - macresource.need('DLOG', ID_MAIN, "PICTbrowse.rsrc") - PICTbrowse() - -class PICTbrowse(FrameWork.Application): - def __init__(self): - # First init menus, etc. - FrameWork.Application.__init__(self) - # Next create our dialog - self.main_dialog = MyDialog(self) - # Now open the dialog - contents = self.findPICTresources() - self.main_dialog.open(ID_MAIN, contents) - # Finally, go into the event loop - self.mainloop() - - def makeusermenus(self): - self.filemenu = m = FrameWork.Menu(self.menubar, "File") - self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit) - - def quit(self, *args): - self._quit() - - def showPICT(self, resid): - w = PICTwindow(self) - w.open(resid) - #EasyDialogs.Message('Show PICT %r' % (resid,)) - - def findPICTresources(self): - num = Res.CountResources('PICT') - rv = [] - for i in range(1, num+1): - Res.SetResLoad(0) - try: - r = Res.GetIndResource('PICT', i) - finally: - Res.SetResLoad(1) - id, type, name = r.GetResInfo() - rv.append((id, name)) - return rv - -class PICTwindow(FrameWork.Window): - def open(self, (resid, resname)): - if not resname: - resname = '#%r' % (resid,) - self.resid = resid - picture = Qd.GetPicture(self.resid) - # Get rect for picture - print repr(picture.data[:16]) - sz, t, l, b, r = struct.unpack('hhhhh', picture.data[:10]) - print 'pict:', t, l, b, r - width = r-l - height = b-t - if width < 64: width = 64 - elif width > 480: width = 480 - if height < 64: height = 64 - elif height > 320: height = 320 - bounds = (LEFT, TOP, LEFT+width, TOP+height) - print 'bounds:', bounds - - self.wid = Win.NewWindow(bounds, resname, 1, 0, -1, 1, 0) - self.wid.SetWindowPic(picture) - self.do_postopen() - -class MyDialog(FrameWork.DialogWindow): - "Main dialog window for PICTbrowse" - - def open(self, id, contents): - self.id = id - FrameWork.DialogWindow.open(self, ID_MAIN) - self.dlg.SetDialogDefaultItem(MAIN_SHOW) - self.contents = contents - self.ctl = self.dlg.GetDialogItemAsControl(MAIN_LIST) - h = self.ctl.GetControlData_Handle(Controls.kControlListBoxPart, - Controls.kControlListBoxListHandleTag) - self.list = List.as_List(h) - self.setlist() - - def setlist(self): - self.list.LDelRow(0, 0) - self.list.LSetDrawingMode(0) - if self.contents: - self.list.LAddRow(len(self.contents), 0) - for i in range(len(self.contents)): - v = repr(self.contents[i][0]) - if self.contents[i][1]: - v = v + '"' + self.contents[i][1] + '"' - self.list.LSetCell(v, (0, i)) - self.list.LSetDrawingMode(1) - self.list.LUpdate(self.wid.GetWindowPort().visRgn) - - def getselection(self): - items = [] - point = (0,0) - while 1: - ok, point = self.list.LGetSelect(1, point) - if not ok: - break - items.append(point[1]) - point = point[0], point[1]+1 - values = [] - for i in items: - values.append(self.contents[i]) - return values - - def do_show(self, *args): - selection = self.getselection() - for resid in selection: - self.parent.showPICT(resid) - - def do_close(self): - self.close() - - def do_itemhit(self, item, event): - if item == MAIN_SHOW: - self.do_show() - -main() diff --git a/project/jni/python/src/Mac/Demo/PICTbrowse/PICTbrowse.rsrc b/project/jni/python/src/Mac/Demo/PICTbrowse/PICTbrowse.rsrc deleted file mode 100644 index 526ff522aa7b108bad8f9ceafabc2aa178be3dd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 785 zcmZQz6=PsvV!#B<3=9mM3=9l*3=9kk3=9lh3=9l$3=9k`3=s863=B-`i;9bqgMwXM z7(x0Uf(Q)E#J~WOW&F*+zyQKqE;h=4VEFZ)0fKKZF#JNs{}=EFcshq973G%~r|N;s zPc3rG&q+xwN-ZinVv$tT#lQd(1=)&W7gS(Va^YzRlW_`edl-KGS3q`%D8ePeU?=@o z;8NgL;9*?Apuo0KK;#E@2ZJ0Bv*bTWjer`+YX=y9{Wkz{K@MR95e(c63=HB7tPETX ziy781fkGvPfq^jrEXTmWpaK$MV1OxLXM)Dc76u!J6AWc6EWsK1G7QrgSW|M+D;O9UjGX;Kd_W1!#S=_> zx%jw8FfcHLx%l|IGcYhD<)nbE$U}A*6T|=i3Xnv}0Ae#RFsOp;gR*@gYzBS?28P`b e_W%D33=B^}Y(6J&;wn-I&&*57FNbr>!CU}+VV?5< diff --git a/project/jni/python/src/Mac/Demo/PICTbrowse/PICTbrowse2.py b/project/jni/python/src/Mac/Demo/PICTbrowse/PICTbrowse2.py deleted file mode 100644 index 211d09e60..000000000 --- a/project/jni/python/src/Mac/Demo/PICTbrowse/PICTbrowse2.py +++ /dev/null @@ -1,162 +0,0 @@ -"""browsepict - Display all "PICT" resources found""" - -import FrameWork -import EasyDialogs -from Carbon import Res -from Carbon import Qd -from Carbon import Win -from Carbon import Controls -from Carbon import List -import struct -import macresource - -# -# Resource definitions -ID_MAIN=512 -MAIN_LIST=1 -MAIN_SHOW=2 - -# Where is the picture window? -LEFT=200 -TOP=64 -MINWIDTH=64 -MINHEIGHT=64 -MAXWIDTH=320 -MAXHEIGHT=320 - -def main(): - macresource.need('DLOG', ID_MAIN, "PICTbrowse.rsrc") - PICTbrowse() - -class PICTbrowse(FrameWork.Application): - def __init__(self): - # First init menus, etc. - FrameWork.Application.__init__(self) - # Next create our dialog - self.main_dialog = MyDialog(self) - # Now open the dialog - contents = self.findPICTresources() - self.main_dialog.open(ID_MAIN, contents) - # Finally, go into the event loop - self.mainloop() - - def makeusermenus(self): - self.filemenu = m = FrameWork.Menu(self.menubar, "File") - self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit) - - def quit(self, *args): - self._quit() - - def showPICT(self, resid): - w = PICTwindow(self) - w.open(resid) - #EasyDialogs.Message('Show PICT %r' % (resid,)) - - def findPICTresources(self): - num = Res.CountResources('PICT') - rv = [] - for i in range(1, num+1): - Res.SetResLoad(0) - try: - r = Res.GetIndResource('PICT', i) - finally: - Res.SetResLoad(1) - id, type, name = r.GetResInfo() - rv.append((id, name)) - return rv - -class PICTwindow(FrameWork.Window): - def open(self, (resid, resname)): - if not resname: - resname = '#%r' % (resid,) - self.resid = resid - self.picture = Qd.GetPicture(self.resid) - # Get rect for picture - sz, t, l, b, r = struct.unpack('hhhhh', self.picture.data[:10]) - self.pictrect = (l, t, r, b) - width = r-l - height = b-t - if width < MINWIDTH: width = MINWIDTH - elif width > MAXWIDTH: width = MAXWIDTH - if height < MINHEIGHT: height = MINHEIGHT - elif height > MAXHEIGHT: height = MAXHEIGHT - bounds = (LEFT, TOP, LEFT+width, TOP+height) - - self.wid = Win.NewWindow(bounds, resname, 1, 0, -1, 1, 0) - self.do_postopen() - - def do_update(self, *args): - currect = self.fitrect() - Qd.DrawPicture(self.picture, currect) - - def fitrect(self): - """Return self.pictrect scaled to fit in window""" - graf = self.dlg.GetWindowPort() - screenrect = graf.GetPortBounds() - picwidth = self.pictrect[2] - self.pictrect[0] - picheight = self.pictrect[3] - self.pictrect[1] - if picwidth > screenrect[2] - screenrect[0]: - factor = float(picwidth) / float(screenrect[2]-screenrect[0]) - picwidth = picwidth / factor - picheight = picheight / factor - if picheight > screenrect[3] - screenrect[1]: - factor = float(picheight) / float(screenrect[3]-screenrect[1]) - picwidth = picwidth / factor - picheight = picheight / factor - return (screenrect[0], screenrect[1], screenrect[0]+int(picwidth), - screenrect[1]+int(picheight)) - -class MyDialog(FrameWork.DialogWindow): - "Main dialog window for PICTbrowse" - - def open(self, id, contents): - self.id = id - FrameWork.DialogWindow.open(self, ID_MAIN) - self.dlg.SetDialogDefaultItem(MAIN_SHOW) - self.contents = contents - self.ctl = self.dlg.GetDialogItemAsControl(MAIN_LIST) - h = self.ctl.GetControlData_Handle(Controls.kControlListBoxPart, - Controls.kControlListBoxListHandleTag) - self.list = List.as_List(h) - self.setlist() - - def setlist(self): - self.list.LDelRow(0, 0) - self.list.LSetDrawingMode(0) - if self.contents: - self.list.LAddRow(len(self.contents), 0) - for i in range(len(self.contents)): - v = repr(self.contents[i][0]) - if self.contents[i][1]: - v = v + '"' + self.contents[i][1] + '"' - self.list.LSetCell(v, (0, i)) - self.list.LSetDrawingMode(1) - self.list.LUpdate(self.wid.GetWindowPort().visRgn) - - def getselection(self): - items = [] - point = (0,0) - while 1: - ok, point = self.list.LGetSelect(1, point) - if not ok: - break - items.append(point[1]) - point = point[0], point[1]+1 - values = [] - for i in items: - values.append(self.contents[i]) - return values - - def do_show(self, *args): - selection = self.getselection() - for resid in selection: - self.parent.showPICT(resid) - - def do_close(self): - self.close() - - def do_itemhit(self, item, event): - if item == MAIN_SHOW: - self.do_show() - -main() diff --git a/project/jni/python/src/Mac/Demo/PICTbrowse/cicnbrowse.py b/project/jni/python/src/Mac/Demo/PICTbrowse/cicnbrowse.py deleted file mode 100644 index 4bc7008ed..000000000 --- a/project/jni/python/src/Mac/Demo/PICTbrowse/cicnbrowse.py +++ /dev/null @@ -1,161 +0,0 @@ -"""browsepict - Display all "cicn" resources found""" - -import FrameWork -import EasyDialogs -from Carbon import Res -from Carbon import Qd -from Carbon import Win -from Carbon import Controls -from Carbon import List -from Carbon import Icn -import macresource - -# -# Resource definitions -ID_MAIN=512 -MAIN_LIST=1 -MAIN_SHOW=2 - -# Where is the picture window? -LEFT=200 -TOP=64 -MINWIDTH=32 -MINHEIGHT=32 -MAXWIDTH=320 -MAXHEIGHT=320 - -def main(): - macresource.need('DLOG', ID_MAIN, "PICTbrowse.rsrc") - CIconbrowse() - -class CIconbrowse(FrameWork.Application): - def __init__(self): - # First init menus, etc. - FrameWork.Application.__init__(self) - # Next create our dialog - self.main_dialog = MyDialog(self) - # Now open the dialog - contents = self.findcicnresources() - self.main_dialog.open(ID_MAIN, contents) - # Finally, go into the event loop - self.mainloop() - - def makeusermenus(self): - self.filemenu = m = FrameWork.Menu(self.menubar, "File") - self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit) - - def quit(self, *args): - self._quit() - - def showCIcon(self, resid): - w = CIconwindow(self) - w.open(resid) - #EasyDialogs.Message('Show cicn %r' % (resid,)) - - def findcicnresources(self): - num = Res.CountResources('cicn') - rv = [] - for i in range(1, num+1): - Res.SetResLoad(0) - try: - r = Res.GetIndResource('cicn', i) - finally: - Res.SetResLoad(1) - id, type, name = r.GetResInfo() - rv.append((id, name)) - return rv - -class CIconwindow(FrameWork.Window): - def open(self, (resid, resname)): - if not resname: - resname = '#%r' % (resid,) - self.resid = resid - self.picture = Icn.GetCIcon(self.resid) - l, t, r, b = 0, 0, 32, 32 - self.pictrect = (l, t, r, b) - width = r-l - height = b-t - if width < MINWIDTH: width = MINWIDTH - elif width > MAXWIDTH: width = MAXWIDTH - if height < MINHEIGHT: height = MINHEIGHT - elif height > MAXHEIGHT: height = MAXHEIGHT - bounds = (LEFT, TOP, LEFT+width, TOP+height) - - self.wid = Win.NewWindow(bounds, resname, 1, 0, -1, 1, 0) - self.do_postopen() - - def do_update(self, *args): - currect = self.fitrect() - Icn.PlotCIcon(currect, self.picture) - - def fitrect(self): - """Return self.pictrect scaled to fit in window""" - graf = self.wid.GetWindowPort() - screenrect = graf.GetPortBounds() - picwidth = self.pictrect[2] - self.pictrect[0] - picheight = self.pictrect[3] - self.pictrect[1] - if picwidth > screenrect[2] - screenrect[0]: - factor = float(picwidth) / float(screenrect[2]-screenrect[0]) - picwidth = picwidth / factor - picheight = picheight / factor - if picheight > screenrect[3] - screenrect[1]: - factor = float(picheight) / float(screenrect[3]-screenrect[1]) - picwidth = picwidth / factor - picheight = picheight / factor - return (screenrect[0], screenrect[1], screenrect[0]+int(picwidth), - screenrect[1]+int(picheight)) - -class MyDialog(FrameWork.DialogWindow): - "Main dialog window for cicnbrowse" - - def open(self, id, contents): - self.id = id - FrameWork.DialogWindow.open(self, ID_MAIN) - self.dlg.SetDialogDefaultItem(MAIN_SHOW) - self.contents = contents - self.ctl = self.dlg.GetDialogItemAsControl(MAIN_LIST) - h = self.ctl.GetControlData_Handle(Controls.kControlListBoxPart, - Controls.kControlListBoxListHandleTag) - self.list = List.as_List(h) - self.setlist() - - def setlist(self): - self.list.LDelRow(0, 0) - self.list.LSetDrawingMode(0) - if self.contents: - self.list.LAddRow(len(self.contents), 0) - for i in range(len(self.contents)): - v = repr(self.contents[i][0]) - if self.contents[i][1]: - v = v + '"' + self.contents[i][1] + '"' - self.list.LSetCell(v, (0, i)) - self.list.LSetDrawingMode(1) - self.list.LUpdate(self.wid.GetWindowPort().visRgn) - - def getselection(self): - items = [] - point = (0,0) - while 1: - ok, point = self.list.LGetSelect(1, point) - if not ok: - break - items.append(point[1]) - point = point[0], point[1]+1 - values = [] - for i in items: - values.append(self.contents[i]) - return values - - def do_show(self, *args): - selection = self.getselection() - for resid in selection: - self.parent.showCIcon(resid) - - def do_close(self): - self.close() - - def do_itemhit(self, item, event): - if item == MAIN_SHOW: - self.do_show() - -main() diff --git a/project/jni/python/src/Mac/Demo/PICTbrowse/oldPICTbrowse.py b/project/jni/python/src/Mac/Demo/PICTbrowse/oldPICTbrowse.py deleted file mode 100644 index d15a27d57..000000000 --- a/project/jni/python/src/Mac/Demo/PICTbrowse/oldPICTbrowse.py +++ /dev/null @@ -1,158 +0,0 @@ -"""browsepict - Display all "PICT" resources found""" - -import FrameWork -import EasyDialogs -from Carbon import Res -from Carbon import Qd -from Carbon import Win -from Carbon import List -import struct -import macresource - -# -# Resource definitions -ID_MAIN=512 -MAIN_LIST=1 -MAIN_SHOW=2 - -# Where is the picture window? -LEFT=200 -TOP=64 - -def main(): - macresource.need('DLOG', ID_MAIN, "oldPICTbrowse.rsrc") - PICTbrowse() - -class PICTbrowse(FrameWork.Application): - def __init__(self): - # First init menus, etc. - FrameWork.Application.__init__(self) - # Next create our dialog - self.main_dialog = MyDialog(self) - # Now open the dialog - contents = self.findPICTresources() - self.main_dialog.open(ID_MAIN, contents) - # Finally, go into the event loop - self.mainloop() - - def makeusermenus(self): - self.filemenu = m = FrameWork.Menu(self.menubar, "File") - self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit) - - def quit(self, *args): - self._quit() - - def showPICT(self, resid): - w = PICTwindow(self) - w.open(resid) - #EasyDialogs.Message('Show PICT %r' % (resid,)) - - def findPICTresources(self): - num = Res.CountResources('PICT') - rv = [] - for i in range(1, num+1): - Res.SetResLoad(0) - try: - r = Res.GetIndResource('PICT', i) - finally: - Res.SetResLoad(1) - id, type, name = r.GetResInfo() - rv.append((id, name)) - return rv - -class PICTwindow(FrameWork.Window): - def open(self, (resid, resname)): - if not resname: - resname = '#%r' % (resid,) - self.resid = resid - picture = Qd.GetPicture(self.resid) - # Get rect for picture - print repr(picture.data[:16]) - sz, t, l, b, r = struct.unpack('hhhhh', picture.data[:10]) - print 'pict:', t, l, b, r - width = r-l - height = b-t - if width < 64: width = 64 - elif width > 480: width = 480 - if height < 64: height = 64 - elif height > 320: height = 320 - bounds = (LEFT, TOP, LEFT+width, TOP+height) - print 'bounds:', bounds - - self.wid = Win.NewWindow(bounds, resname, 1, 0, -1, 1, 0) - self.wid.SetWindowPic(picture) - self.do_postopen() - -class MyDialog(FrameWork.DialogWindow): - "Main dialog window for PICTbrowse" - - def open(self, id, contents): - self.id = id - FrameWork.DialogWindow.open(self, ID_MAIN) - self.dlg.SetDialogDefaultItem(MAIN_SHOW) - tp, h, rect = self.dlg.GetDialogItem(MAIN_LIST) - rect2 = rect[0]+1, rect[1]+1, rect[2]-17, rect[3]-17 # Scroll bar space - self.list = List.LNew(rect2, (0, 0, 1, len(contents)), (0,0), 0, self.wid, - 0, 1, 1, 1) - self.contents = contents - self.setlist() - - def setlist(self): - self.list.LDelRow(0, 0) - self.list.LSetDrawingMode(0) - if self.contents: - self.list.LAddRow(len(self.contents), 0) - for i in range(len(self.contents)): - v = repr(self.contents[i][0]) - if self.contents[i][1]: - v = v + '"' + self.contents[i][1] + '"' - self.list.LSetCell(v, (0, i)) - self.list.LSetDrawingMode(1) - self.list.LUpdate(self.wid.GetWindowPort().visRgn) - - def do_listhit(self, event): - (what, message, when, where, modifiers) = event - Qd.SetPort(self.wid) - where = Qd.GlobalToLocal(where) - print 'LISTHIT', where - if self.list.LClick(where, modifiers): - self.do_show() - - def getselection(self): - items = [] - point = (0,0) - while 1: - ok, point = self.list.LGetSelect(1, point) - if not ok: - break - items.append(point[1]) - point = point[0], point[1]+1 - values = [] - for i in items: - values.append(self.contents[i]) - return values - - def do_show(self, *args): - selection = self.getselection() - for resid in selection: - self.parent.showPICT(resid) - - def do_rawupdate(self, window, event): - tp, h, rect = self.dlg.GetDialogItem(MAIN_LIST) - Qd.SetPort(self.wid) - Qd.FrameRect(rect) - self.list.LUpdate(self.wid.GetWindowPort().visRgn) - - def do_activate(self, activate, event): - self.list.LActivate(activate) - - def do_close(self): - self.close() - - def do_itemhit(self, item, event): - if item == MAIN_LIST: - self.do_listhit(event) - if item == MAIN_SHOW: - self.do_show() - -main() diff --git a/project/jni/python/src/Mac/Demo/PICTbrowse/oldPICTbrowse.rsrc b/project/jni/python/src/Mac/Demo/PICTbrowse/oldPICTbrowse.rsrc deleted file mode 100644 index fb7a192df2c096f2781a2475aafcf06f6eea0932..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 502 zcmZQz6=PsvV!#B<3=9mM3=9l*3=9kk3=9lh3=9l$3=9k`3=s863=E7@ii(SpgMwXM z7#SF<7%pKN0#VDzz`($0&%nR{!l4%%;oG_yathLz0T}%ZpR> zK<1|wx#j1iq!y(X6&u`+NmEM`~(Qp>==u!X^f;RHh&3rlcDemO`Ba_}*H(0L+U!N9;E y!{Eli=;Gt=&cMJR diff --git a/project/jni/python/src/Mac/Demo/applescript.html b/project/jni/python/src/Mac/Demo/applescript.html deleted file mode 100644 index 5e4fac7e3..000000000 --- a/project/jni/python/src/Mac/Demo/applescript.html +++ /dev/null @@ -1,362 +0,0 @@ - -Using the Open Scripting Architecture from Python - -

Using the Open Scripting Architecture from Python

-
- -

NOTE: this document describes the OSA support that is shipped with -the core python distribution. Most users are better of with the more -userfriendly appscript library. - -

OSA support in Python is still not 100% complete, but -there is already enough in place to allow you to do some nifty things -with other programs from your python program.

- - -

-In this example, we will look at a scriptable application, extract its -“AppleScript Dictionary,” generate a Python interface package from -the dictionary, and use that package to control the application. -The application we are going to script is Disk Copy, Apple's standard -utility for making copies of floppies, creating files that are mountable -as disk images, etc. -Because we want -to concentrate on the OSA details, we won’t bother with a real -user-interface for our application.

- - -

-When we say “AppleScript” in this document we actually mean -“the Open Scripting Architecture.” There is nothing -AppleScript-specific in the Python implementation. Most of this document -focuses on the classic Mac OS; Mac OS X users have some -additional tools. -

- -

Python OSA architecture

- -

Open Scripting suites and inheritance can be modelled rather nicely -with Python packages, so we generate -a package for each application we want to script. Each suite defined in -the application becomes a module in the -package, and the package main module imports everything from all the -submodules and glues together all the classes (in Python terminology— -events in OSA terminology or verbs in AppleScript terminology).

- -

-A suite in an OSA application can extend the functionality of a standard -suite. This is implemented in Python by importing everything from the -module that implements the standard suites and overriding anything that has -been extended. The standard suites live in the StdSuite package.

- -

-This all sounds complicated, but the good news is that basic -scripting is actually pretty simple. You can do strange and wondrous things -with OSA scripting once you fully understand it.

- -

Creating the Python interface package

- - -

There is a tool in the standard distribution that can automatically -generate the interface packages. This tool is called -gensuitemodule.py, and lives in Mac:scripts. -It looks through a file -for an ‘AETE’ or ‘AEUT’ resource, -the internal representation of the -AppleScript dictionary, and parses the resource to generate the suite -modules. -When we start gensuitemodule, it asks us for an input file; -for our example, -we point it to the Disk Copy executable.

- -

-Next, gensuitemodule wants a folder where it will store the -package it is going to generate. -Note that this is the package folder, not the parent folder, so we -navigate to Python:Mac:Demo:applescript, create a folder -Disk_Copy, and select that.

- -

-We next specify the folder from which gensuitemodule -should import the standard suites. Here, -we always select Python:Mac:Lib:lib-scriptpackages:StdSuites. (There is -one exception to this rule: when you are generating StdSuites itself -you select _builtinSuites.) -

- -

-It starts parsing the AETE resource, and for -each AppleEvent suite it finds, gensuitemodule.py -prompts us for the filename of the -resulting python module. Remember to change folders for the first -module—you don't want to clutter up, say, the -Disk Copy folder -with your python -interfaces. If you want to skip a suite, press cancel and the process -continues with the next suite.

- -

Summary

- -
    - -
  1. Run gensuitemodule.
  2. - -
  3. Select the application (or OSAX) for which you would like a Python interface.
  4. - -
  5. Select the package folder where the interface modules should be - stored.
  6. - -
  7. Specify the folder Python:Mac:Lib:lib-scriptpackages:StdSuites - to import the standard suites (or _builtinSuites if you are - generating StdSuites itself).
  8. - -
  9. Save the generated suites (use cancel to skip a suite).
  10. - - -
- - -

Notes

- - -
    - -
  • The interface package may occasionally need some editing by hand. For example, - gensuitemodule does not handle all Python reserved words, so - if - one of the AppleScript verbs is a Python reserved word, a SyntaxError - may be raised when the package is imported. - Simply rename the class into something acceptable, if this happens; - take a look at how the - print verb is handled (automatically by gensuitemodule) - in the standard suites. But: f you need to edit your package this should be considered a - bug in gensuitemodule, so please report it so it can be fixed in future releases. -
  • - - -
  • If you want to re-create the StdSuite modules, -you should look in one of two places. With versions of AppleScript older than 1.4.0 -(which first shipped with OS 9.0), you will find the -AEUT resources in System Folder:Extensions:Scripting -Additions:Dialects:English Dialect. For newer versions, you will -find them in System Folder:Extensions:Applescript. -
  • - -
  • Since MacPython 2.0, this new structure, with packages -per application and submodules per suite, is used. Older MacPythons had a -single level of modules, with uncertain semantics. With the new structure, -it is possible for programs to override standard suites, as programs often do. - -
  • - -
  • Gensuitemodule.py may ask you questions -like “Where is enum 'xyz ' declared?”. -This is either due to a misunderstanding on my part or (rather too commonly) -bugs in the AETE resources. Pressing cancel is usually the -right choice: it will cause the specific enum not to be treated as an enum -but as a “normal” type. As things like fsspecs and TEXT strings clearly are -not enumerators, this is correct. If someone understands what is really going on -here, please let me know.
  • - -
- - - -

The Python interface package contents

- -

-Let’s glance at the -Disk_Copy package just created. You -may want to open Script Editor alongside to see how it -interprets the dictionary. -

- - -

-The main package module is in __init__.py. -The only interesting bit is the Disk_Copy class, which -includes the event handling classes from the individual suites. It also -inherits aetools.TalkTo, which is a base class that handles all -details on how to start the program and talk to it, and a class variable -_signature which is the default application this class will talk -to (you can override this in various ways when you instantiate your class, see -aetools.py for details). -

- -

-The Special_Events -module is a nice example of a suite module. -The Special_Events_Events class is the bulk of the code -generated. For each verb, it contains a method. Each method knows what -arguments the verb expects, and it makes use of keyword -arguments to present a palatable -interface to the python programmer. - -Notice that each method -calls some routines from aetools, an auxiliary module -living in Mac:Lib. -The other thing to notice is that each method calls -self.send. This comes from the aetools.TalkTo -baseclass.

- - -

-After the big class, there are a number of little class declarations. These -declarations are for the (AppleEvent) classes and properties in the suite. -They allow you to create object IDs, which can then be passed to the verbs. -For instance, -when scripting the popular email program Eudora, -you would use mailbox("inbox").message(1).sender -to get the name of the sender of the first message in mailbox -inbox. It is -also possible to specify this as sender(message(1, mailbox("inbox"))), -which is sometimes needed because these classes don’t always inherit correctly -from baseclasses, so you may have to use a class or property from another -suite.

- -

-Next we get the enumeration dictionaries, which allow you to pass -english names as arguments to verbs, so you don't have to bother with the 4-letter -type code. So, you can say - - diskcopy.create(..., filesystem="Mac OS Standard") - -as it is called in Script Editor, instead of the cryptic lowlevel - - diskcopy.create(..., filesystem="Fhfs") -

- -

-Finally, we get the “table of contents” of the module, listing all -classes and such -by code, which is used by gensuitemodule itself: if you use this -suite as a base package in a later run this is how it knows what is defined in this -suite, and what the Python names are. -

- -

Notes

- -
    - -
  • The aetools module contains some other nifty -AppleEvent tools as well. Have a look at it sometime, there is (of -course) no documentation yet. -
  • - -
  • There are also some older object specifiers for standard objects in aetools. -You use these in the form aetools.Word(10, -aetools.Document(1)), where the corresponding AppleScript -terminology would be word 10 of the first -document. Examine -aetools and aetools.TalkTo -along with -the comments at the end of your suite module if you need to create -more than the standard object specifiers. -
  • - -
- - - - -

Using a Python suite module

- -

-Now that we have created the suite module, we can use it in a Python script. -In older MacPython distributions this used to be a rather -complicated affair, but with the package scheme and with the application signature -known by the package it is very simple: you import the package and instantiate -the class, e.g. - - talker = Disk_Copy.Disk_Copy(start=1) - -You will usually specify the start=1: it will run the application if it is -not already running. -You may want to omit it if you want to talk to the application -only if it is already running, or if the application is something like the Finder. -Another way to ensure that the application is running is to call talker._start(). -

- -

-Looking at the sourcefile makedisk.py, we see that it starts -with some imports. Naturally, one of these is the Python interface to Disk -Copy.

- -

-The main program itself is a wonder of simplicity: we create the -object (talker) that talks to Disk Copy, -create a disk, and mount it. The bulk of -the work is done by talker and the Python interface package we -just created.

- -

-The exception handling does warrant a few comments, though. Since -AppleScript is basically a connectionless RPC protocol, -nothing happens -when we create the talker object. Hence, if the destination application -is not running, we will not notice until we send our first -command (avoid this as described above). There is another thing to note about errors returned by -AppleScript calls: MacOS.Error is raised for -all of the errors that are known to be OSErr-type errors, -while -server generated errors raise aetools.Error.

- -

Scripting Additions

- -

-If you want to use any of the scripting additions (or OSAXen, in -everyday speech) from a Python program, you can use the same method -as for applications, i.e. run gensuitemodule on the -OSAX (commonly found in System Folder:Scripting Additions -or something similar). There is one minor gotcha: the application -signature to use is MACS. You will need to edit the main class -in the __init__.py file of the created package and change the value -of _signature to MACS, or use a subclass to the -same effect. -

- -

-There are two minor points to watch out for when using gensuitemodule -on OSAXen: they appear all to define the class System_Object_Suite, -and a lot of them have the command set in multiple dialects. You have to -watch out for name conflicts and make sure you select a reasonable dialect -(some of the non-English dialects cause gensuitemodule to generate incorrect -Python code).

- -Despite these difficulties, OSAXen offer a lot of possibilities. Take a -look at some of the OSAXen in the Scripting Additions folder, or -download some from the net. - -

Further Reading

- -

-If you want to look at more involved examples of applescripting, look at the standard -modules findertools and nsremote, or (possibly better, as it -is more involved) fullbuild from the Mac:scripts folder. -

- -

Alternatives

- -

Mac OS X

- -

-Under Mac OS X, the above still works, but with some new difficulties. -The application package structure can hide the ‘AETE’ or -‘AEUT’ resource from gensuitemodule, so that, -for example, it cannot generate an OSA interface to iTunes. Script -Editor gets at the dictionary of such programs using a ‘Get -AETE’ AppleEvent, if someone wants to donate code to use the same -method for gensuitemodule: by all means! -

- -

-One alternative is available through the Unix command line version of python. -Apple has provided the osacompile and osascript tools, -which can be used to compile and execute scripts written in OSA languages. See the -man pages for more details. -

- - - - diff --git a/project/jni/python/src/Mac/Demo/applescript/Disk_Copy/Special_Events.py b/project/jni/python/src/Mac/Demo/applescript/Disk_Copy/Special_Events.py deleted file mode 100644 index a2b09107d..000000000 --- a/project/jni/python/src/Mac/Demo/applescript/Disk_Copy/Special_Events.py +++ /dev/null @@ -1,424 +0,0 @@ -"""Suite Special Events: Commands for mounting Disk Copy images -Level 1, version 1 - -Generated from Macintosh HD:Hulpprogramma's:Disk Copy -AETE/AEUT resource version 1/0, language 0, script 0 -""" - -import aetools -import MacOS - -_code = 'ddsk' - -class Special_Events_Events: - - _argmap_mount = { - 'access_mode' : 'Acss', - 'checksum_verification' : 'VChk', - 'signature_verification' : 'VSig', - 'RAM_caching' : 'Cach', - } - - def mount(self, _object, _attributes={}, **_arguments): - """mount: Mounts an Disk Copy image as a disk volume - Required argument: a reference to the disk image to be mounted - Keyword argument access_mode: the access mode for mounted volume (default is "any", i.e. best possible) - Keyword argument checksum_verification: Verify the checksum before mounting? - Keyword argument signature_verification: Verify the DigiSignŽ signature before mounting? - Keyword argument RAM_caching: Cache the disk image in RAM? (if omitted, don't cache) - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: a reference to mounted disk - """ - _code = 'ddsk' - _subcode = 'Moun' - - aetools.keysubst(_arguments, self._argmap_mount) - _arguments['----'] = _object - - aetools.enumsubst(_arguments, 'Acss', _Enum_Acss) - aetools.enumsubst(_arguments, 'VChk', _Enum_bool) - aetools.enumsubst(_arguments, 'VSig', _Enum_bool) - aetools.enumsubst(_arguments, 'Cach', _Enum_bool) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_execute_DiskScript = { - 'checksum_verification' : 'VChk', - 'signature_verification' : 'VSig', - } - - def execute_DiskScript(self, _object, _attributes={}, **_arguments): - """execute DiskScript: Executes a Disk Copy-specific DiskScript - Required argument: a reference to the DiskScript to execute - Keyword argument checksum_verification: Should checksums be verified when mounting images referenced in the DiskScript? - Keyword argument signature_verification: Should the DigiSignŽ signature of the DiskScript and the images it references be verified? - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'ddsk' - _subcode = 'XEQd' - - aetools.keysubst(_arguments, self._argmap_execute_DiskScript) - _arguments['----'] = _object - - aetools.enumsubst(_arguments, 'VChk', _Enum_bool) - aetools.enumsubst(_arguments, 'VSig', _Enum_bool) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def unmount(self, _object, _attributes={}, **_arguments): - """unmount: Unmount and eject (if necessary) a volume - Required argument: a reference to disk to be unmounted (and ejected) - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'ddsk' - _subcode = 'Umnt' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_create = { - 'saving_as' : 'SvAs', - 'logical_blocks' : 'Blks', - 'zeroing' : 'Zero', - 'leave_image_mounted' : 'Moun', - 'filesystem' : 'Fsys', - } - - def create(self, _object, _attributes={}, **_arguments): - """create: Create a new Disk Copy document - Required argument: the name of the volume to create - Keyword argument saving_as: the disk image to be created - Keyword argument logical_blocks: the number of logical blocks - Keyword argument zeroing: Should all blocks on the disk be set to zero? - Keyword argument leave_image_mounted: Should the image be mounted after it is created? - Keyword argument filesystem: file system to use (Mac OS Standard/compatible, Mac OS Enhanced) - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: a reference to newly created disk image (or newly mounted disk) - """ - _code = 'ddsk' - _subcode = 'Crea' - - aetools.keysubst(_arguments, self._argmap_create) - _arguments['----'] = _object - - aetools.enumsubst(_arguments, 'SvAs', _Enum_fss_) - aetools.enumsubst(_arguments, 'Blks', _Enum_long) - aetools.enumsubst(_arguments, 'Zero', _Enum_bool) - aetools.enumsubst(_arguments, 'Moun', _Enum_bool) - aetools.enumsubst(_arguments, 'Fsys', _Enum_Fsys) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def verify_checksum(self, _object, _attributes={}, **_arguments): - """verify checksum: Verify the checksum of a Disk Copy 4.2 or a Disk Copy 6.0 read-only document - Required argument: the disk image to be verified - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: the result of the checksum verification - """ - _code = 'ddsk' - _subcode = 'Vcrc' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def verify_signature(self, _object, _attributes={}, **_arguments): - """verify signature: Verify the DigiSignŽ signature for a Disk Copy document - Required argument: the disk image to be verified - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: Is the DigiSignŽ signature valid? - """ - _code = 'ddsk' - _subcode = 'Vsig' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_sign_image = { - 'using_signer' : 'Sinr', - } - - def sign_image(self, _object, _attributes={}, **_arguments): - """sign image: Add a DigiSignŽ signature to a Disk Copy document - Required argument: the disk image to be signed - Keyword argument using_signer: a reference to signer file to use - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'ddsk' - _subcode = 'Asig' - - aetools.keysubst(_arguments, self._argmap_sign_image) - _arguments['----'] = _object - - aetools.enumsubst(_arguments, 'Sinr', _Enum_alis) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_create_a_floppy_from = { - 'signature_verification' : 'VSig', - 'erase_confirmation' : 'Cfrm', - 'make_multiple_floppies' : 'Mult', - } - - def create_a_floppy_from(self, _object, _attributes={}, **_arguments): - """create a floppy from: create a floppy disk from a Disk Copy document - Required argument: the disk image to make a floppy from - Keyword argument signature_verification: Should the DigiSignŽ signature be verified before creating a floppy disk? - Keyword argument erase_confirmation: Should the user be asked to confirm the erasure of the previous contents of floppy disks? - Keyword argument make_multiple_floppies: Should the user be prompted to create multiple floppy disks? - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'ddsk' - _subcode = 'Bfpy' - - aetools.keysubst(_arguments, self._argmap_create_a_floppy_from) - _arguments['----'] = _object - - aetools.enumsubst(_arguments, 'VSig', _Enum_bool) - aetools.enumsubst(_arguments, 'Cfrm', _Enum_bool) - aetools.enumsubst(_arguments, 'Mult', _Enum_bool) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_check_image = { - 'details' : 'ChDe', - } - - def check_image(self, _object, _attributes={}, **_arguments): - """check image: Check the disk imageÕs internal data structures for any inconsistencies. Works on NDIF, Disk Copy 4.2, DARTŽ, or DiskSet images. - Required argument: the disk image to be verified - Keyword argument details: Should the disk image details be displayed? - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: a record containing a boolean (true/false) value if the image passes consistency tests, and the numbers of warnings and errors - """ - _code = 'ddsk' - _subcode = 'Chek' - - aetools.keysubst(_arguments, self._argmap_check_image) - _arguments['----'] = _object - - aetools.enumsubst(_arguments, 'ChDe', _Enum_bool) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_segment_image = { - 'segment_count' : 'SGCT', - 'segment_size' : 'SGSZ', - 'segment_name' : 'SGNM', - 'image_ID' : 'SGID', - } - - def segment_image(self, _object, _attributes={}, **_arguments): - """segment image: Segment a NDIF R/W or R/O image into smaller pieces - Required argument: the disk image to be segmented - Keyword argument segment_count: the number of image segments to create - Keyword argument segment_size: the size of image segments (in blocks) to create - Keyword argument segment_name: the root name for each image segment file - Keyword argument image_ID: string used to generate a unique image ID to group the segments - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: a list of references to the image segments created - """ - _code = 'ddsk' - _subcode = 'SGMT' - - aetools.keysubst(_arguments, self._argmap_segment_image) - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_create_SMI = { - 'source_images' : 'SMI1', - 'launching_application' : 'SMI2', - 'launching_document' : 'SMI3', - 'version_string' : 'SMI4', - 'checksum_verification' : 'VChk', - 'signature_verification' : 'VSig', - 'image_signing' : 'SImg', - } - - def create_SMI(self, _object, _attributes={}, **_arguments): - """create SMI: Creates a self-mounting image (SMI) from a list of NDIF disk images - Required argument: the self-mounting image to create - Keyword argument source_images: a list of references to sources images - Keyword argument launching_application: the path to an application to launch - Keyword argument launching_document: the path to a document to open - Keyword argument version_string: sets the 'vers' 1 resource of the self-mounting image - Keyword argument checksum_verification: Should the checksum of the source images be verified before creating the SMI? - Keyword argument signature_verification: Should the DigiSignŽ signature of the source images be verified before creating the SMI? - Keyword argument image_signing: Should the SMI be given a digital signature when it is created? - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: a reference to the self-mounting image created - """ - _code = 'ddsk' - _subcode = 'MSMI' - - aetools.keysubst(_arguments, self._argmap_create_SMI) - _arguments['----'] = _object - - aetools.enumsubst(_arguments, 'VChk', _Enum_bool) - aetools.enumsubst(_arguments, 'VSig', _Enum_bool) - aetools.enumsubst(_arguments, 'SImg', _Enum_bool) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - -class Verify_Checksum_reply_record(aetools.ComponentItem): - """Verify Checksum reply record - """ - want = 'Rcrc' -class validity(aetools.NProperty): - """validity - true if checksum is valid """ - which = 'Vlid' - want = 'bool' -class expected_checksum(aetools.NProperty): - """expected checksum - checksum value stored in the image header (in hexadecimal) """ - which = 'crcE' - want = 'TEXT' -class calculated_checksum(aetools.NProperty): - """calculated checksum - checksum value actually calculated (in hexadecimal) """ - which = 'crcA' - want = 'TEXT' - -class Check_Image_reply_record(aetools.ComponentItem): - """Check Image reply record - """ - want = 'Rchk' -class consistency(aetools.NProperty): - """consistency - Does the image pass consistency checks? """ - which = 'Rch1' - want = 'bool' -class error_count(aetools.NProperty): - """error count - the number of errors recorded """ - which = 'Rch2' - want = 'long' -class warning_count(aetools.NProperty): - """warning count - the number of warnings recorded """ - which = 'Rch3' - want = 'long' -Verify_Checksum_reply_record._propdict = { - 'validity' : validity, - 'expected_checksum' : expected_checksum, - 'calculated_checksum' : calculated_checksum, -} -Verify_Checksum_reply_record._elemdict = { -} -Check_Image_reply_record._propdict = { - 'consistency' : consistency, - 'error_count' : error_count, - 'warning_count' : warning_count, -} -Check_Image_reply_record._elemdict = { -} -_Enum_Acss = { - 'read_and_write' : 'RdWr', # read/write access - 'read_only' : 'Rdxx', # read-only access - 'any' : 'Anyx', # best possible access -} - -_Enum_Fsys = { - 'Mac_OS_Standard' : 'Fhfs', # classic HFS file system - 'compatible_Mac_OS_Extended' : 'Fhf+', # new HFS+ file system -} - -_Enum_alis = None # XXXX enum alis not found!! -_Enum_fss_ = None # XXXX enum fss not found!! -_Enum_long = None # XXXX enum long not found!! -_Enum_bool = None # XXXX enum bool not found!! - -# -# Indices of types declared in this module -# -_classdeclarations = { - 'Rchk' : Check_Image_reply_record, - 'Rcrc' : Verify_Checksum_reply_record, -} - -_propdeclarations = { - 'crcE' : expected_checksum, - 'Rch2' : error_count, - 'crcA' : calculated_checksum, - 'Rch3' : warning_count, - 'Vlid' : validity, - 'Rch1' : consistency, -} - -_compdeclarations = { -} - -_enumdeclarations = { - 'Acss' : _Enum_Acss, - 'Fsys' : _Enum_Fsys, -} diff --git a/project/jni/python/src/Mac/Demo/applescript/Disk_Copy/Standard_Suite.py b/project/jni/python/src/Mac/Demo/applescript/Disk_Copy/Standard_Suite.py deleted file mode 100644 index 455e78dfa..000000000 --- a/project/jni/python/src/Mac/Demo/applescript/Disk_Copy/Standard_Suite.py +++ /dev/null @@ -1,477 +0,0 @@ -"""Suite Standard Suite: Common terms for most applications -Level 1, version 1 - -Generated from Macintosh HD:Hulpprogramma's:Disk Copy -AETE/AEUT resource version 1/0, language 0, script 0 -""" - -import aetools -import MacOS - -_code = 'Core' - -class Standard_Suite_Events: - - _argmap_save = { - '_in' : 'kfil', - 'using_format' : 'SvAs', - 'checksum_verification' : 'VChk', - 'signature_verification' : 'VSig', - 'image_signing' : 'SImg', - 'leave_image_mounted' : 'Moun', - 'percent_free_space' : 'Slop', - 'logical_blocks' : 'Blks', - 'zeroing' : 'Zero', - } - - def save(self, _object, _attributes={}, **_arguments): - """save: Save an object - Required argument: the source object - Keyword argument _in: the target object - Keyword argument using_format: the format for the target - Keyword argument checksum_verification: Should the checksum be verified before saving? - Keyword argument signature_verification: Should the DigiSignŽ signature be verified before saving? - Keyword argument image_signing: Should the image be signed? - Keyword argument leave_image_mounted: Should the image be mounted after saving? - Keyword argument percent_free_space: percent free space to reserve (for image folder operation, 0-255%) - Keyword argument logical_blocks: number of logical blocks in the image (for image folder operation) - Keyword argument zeroing: Should all the blocks in the image be set to zeros? (for image folder operation) - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: the result of the save operation - """ - _code = 'core' - _subcode = 'save' - - aetools.keysubst(_arguments, self._argmap_save) - _arguments['----'] = _object - - aetools.enumsubst(_arguments, 'kfil', _Enum_obj_) - aetools.enumsubst(_arguments, 'SvAs', _Enum_SvAs) - aetools.enumsubst(_arguments, 'VChk', _Enum_bool) - aetools.enumsubst(_arguments, 'VSig', _Enum_bool) - aetools.enumsubst(_arguments, 'SImg', _Enum_bool) - aetools.enumsubst(_arguments, 'Moun', _Enum_bool) - aetools.enumsubst(_arguments, 'Slop', _Enum_long) - aetools.enumsubst(_arguments, 'Blks', _Enum_long) - aetools.enumsubst(_arguments, 'Zero', _Enum_bool) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def do_script(self, _object, _attributes={}, **_arguments): - """do script: Execute an attached script located in the folder "Scripts" - Required argument: the script to be executed - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'core' - _subcode = 'dosc' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - -class application(aetools.ComponentItem): - """application - The Disk Copy application """ - want = 'capp' -class version(aetools.NProperty): - """version - the version of this application """ - which = 'vers' - want = 'vers' -class name(aetools.NProperty): - """name - the name of this application """ - which = 'pnam' - want = 'TEXT' -class comment(aetools.NProperty): - """comment - the comment associated with the application """ - which = 'comt' - want = 'TEXT' -class driver_version(aetools.NProperty): - """driver version - the version of the disk image driver """ - which = 'dVer' - want = 'vers' -class nonejectable_mode(aetools.NProperty): - """nonejectable mode - Should mounted images be non-ejectable? """ - which = 'otto' - want = 'bool' -class save_log_file(aetools.NProperty): - """save log file - Should the log file be saved on disk? """ - which = 'PSaL' - want = 'bool' -class use_speech(aetools.NProperty): - """use speech - Should Disk Copy use spoken feedback? """ - which = 'PTlk' - want = 'bool' -class smart_Save_As(aetools.NProperty): - """smart Save As - Should the Save As... dialog box automatically go to the right folder? """ - which = 'PSSP' - want = 'bool' -class checksum_verification(aetools.NProperty): - """checksum verification - Should image checksums be verified? """ - which = 'PVeC' - want = 'bool' -class signature_verification(aetools.NProperty): - """signature verification - Should digital signatures be verified? """ - which = 'PVeS' - want = 'bool' -class exclude_DiskScripts(aetools.NProperty): - """exclude DiskScripts - Should images referenced in DiskScripts/DiskSets be excluded from verification? """ - which = 'PExD' - want = 'bool' -class exclude_remote_images(aetools.NProperty): - """exclude remote images - Should images that are located on network volumes be excluded from verification? """ - which = 'PExR' - want = 'bool' -class image_signing(aetools.NProperty): - """image signing - Should images be signed with a digital signature? """ - which = 'PSiI' - want = 'bool' -class leave_image_mounted(aetools.NProperty): - """leave image mounted - Should images be mounted after they are created? """ - which = 'PMoA' - want = 'bool' -class erase_confirmation(aetools.NProperty): - """erase confirmation - Should the user be required to confirm commands that erase disks? """ - which = 'PCoE' - want = 'bool' -class zeroing(aetools.NProperty): - """zeroing - Should all blocks of a new image be set to zero? """ - which = 'PZeB' - want = 'bool' -class default_create_size(aetools.NProperty): - """default create size - the default size for a new image, in blocks (512 bytes per block) """ - which = 'PDeS' - want = 'long' -class default_create_name(aetools.NProperty): - """default create name - the default volume name for a new image """ - which = 'PDeN' - want = 'TEXT' -class make_multiple_floppies(aetools.NProperty): - """make multiple floppies - Should the user be prompted to make multiple floppy disk images at a time? """ - which = 'PBuM' - want = 'bool' -class auto_image_upon_insert(aetools.NProperty): - """auto image upon insert - Should a newly-inserted disk automatically be processed into an image? """ - which = 'Paim' - want = 'bool' -class eject_after_auto_image(aetools.NProperty): - """eject after auto image - Should auto-imaged disks be ejected afterwards? """ - which = 'Pejc' - want = 'bool' -class auto_copy_upon_floppy_insert(aetools.NProperty): - """auto copy upon floppy insert - Instead of auto-imaging, should newly-inserted floppy disks be copied? """ - which = 'Pcpf' - want = 'bool' -class volume_suffix(aetools.NProperty): - """volume suffix - the default volume name suffix """ - which = 'PDiE' - want = 'TEXT' -class image_suffix(aetools.NProperty): - """image suffix - the default image name suffix """ - which = 'PImE' - want = 'TEXT' -class default_file_system(aetools.NProperty): - """default file system - the default file system type for new blank images """ - which = 'Pfsy' - want = 'Fsys' -class default_image_format(aetools.NProperty): - """default image format - the default image file format """ - which = 'Pdfm' - want = 'SvAs' - -class disk(aetools.ComponentItem): - """disk - A mounted volume """ - want = 'Disk' - -name = name - -comment = comment -class locked(aetools.NProperty): - """locked - Is the disk locked? """ - which = 'islk' - want = 'bool' -class creation_date(aetools.NProperty): - """creation date - the creation date of disk """ - which = 'ascd' - want = 'ldt ' -class modification_date(aetools.NProperty): - """modification date - the modification date of disk """ - which = 'asmo' - want = 'ldt ' -class crc32_checksum(aetools.NProperty): - """crc32 checksum - the crc-32 checksum of the disk """ - which = 'Xcrc' - want = 'TEXT' -class disk_copy_4_2e_2_checksum(aetools.NProperty): - """disk copy 4.2 checksum - the Disk Copy 4.2 checksum of the disk """ - which = 'Xc42' - want = 'TEXT' -class block_count(aetools.NProperty): - """block count - the number of blocks on disk """ - which = 'Xblk' - want = 'long' -class file_system(aetools.NProperty): - """file system - the file system used on disk """ - which = 'Xfsi' - want = 'TEXT' - -class folder(aetools.ComponentItem): - """folder - A folder or directory on a disk """ - want = 'Fold' - -name = name - -comment = comment - -creation_date = creation_date - -modification_date = modification_date - -class disk_image(aetools.ComponentItem): - """disk image - A disk image file """ - want = 'DImg' - -name = name - -comment = comment - -locked = locked - -creation_date = creation_date - -modification_date = modification_date -class file_format(aetools.NProperty): - """file format - the format of the disk image file """ - which = 'Ifmt' - want = 'TEXT' -class signed(aetools.NProperty): - """signed - Does the disk image have a DigiSignŽ signature? """ - which = 'Isin' - want = 'bool' -class compressed(aetools.NProperty): - """compressed - Is the disk image compressed? """ - which = 'Icom' - want = 'bool' -class segmented(aetools.NProperty): - """segmented - Is the disk image segmented? """ - which = 'Iseg' - want = 'bool' -class segments(aetools.NProperty): - """segments - a list of references to other segments that make up a complete image """ - which = 'Isg#' - want = 'fss ' -class disk_name(aetools.NProperty): - """disk name - the name of the disk this image represents """ - which = 'Idnm' - want = 'TEXT' - -crc32_checksum = crc32_checksum - -disk_copy_4_2e_2_checksum = disk_copy_4_2e_2_checksum - -block_count = block_count - -file_system = file_system -class data_fork_size(aetools.NProperty): - """data fork size - the size (in bytes) of the data fork of the disk image """ - which = 'Idfk' - want = 'long' -class resource_fork_size(aetools.NProperty): - """resource fork size - the size (in bytes) of the resource fork of the disk image """ - which = 'Irfk' - want = 'long' - -class Save_reply_record(aetools.ComponentItem): - """Save reply record - Result from the save operation """ - want = 'cpyR' -class resulting_target_object(aetools.NProperty): - """resulting target object - a reference to the target object after it has been saved """ - which = 'rcpO' - want = 'obj ' -class copy_type(aetools.NProperty): - """copy type - the way in which the target object was saved """ - which = 'rcpT' - want = 'rcpT' -application._propdict = { - 'version' : version, - 'name' : name, - 'comment' : comment, - 'driver_version' : driver_version, - 'nonejectable_mode' : nonejectable_mode, - 'save_log_file' : save_log_file, - 'use_speech' : use_speech, - 'smart_Save_As' : smart_Save_As, - 'checksum_verification' : checksum_verification, - 'signature_verification' : signature_verification, - 'exclude_DiskScripts' : exclude_DiskScripts, - 'exclude_remote_images' : exclude_remote_images, - 'image_signing' : image_signing, - 'leave_image_mounted' : leave_image_mounted, - 'erase_confirmation' : erase_confirmation, - 'zeroing' : zeroing, - 'default_create_size' : default_create_size, - 'default_create_name' : default_create_name, - 'make_multiple_floppies' : make_multiple_floppies, - 'auto_image_upon_insert' : auto_image_upon_insert, - 'eject_after_auto_image' : eject_after_auto_image, - 'auto_copy_upon_floppy_insert' : auto_copy_upon_floppy_insert, - 'volume_suffix' : volume_suffix, - 'image_suffix' : image_suffix, - 'default_file_system' : default_file_system, - 'default_image_format' : default_image_format, -} -application._elemdict = { -} -disk._propdict = { - 'name' : name, - 'comment' : comment, - 'locked' : locked, - 'creation_date' : creation_date, - 'modification_date' : modification_date, - 'crc32_checksum' : crc32_checksum, - 'disk_copy_4_2e_2_checksum' : disk_copy_4_2e_2_checksum, - 'block_count' : block_count, - 'file_system' : file_system, -} -disk._elemdict = { -} -folder._propdict = { - 'name' : name, - 'comment' : comment, - 'creation_date' : creation_date, - 'modification_date' : modification_date, -} -folder._elemdict = { -} -disk_image._propdict = { - 'name' : name, - 'comment' : comment, - 'locked' : locked, - 'creation_date' : creation_date, - 'modification_date' : modification_date, - 'file_format' : file_format, - 'signed' : signed, - 'compressed' : compressed, - 'segmented' : segmented, - 'segments' : segments, - 'disk_name' : disk_name, - 'crc32_checksum' : crc32_checksum, - 'disk_copy_4_2e_2_checksum' : disk_copy_4_2e_2_checksum, - 'block_count' : block_count, - 'file_system' : file_system, - 'data_fork_size' : data_fork_size, - 'resource_fork_size' : resource_fork_size, -} -disk_image._elemdict = { -} -Save_reply_record._propdict = { - 'resulting_target_object' : resulting_target_object, - 'copy_type' : copy_type, -} -Save_reply_record._elemdict = { -} -_Enum_UIAc = { - 'never_interact' : 'eNvr', # DonÕt allow any interaction at all - 'interact_with_self' : 'eInS', # Only allow interaction from internal events - 'interact_with_local' : 'eInL', # Allow interaction from any event originating on this machine - 'interact_with_all' : 'eInA', # Allow interaction from network events -} - -_Enum_SvAs = { - 'NDIF_RW' : 'RdWr', # read/write NDIF disk image - 'NDIF_RO' : 'Rdxx', # read-only NDIF disk image - 'NDIF_Compressed' : 'ROCo', # compressed NDIF disk image - 'Disk_Copy_4_2e_2' : 'DC42', # Disk Copy 4.2 disk image -} - -_Enum_rcpT = { - 'block_disk_copy' : 'cpBl', # block-by-block disk-level copy - 'files_and_file_ID_copy' : 'cpID', # all files including desktop databases and file IDÕs - 'files_and_desktop_info' : 'cpDT', # all files and most desktop information - 'files_only' : 'cpFI', # all files but no desktop information - 'disk_image_conversion' : 'cpCV', # disk image format conversion - 'disk_image_creation' : 'cpCR', # disk image creation -} - -_Enum_long = None # XXXX enum long not found!! -_Enum_bool = None # XXXX enum bool not found!! -_Enum_obj_ = None # XXXX enum obj not found!! - -# -# Indices of types declared in this module -# -_classdeclarations = { - 'DImg' : disk_image, - 'capp' : application, - 'Disk' : disk, - 'Fold' : folder, - 'cpyR' : Save_reply_record, -} - -_propdeclarations = { - 'Xcrc' : crc32_checksum, - 'PDeS' : default_create_size, - 'Idnm' : disk_name, - 'PSSP' : smart_Save_As, - 'Pcpf' : auto_copy_upon_floppy_insert, - 'pnam' : name, - 'Isin' : signed, - 'otto' : nonejectable_mode, - 'PExD' : exclude_DiskScripts, - 'Iseg' : segmented, - 'islk' : locked, - 'asmo' : modification_date, - 'PTlk' : use_speech, - 'Pfsy' : default_file_system, - 'PVeC' : checksum_verification, - 'Xc42' : disk_copy_4_2e_2_checksum, - 'rcpO' : resulting_target_object, - 'Paim' : auto_image_upon_insert, - 'comt' : comment, - 'PCoE' : erase_confirmation, - 'dVer' : driver_version, - 'PDeN' : default_create_name, - 'PBuM' : make_multiple_floppies, - 'rcpT' : copy_type, - 'PDiE' : volume_suffix, - 'Ifmt' : file_format, - 'Pdfm' : default_image_format, - 'ascd' : creation_date, - 'Pejc' : eject_after_auto_image, - 'PZeB' : zeroing, - 'PExR' : exclude_remote_images, - 'PImE' : image_suffix, - 'PVeS' : signature_verification, - 'PSaL' : save_log_file, - 'Xblk' : block_count, - 'PMoA' : leave_image_mounted, - 'Isg#' : segments, - 'Irfk' : resource_fork_size, - 'Icom' : compressed, - 'Xfsi' : file_system, - 'Idfk' : data_fork_size, - 'vers' : version, - 'PSiI' : image_signing, -} - -_compdeclarations = { -} - -_enumdeclarations = { - 'SvAs' : _Enum_SvAs, - 'UIAc' : _Enum_UIAc, - 'rcpT' : _Enum_rcpT, -} diff --git a/project/jni/python/src/Mac/Demo/applescript/Disk_Copy/Utility_Events.py b/project/jni/python/src/Mac/Demo/applescript/Disk_Copy/Utility_Events.py deleted file mode 100644 index 383075337..000000000 --- a/project/jni/python/src/Mac/Demo/applescript/Disk_Copy/Utility_Events.py +++ /dev/null @@ -1,213 +0,0 @@ -"""Suite Utility Events: Commands that allow the user to select Disk Copy files -Level 1, version 1 - -Generated from Macintosh HD:Hulpprogramma's:Disk Copy -AETE/AEUT resource version 1/0, language 0, script 0 -""" - -import aetools -import MacOS - -_code = 'ddsk' - -class Utility_Events_Events: - - _argmap_select_disk_image = { - 'with_prompt' : 'SELp', - } - - def select_disk_image(self, _no_object=None, _attributes={}, **_arguments): - """select disk image: Prompt the user to select a disk image - Keyword argument with_prompt: the prompt string to be displayed - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: a reference to a disk image - """ - _code = 'UTIL' - _subcode = 'SEL1' - - aetools.keysubst(_arguments, self._argmap_select_disk_image) - if _no_object is not None: raise TypeError, 'No direct arg expected' - - aetools.enumsubst(_arguments, 'SELp', _Enum_TEXT) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_select_DiskScript = { - 'with_prompt' : 'SELp', - } - - def select_DiskScript(self, _no_object=None, _attributes={}, **_arguments): - """select DiskScript: Prompt the user to select a DiskScript - Keyword argument with_prompt: the prompt string to be displayed - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: a reference to a DiskScript - """ - _code = 'UTIL' - _subcode = 'SEL2' - - aetools.keysubst(_arguments, self._argmap_select_DiskScript) - if _no_object is not None: raise TypeError, 'No direct arg expected' - - aetools.enumsubst(_arguments, 'SELp', _Enum_TEXT) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_select_disk_image_or_DiskScript = { - 'with_prompt' : 'SELp', - } - - def select_disk_image_or_DiskScript(self, _no_object=None, _attributes={}, **_arguments): - """select disk image or DiskScript: Prompt the user to select a disk image or DiskScript - Keyword argument with_prompt: the prompt string to be displayed - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: a reference to disk image or a DiskScript - """ - _code = 'UTIL' - _subcode = 'SEL3' - - aetools.keysubst(_arguments, self._argmap_select_disk_image_or_DiskScript) - if _no_object is not None: raise TypeError, 'No direct arg expected' - - aetools.enumsubst(_arguments, 'SELp', _Enum_TEXT) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_select_floppy_disk_image = { - 'with_prompt' : 'SELp', - } - - def select_floppy_disk_image(self, _no_object=None, _attributes={}, **_arguments): - """select floppy disk image: Prompt the user to select a floppy disk image - Keyword argument with_prompt: the prompt string to be displayed - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: a reference to a floppy disk image - """ - _code = 'UTIL' - _subcode = 'SEL4' - - aetools.keysubst(_arguments, self._argmap_select_floppy_disk_image) - if _no_object is not None: raise TypeError, 'No direct arg expected' - - aetools.enumsubst(_arguments, 'SELp', _Enum_TEXT) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_select_disk = { - 'with_prompt' : 'SELp', - } - - def select_disk(self, _no_object=None, _attributes={}, **_arguments): - """select disk: Prompt the user to select a disk volume - Keyword argument with_prompt: the prompt string to be displayed - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: a reference to the disk - """ - _code = 'UTIL' - _subcode = 'SEL5' - - aetools.keysubst(_arguments, self._argmap_select_disk) - if _no_object is not None: raise TypeError, 'No direct arg expected' - - aetools.enumsubst(_arguments, 'SELp', _Enum_TEXT) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_select_folder = { - 'with_prompt' : 'SELp', - } - - def select_folder(self, _no_object=None, _attributes={}, **_arguments): - """select folder: Prompt the user to select a folder - Keyword argument with_prompt: the prompt string to be displayed - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: a reference to the folder - """ - _code = 'UTIL' - _subcode = 'SEL6' - - aetools.keysubst(_arguments, self._argmap_select_folder) - if _no_object is not None: raise TypeError, 'No direct arg expected' - - aetools.enumsubst(_arguments, 'SELp', _Enum_TEXT) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_log = { - 'time_stamp' : 'TSMP', - } - - def log(self, _object, _attributes={}, **_arguments): - """log: Add a string to the log window - Required argument: the string to add to the log window - Keyword argument time_stamp: Should the log entry be time-stamped? (false if not supplied) - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'UTIL' - _subcode = 'LOG ' - - aetools.keysubst(_arguments, self._argmap_log) - _arguments['----'] = _object - - aetools.enumsubst(_arguments, 'TSMP', _Enum_bool) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.has_key('errn'): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - -_Enum_TEXT = None # XXXX enum TEXT not found!! -_Enum_bool = None # XXXX enum bool not found!! - -# -# Indices of types declared in this module -# -_classdeclarations = { -} - -_propdeclarations = { -} - -_compdeclarations = { -} - -_enumdeclarations = { -} diff --git a/project/jni/python/src/Mac/Demo/applescript/Disk_Copy/__init__.py b/project/jni/python/src/Mac/Demo/applescript/Disk_Copy/__init__.py deleted file mode 100644 index ac5056161..000000000 --- a/project/jni/python/src/Mac/Demo/applescript/Disk_Copy/__init__.py +++ /dev/null @@ -1,35 +0,0 @@ -""" -Package generated from Macintosh HD:Hulpprogramma's:Disk Copy -Resource aete resid 0 -""" -import aetools -Error = aetools.Error -import Standard_Suite -import Special_Events -import Utility_Events - - -_code_to_module = { - 'Core' : Standard_Suite, - 'ddsk' : Special_Events, - 'ddsk' : Utility_Events, -} - - - -_code_to_fullname = { - 'Core' : ('Disk_Copy.Standard_Suite', 'Standard_Suite'), - 'ddsk' : ('Disk_Copy.Special_Events', 'Special_Events'), - 'ddsk' : ('Disk_Copy.Utility_Events', 'Utility_Events'), -} - -from Standard_Suite import * -from Special_Events import * -from Utility_Events import * - - -class Disk_Copy(Standard_Suite_Events, - Special_Events_Events, - Utility_Events_Events, - aetools.TalkTo): - _signature = 'ddsk' diff --git a/project/jni/python/src/Mac/Demo/applescript/makedisk.py b/project/jni/python/src/Mac/Demo/applescript/makedisk.py deleted file mode 100644 index 91210ee35..000000000 --- a/project/jni/python/src/Mac/Demo/applescript/makedisk.py +++ /dev/null @@ -1,15 +0,0 @@ -import Disk_Copy -import macfs -import sys - -talker = Disk_Copy.Disk_Copy(start=1) -talker.activate() -filespec = macfs.FSSpec('my disk image.img') -try: - objref = talker.create('my disk image', saving_as=filespec, leave_image_mounted=1) -except Disk_Copy.Error, arg: - print "ERROR: my disk image:", arg -else: - print 'objref=', objref -print 'Type return to exit-' -sys.stdin.readline() diff --git a/project/jni/python/src/Mac/Demo/example0.html b/project/jni/python/src/Mac/Demo/example0.html deleted file mode 100644 index 4d7854040..000000000 --- a/project/jni/python/src/Mac/Demo/example0.html +++ /dev/null @@ -1,75 +0,0 @@ -Using python to create Macintosh applications, part zero - -

Using python to create Macintosh applications, part zero

-
- -This document will show you how to create a simple mac-style -application using Python. We will glance at how to use file dialogs and -messages.

- -Our example program checktext.py asks -the user for a text file and checks what style end-of-lines the file has. -This may need a little explanation: ASCII text files are almost identical -on different machines, with one exception: -

    -
  • Unix systems terminate lines with the "linefeed" character, 0x0a, -
  • Macintoshes terminate lines with the "carriage return" character, -0x0d and -
  • MSDOS and Windows terminate lines with first a carriage return and then a linefeed. -
- -Let us have a look at the program. The first interesting statement in the main -program is the call to macfs.PromptGetFile. This is one of the routines -that allow you to ask the user to specify a file. You pass it one required -argument, the prompt string. There are up to four optional MacOS file type arguments -you can pass, as 4-byte strings. Specifying no file -type will allow the user to select any file, specifying one or more types restricts -the user to files of this type. File types are explained in most books on the Mac.

- -PromptGetFile returns two values: an FSSpec object and a -success indicator. The FSSpec object is the "official" MacOS way of specifying a -file, more on it later. The success indicator tells you whether the user clicked OK -or Cancel. In the event of Cancel we simply exit back to the finder.

- -PromptGetFile has a number of friends that do similar things: -

    -
  • StandardGetFile is identical to PromptGetFile but -without the prompt. It has up to four optional filetype arguments. -
  • StandardPutFile asks the user for an output file. It will -warn the user when she tries to overwrite an existing file. The routine has one -mandatory argument: a prompt string. Pass the empty string if you do not want a prompt. -
  • GetDirectory asks the user for a folder (or directory, in unix terms). -It has one optional argument: a prompt string. -
-All routines return an FSSpec and a success indicator.

- -There are many things you can do with FSSpec objects (see the -macfs section in the -Python Library Reference -for details), but passing them to open is not -one of them. For this, we first have to convert the FSSpec object to a pathname, with -the as_pathname method. This returns a standard MacOS-style pathname with -colon-separated components. This can then be passed to open. Note that -we call open with mode parameter 'rb': we want to read the file in binary -mode. Python, like C and C++, uses unix-style line endings internally and opening a -file in text mode ('r') would result in conversion of carriage-returns to -linefeeds upon reading. This is something that Mac and DOS programmers are usually aware -of but that never ceases to amaze unix buffs.

- -After we open the file we attempt to read all data into memory. If this fails we use -EasyDialogs.Message to display a message in a standard dialog box and exit. -The EasyDialogs module has a few more useful simple dialog routines, more on that in -example 1.

- -The rest of the code is pretty straightforward: we check that the file actually contains -data, count the number of linefeeds and returns and display a message with our guess of the -end-of-line convention used in the file.

- -The example0 folder has three text files in Mac, Unix and DOS style -for you to try the program on. After that, you can continue with example 1 -or go back to the index to find another interesting topic.

- -


-Jack Jansen, -jack@cwi.nl, 18-July-1996. - diff --git a/project/jni/python/src/Mac/Demo/example0/checktext.py b/project/jni/python/src/Mac/Demo/example0/checktext.py deleted file mode 100644 index 25f71e47c..000000000 --- a/project/jni/python/src/Mac/Demo/example0/checktext.py +++ /dev/null @@ -1,35 +0,0 @@ -"""checktext - Check that a text file has macintosh-style newlines""" - -import sys -import EasyDialogs -import string - -def main(): - pathname = EasyDialogs.AskFileForOpen(message='File to check end-of-lines in:') - if not pathname: - sys.exit(0) - fp = open(pathname, 'rb') - try: - data = fp.read() - except MemoryError: - EasyDialogs.Message('Sorry, file is too big.') - sys.exit(0) - if len(data) == 0: - EasyDialogs.Message('File is empty.') - sys.exit(0) - number_cr = string.count(data, '\r') - number_lf = string.count(data, '\n') - if number_cr == number_lf == 0: - EasyDialogs.Message('File contains no lines.') - if number_cr == 0: - EasyDialogs.Message('File has unix-style line endings') - elif number_lf == 0: - EasyDialogs.Message('File has mac-style line endings') - elif number_cr == number_lf: - EasyDialogs.Message('File probably has MSDOS-style line endings') - else: - EasyDialogs.Message('File has no recognizable line endings (binary file?)') - sys.exit(0) - -if __name__ == '__main__': - main() diff --git a/project/jni/python/src/Mac/Demo/example1.html b/project/jni/python/src/Mac/Demo/example1.html deleted file mode 100644 index 03c99789b..000000000 --- a/project/jni/python/src/Mac/Demo/example1.html +++ /dev/null @@ -1,193 +0,0 @@ -Using python to create Macintosh applications, part one - - -

Using python to create Macintosh applications, part one

-
- -This document will show you how to create a simple mac-style -application using Python. We will glance at how to use dialogs and -resources.

- -The example application we look at will be a simple program with a -dialog that allows you to perform domain name lookups on IP addresses -and hostnames. -The source code and -resource file -for this application are available in the example1 folder (which you will have to download -if you are reading this document over the net and if you want to look -at the resources).

- -We will use the builtin module "socket" that allows a -Python program to perform all sorts of networking functions, and we -will create the user interface around that. You should be able to run -the sample code with the standard Python distribution.

- - -If you are interested in building your own extensions to python you -should check out the companion document Creating Macintosh Python C extensions, -which tells you how to build your own C extension. -

- - -

Creating dialog resources

- -Let us start with the creative bit: building the dialogs and creating -an icon for our program. For this you need ResEdit, and a reasonable -working knowledge of how to use it. "Inside Mac" or various books on -macintosh programming will help here.

- -There is one fine point that deserves to be mentioned here: resource numbering. Because often your -resources will be combined with those that the Python interpreter and -various standard modules need you should give your DLOG and DITL -resources numbers above 512. 128 and below are reserved for Apple, -128-228 are for extensions like Tk, -228-255 for the Python interpreter and 256-511 for standard -modules. If you are writing a module that you will be distributing for -inclusion in other people's programs you may want to register a number -in the 256-511 range, contact Guido or myself or whoever you think is -"in charge" of Python for the Macintosh at the moment. Even though the -application we are writing at the moment will keep its resources in a -separate resource file it is still a good idea to make sure that no -conflicts arise: once you have opened your resource file any attempt -by the interpreter to open a dialog will also search your resource -file.

- -Okay, let's have a look at dnslookup-1.rsrc, our resource file. -The DLOG and accompanying DITL resource both have number 512. Since -ResEdit creates both with default ID=128 you should take care to -change the number on both. The dialog itself is pretty basic: two -buttons (Lookup and Quit), two labels and -two text entry areas, one of which is used for output only. Here's what -the dialog will look like at run time

-

-dialog image -
-

- -

An application with a modal dialog

- -Next, we will have to write the actual application. For this example, -we will use a modal dialog. This means that we will put up the dialog -and go into a loop asking the dialog manager for events (buttons -pushed). We handle the actions requested by the user until the Quit -button is pressed, upon which we exit our loop (and the program). This -way of structuring your program is actually rather antisocial, since -you force the user to do whatever you, the application writer, happen -to want. A modal dialog leaves no way of escape whatsoever (except -command-option-escape), and is usually not a good way to structure -anything but the most simple questions. Even then: how often have you -been confronted with a dialog asking a question that you could not -answer because the data you needed was obscured by the dialog itself? -In the next example we will look at an application that does pretty -much the same as this one but in a more user-friendly way.

- -The code itself is contained in the file dnslookup-1.py. Have -a copy handy before you read on. The file starts off with a -textstring giving a short description. Not many tools do anything with -this as yet, but at some point in the future we will have all -sorts of nifty class browser that will display this string, so just -include it. Just put a short description at the start of each module, -class, method and function. After the initial description and some -comments, we import the modules we need.

- -EasyDialogs is a handy standard -module that provides you with routines that put up common text-only -modal dialogs: -

    -
  • Message(str) -displays the message "str" and an OK button, -
  • AskString(prompt, default) -asks for a string, displays OK and Cancel buttons, -
  • AskYesNoCancel(question, default) -displays a question and Yes, No and Cancel buttons. -
- -Res is a pretty complete interface to -the MacOS Resource Manager, described fully in Inside Mac. There is -currently no documentation of it, but the Apple documentation (or -Think Ref) will help you on your way if you remember two points: -
    -
  • Resources are implemented as Python objects, and each routine -with a resource first argument is implemented as a python method. -
  • When in doubt about the arguments examine the routines docstring, -as in print Res.OpenResFile.__doc__ -
- -Similarly, Dlg is an interface to the -Dialog manager (with Dialogs being implemented as python objects and -routines with Dialog arguments being methods). The sys module you -know, I hope. The string module is an often used module that enables -you to perform many string related operations. In this case however, we -are only using the "digits" constant from the string module. We could -have simply defined "digits" as "0123456789". The socket module enables -us to perform the domain name lookups. We -use two calls from it: -
    -
  • gethostbyaddr() -returns the hostname associated with an IP address -
  • gethostbyname() -returns the IP address associated with a hostname -
- -Next in the source file we get definitions for our dialog resource -number and for the item numbers in our dialog. These should match the -situation in our resource file dnslookup-1.rsrc, -obviously.

- -On to the main program. We start off with opening our resource file, -which should live in the same folder as the python source. If we -cannot open it we use EasyDialogs to print a message and -exit. You can try it: just move the resource file somewhere else for a -moment. Then we call do_dialog() to do the real work.

- -Do_dialog() uses Dlg.GetNewDialog() to open -a dialog window initialized from 'DLOG' resource ID_MAIN and putting -it on screen in the frontmost position. Next, we go into a loop, -calling Dlg.ModalDialog() to wait for the next user -action. ModalDialog() will return us the item number that -the user has clicked on (or otherwise activated). It will handle a few -slightly more complicated things also, like the user typing into -simple textfields, but it will not do things like updating -the physical appearance of radio buttons, etc. See Inside Mac or -another programming guide for how to handle this -yourself. Fortunately, our simple application doesn't have to bother with this, -since buttons and textfields are the only active elements we have. So, we do a -simple switch on item number and call the appropriate routine to implement the -action requested. Upon the user pressing "Quit" we simply leave the loop and, -hence, do_dialog(). This will cause the python dialog object -my_dlg to be deleted and the on-screen dialog to disappear.

- -Time for a warning: be very careful what -you do as long as a dialog is on-screen. Printing something, for -instance, may suddenly cause the standard output window to appear over -the dialog, and since we took no measures to redraw the dialog it will -become very difficult to get out of the dialog. Also, command-period -may or may not work in this situation. I have also seen crashes in -such a situation, probably due to the multiple event loops involved or -some oversight in the interpreter. You have been warned.

- -The implementation of the "Lookup" command can use a bit more -explaining: we get the necessary information with dnslookup() -but now we have to update the on-screen dialog to present this -information to the user. The GetDialogItem() method of -the dialog returns three bits of information about the given item: its -type, its data handle and its rect (the on-screen x,y,w,h -coordinates). We are only interested in the data handle here, on which -we call SetDialogItemText() to set our new text. Note -here that python programmers need not bother with the C-string versus -pascal-string controversy: the python glue module knows what is needed -and converts the python string to the correct type.

- -And that concludes our first example of the use of resources and -dialogs. Next, you could have a look at the source of EasyDialogs for -some examples of using input fields and filterprocs. Or, go on with -reading the second part of this document -to see how to implement a better version of this application.

- - - - diff --git a/project/jni/python/src/Mac/Demo/example1/dnslookup-1.gif b/project/jni/python/src/Mac/Demo/example1/dnslookup-1.gif deleted file mode 100644 index 3cd70b2a1d009d47993afda5c3f72d6176efa355..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2570 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 HguxmBNIn3~ diff --git a/project/jni/python/src/Mac/Demo/example1/dnslookup-1.py b/project/jni/python/src/Mac/Demo/example1/dnslookup-1.py deleted file mode 100644 index 6eb2c73f7..000000000 --- a/project/jni/python/src/Mac/Demo/example1/dnslookup-1.py +++ /dev/null @@ -1,55 +0,0 @@ -"""Sample program performing domain name lookups and showing off EasyDialogs, -Res and Dlg in the process""" - -import EasyDialogs -from Carbon import Res -from Carbon import Dlg -import socket -import string -import macresource -# -# Definitions for our resources -ID_MAIN=512 - -ITEM_LOOKUP_ENTRY=1 -ITEM_RESULT=2 -ITEM_LOOKUP_BUTTON=3 -ITEM_QUIT_BUTTON=4 - -def main(): - """Main routine: open resource file, call dialog handler""" - macresource.need("DLOG", ID_MAIN, "dnslookup-1.rsrc") - do_dialog() - -def do_dialog(): - """Post dialog and handle user interaction until quit""" - my_dlg = Dlg.GetNewDialog(ID_MAIN, -1) - while 1: - n = Dlg.ModalDialog(None) - if n == ITEM_LOOKUP_BUTTON: - tp, h, rect = my_dlg.GetDialogItem(ITEM_LOOKUP_ENTRY) - txt = Dlg.GetDialogItemText(h) - - tp, h, rect = my_dlg.GetDialogItem(ITEM_RESULT) - Dlg.SetDialogItemText(h, dnslookup(txt)) - elif n == ITEM_QUIT_BUTTON: - break - -def dnslookup(str): - """ Perform DNS lookup on str. If first character of digit is numeric, - assume that str contains an IP address. Otherwise, assume that str - contains a hostname.""" - if str == '': str = ' ' - if str[0] in string.digits: - try: - value = socket.gethostbyaddr(str)[0] - except: - value = 'Lookup failed' - else: - try: - value = socket.gethostbyname(str) - except: - value = 'Lookup failed' - return value - -main() diff --git a/project/jni/python/src/Mac/Demo/example1/dnslookup-1.rsrc b/project/jni/python/src/Mac/Demo/example1/dnslookup-1.rsrc deleted file mode 100644 index 6cf9fe98884e2cc8a872bd5fcaef62122d958ba5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmZQz6=PsvV!#B<3=9mM3=9l*3=9kk3=9lh3=9l$3=9k`3=s863=E9Fii(SpgMwXM z7#SFX7@lJq0#VDzz`(#bn}LA=gyZ*s1WTBYn6|E)7b^)7Wt#cH zZ!PC6+4z5tgWNMY_T~M%m(TEDqK?ri-Cl=Lz;7+bD%<$~zxL(*|CLt-67k6U|G}Q! zZ!O0rwKa?t5LNnm|3CPx<=AB*ueR>r8!wkMAKMxR#(#HEWo_gC-LlgAcPBx~X*tLw zkS=>021Y*y28J94RTt$i*|nhk=1X mj){SRmw|zy0Ad`7WME+4pWeU&i7l7R#GL$eZeNfc5HUsing python to create Macintosh applications, part two - -

Using python to create Macintosh applications, part two

-
- -In this document we rewrite the application of the previous example to use modeless dialogs. We -will use an application framework, and we will have a look at creating -applets, standalone applications written in Python. The source code and -resource file are available in the folder -example2.

- -Again, we start with ResEdit to create our dialogs. Not only do we -want a main dialog this time but also an "About" dialog. This example is less -than complete since we do not provide a BNDL resource -and related stuff that an application cannot be without. We are able to do this -when building a python applet since BuildApplet will substitute default resources -for BNDL, etc. when none are supplied (See below.) -"Inside Mac" or various -books on Macintosh programming will help here. Also, you can refer to -the resource files provided in the Python source distribution for some -of the python-specific points of BNDL programming: the -"appletbundle.rsrc" file is what is used for creating applets if you -don't provide your own resource file.

- -When creating your own BNDL resouorces, keep in mind that the Finder gets -confused if you have more than one application with the same signature. This may be due -to some incorrectness on the side of "BuildApplet", I am not sure. There is one -case when you definitely need a unique signature: when you create an applet that -has its own data files and you want the user to be able to start your -applet by double-clicking one of the datafiles.

- -Let's have a look at dnslookup-2.rsrc, our resource file. Dialog 512 is the -main window which has one button (Lookup), two labels and -two text entry areas, one of which is used for output only. The "Quit" -button has disappeared, because its function is handled by a menu choice. Here's -what it will look like at run time:

-

-dialog image -
-

- -

A modeless dialog application using FrameWork

- -On to the source code in dnslookup-2.py. The -start is similar to our previous example program dnslookup-1.py, with -one extra module being imported. To make life more simple we will use -the FrameWork module, a nifty piece of code that handles -all the gory Mac details of event loop programming, menubar -installation and all the other code that is the same for every Mac -program in the world. Like most standard modules, FrameWork will run -some sample test code when you invoke it as a main program, so try it -now. It will create a menu bar with an Apple menu with the about box -and a "File" menu with some pythonesque choices (which do nothing -interesting, by the way) and a "Quit" command that works.

- -

-If you have not used FrameWork before you may want to -first take a look at the Pathetic EDitor -example, which builds a minimal text editor using FrameWork and TextEdit. -On the other hand: we don't use many features of FrameWork, so you could -also continue with this document. -
- -After the imports we get the definitions of resource-IDs in our -resource file, slightly changed from the previous version of our -program. The main program is also -similar to our previous version, with one important exception: we -first check to see whether our resource is available before opening -the resource file. Why is this? Because later, when we will have -converted the script to an applet, our resources will be available in -the applet file and we don't need the separate resource file -anymore.

- -Next comes the definition of our main class, -DNSLookup, which inherits -FrameWork.Application. The Application class handles the -menu bar and the main event loop and event dispatching. In the -__init__ routine we first let the base class initialize -itself, then we create our modeless dialog and finally we jump into -the main loop. The main loop continues until we call self._quit, -which we will do when the user selects "Quit". When we create -the instance of MyDialog (which inherits -DialogWindow, which inherits Window) we pass -a reference to the application object, this reference is used to tell -Application about our new window. This enables the event loop to keep -track of all windows and dispatch things like update events and mouse -clicks.

- -The makeusermenus() method (which is called sometime -during the Application __init__ routine) creates a File -menu with a Quit command (shortcut command-Q), which will callback to -our quit() method. Quit(), in turn, calls _quit which -causes the mainloop to terminate at a convenient time.

- -Application provides a standard about box, but we override this by -providing our own do_about() method which shows an about -box from a resource as a modal dialog. This piece of code should look -familiar to you from the previous example program. That do_about is -called when the user selects About from the Apple menu is, again, -taken care of by the __init__ routine of Application.

- -The MyDialog class is the container for our main -window. Initialization is again done by first calling the base class -__init__ function and finally setting the local variable -"parent."

- -Do_itemhit() is called when an item is selected in this -dialog by the user. We are passed the item number (and the original -event structure, which we normally ignore). The code is similar to the -main loop of our previous example program: a switch depending on the -item selected. Dnslookup() is quite similar to our previous -example.

- -

Creating applets

- -Now let us try to turn the python script into an applet, a standalone -application. This will not work if you have the "classic 68k" -Python distribution, only if you have the cfm68k or PPC distribution. - -
-Actually, "standalone" is probably not the correct term here, since an -applet does still depend on a lot of the python environment: the -PythonCore shared library, the Python Preferences file, the python Lib -folder and any other modules that the main module depends on. It is -possible to get rid of all these dependencies and create true standalone -applications in Python, but this is a bit difficult. See -Standalone Applications in Python for details. For this -document, by standalone we mean here that -the script has the look-and-feel of an application, including the -ability to have its own document types, be droppable, etc. -
- -The easiest way to create an applet is to take your source file and -drop it onto "BuildApplet", located in the Python home -folder. This will create an applet with the same name as your python -source with the ".py" stripped. Also, if a resource file with the same -name as your source but with ".rsrc" extension is available the -resources from that file will be copied to your applet too. If there -is no resource file for your script a set of default resources will be -used, and the applet will have the default creator 'Pyt0'. The latter -also happens if you do have a resource file but without the BNDL -combo. Actually, as in the present example. -

- -If you need slightly more control over the BuildApplet process you can -double-click it, and you will get dialogs for source and -destination of the applet. The rest of the process, including locating -the resource file, remains the same.

- -Note that though our example application completely bypasses the -normal python user interface this is by no means necessary. Any python -script can be turned into an applet, and all the usual features of the -interpreter still work.

- -That's all for this example, you may now return to the -table of contents to pick another topic.

- - diff --git a/project/jni/python/src/Mac/Demo/example2/dnslookup-2.gif b/project/jni/python/src/Mac/Demo/example2/dnslookup-2.gif deleted file mode 100644 index cd5fe5f55f7dd393edd5767f19a6bf1e3b34d52c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2984 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 JL7sz%0sy2mnz;Y~ diff --git a/project/jni/python/src/Mac/Demo/html.icons/createmake.png b/project/jni/python/src/Mac/Demo/html.icons/createmake.png deleted file mode 100644 index 50d6fa550e28473e5954da0bacb88fe445fa8426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14212 zcmeAS@N?(olHy`uVBq!ia0y~yV0_EK!05@r#K6E{8T}}Pfx+C{)5S5QV$Pen8w(#> z3AEj8NS|U|^z25Xb^$ZrohId{vkIA49WV~!JSSsaz?$=L>jJSKWjmJ76?JHs;=<+p z>vxlN!PXePiU<9s9h+BiF)*ZgUpD#wkBOn7GVuD>&c5pm3%aPgM#(mUiZ@?jOvy=ef5#|K+2u4!0y0bW``$jOmws5V|_7Y&-3T$(p{5Z zzb@tR+4Lp1P4%(6)K`lsieblg@813XeSYTtJ$qu-ZnET3uhXAcwC`t|GMnw}b5$k4nO8hZV8X>F7;|3||!$LDMR%QCN@ zo0C+nLXShU&y2U>PKp>Xko11OeH&hK_B1!ebeXVB%EZKba$tn-PXS7Xs@rGC40bLg}Ek3 zZH(>td0F4@>+9Fv&8O$@ zzN`0M=1bDmqJyrC3{1zaeBAZ7_l%Oil*^;ONslgHzU&|?&SX3FaNNv&KF33+FYUi{ z!CGU}ypQrXxEUIXC4-M|72zt^^VEN> zUR^b-;n+v%<&UlSzpA~oUcKGB{6V+si}f)}^Y(ixylXx0)pUEm;~nMIzjC`K&EV(f zx07P{lX~n*VXuJ4yv~W8=h8N>yrq9IC^=@^YMoh1>{(N-?(RycTCQ5GQ#SXbYVO8} zE%#KKH#9n&j;tybyt8Nj0^wupT&0R$)T*%mo*#8D?sKd$!v&*#ecz>$Juj67q?P?j z@tfY(wVrc}$cb;ZU3)(+E&84`*HdABsM_Afy&SiG=?mR1^<2)_V1K^SDo*vo{IYqI z_!pIlMqXU@>&McLxq?RF`F;7Ot{0XnYrS|jxj%mE)cp6ML4P+L4tb{epZnIf7x8oV z@plxnHK<-xv4}oyJU{K)@z2u^)LF>v@qaMia&PAM2`ida7E7i7`}t$nq`Yp?pS!Qg zgx~vG_VS3rv}bBo>tZ?TelRqo7Awnc7fqB`5p#*<6O-ifyB-u}a#6pnqWWLS=kV6h z(65|J9z`EFt&F|zAA58|Y4OXgae?Xvy=mbWr_V3cuVLDDcWLoa`%>xL@&GMoh6o|^ zOCOg_{gm*(LdT&_yW{_rY1~a`n}mX0H*|el&EmD3S9C{(wU<`i1A+J9ox2y5yps=4 z-`c(JcJ%!P;&y3u`@L4hZr#k6Z_W6RWBcVok4`&=1EvceZ)cWeZ_t!j@%TS81H=FS zZ|0sYd~Ln@|b59GQLzey=Id?|4RqmJz{?htb}=d zIu`s94xDms`-ck#yp0N_KH7Z_vg$1pTAe`TwuODdP9C=dj&mw5$zAc-dx>(3y2wnQ z4N)r|UrjJNImNV~ygdB5aN8AUwZBWQI?1kQo9x+@?O;_?Tl+O7`NWdnTODQNm9#yc zakT|Zw`km?Ir($twuBQ!4O7&27rpu+6zOObZqTyp2r>&Yaob&wqy_|54V$ zzVKw$lQ9PcUKs@*&tAR( zZ*OB0QM(Dc&>EslW7|kZ_nIX_GSCJHSNtefB)_}`R(79ZMIUmKDNBder=%^TlVyt zhQGYL{KrWqUqT~_-d?{R{-yon%a@+wvv-9qE}hLXd9zR9*PlOk-hMmjvEBsN7d!6u zAI^BK^ZXQ-GM`~qZOZFwRRO;?cAb3W`1bc-yOod97GIs19r_#W81|D#YHvT?J4s;e zIh!mWp?RxczIn^Rf7GyO>f*m!)$9cex?f2iWbmB$i1X_8YaeINmgaQcaz5{*;>7jL zmnJOV@H|8mRCt-%+1qucr7-)~|$<8ih=|Q(ssdDDlsEt#|MH$;hH(I}T4-A@n4fGd%W7yB_xv zM%nXIMUQPwFic`-{B=Zh^5btWB0^5-m&C0(C&Qv}eCqbs^BMn1e{idIF{$x=K1cT9 zLb)xxhutRqxpt!e%C6q)%$h+q3xB1)uqdhAe*2;3w&(fGb9evJIhOFBub?%ys%mlE z-j5abI~N~WXCU*x+4cSkS7xhuzxQ@=u$Y+qoV@INz?vB{TZ)q#r^LUg@hW|Gk-t~*N`#;7HdfAsh-nXpy+`N|QN7k1`@4NZkMWsL*9_+7I?byHnx;_81y7fxCbnYe` zTz##xG`rq^k-qA&yhClaxDtB+e%{&YyA6B#Tsy&vvf|+rEPurU7{+*tj;UAOXpPBv8{NVyP+v%T>?jG zr*OybYp*(ew;jIEcyIeQ#u+|AG0b-Z+#l)Rl&i}PI6j?YvgfijjMqwUE3A2ajc4mL zj!2QM(-kw@61IX%7seHjTLdndT`6?p$drC%q1dv8w{(tx)2%iuKMuuQXQaaD%-YA_ z?#twy{K0P~7V}^mog2kmq58eBgiWcWgoLiPZ`<;Jt zQqo_QTPLM_z01$+agLEb7&+~=LRWvU!8s;-*?+npJwsyt>}pvfC@*IbpuqH^t>JNL z>4LuV+vKlLU9vvOuB7%v@E%#l&cLgecgfzZb*P`bY7#i-%N^|DJ9z8si(f)nS6^Qg z6zw{|xx;wo5C2oW+g$aG7k6$Ao-lh&Ow_i5eP^4~ge146M_zKgZ6v!Z_+zcxeWCd- zM~|*QWE5rfXM#9mNc~sF{K{BX=09IwKaP5HQQa!8xKO$yUAI(zzxK)i8!3ZZ5#|^2 z)`-4wJKw!Qbkd3CD%YZ~&0VzgqHMFVxnK32=Lq}FeRHHwzhn|uWU;`PMgHEC)8Gk`0(*u9hP=m=aneAha5*G&B{+7??5d+V1}ExgS8m&@5vS_D;m|;g_TFZqq|NrlL-=A(IezmRRO=YO=v@_QQ&K_SZ|EpCtDEj%v2X|fL zMN?Q}+3&ueWxLY+*NmHKH?PEPTH*WWRIf#3(U)sA?w!kJ!XL(XPpvs6cV2{>yJe=p zpU;h+xupm9P4Kaqm>SYi8rQa_E~wa+jWO%m?^+G#$V(nilAHOjT~O#K`}at7myhRh zCe75PyIM`n?_9qcV0YRkN~E+PES+n&gY4GH8HFDo9A0r*nQx$+o{9(VGq~3v)(pO zJ3hVBC~jVT@zG2xz?D_d_16g@{PxBW^a=ErFR|Pl6Jvjo^77N93HcBo~;Jee=ZqR z|B*3RD`|2@&Rn9b?X0Y`ZrkSLg{LZlj<4f=z3{ADz4igCx28uDql`1&WcELnI9z+| z_;Gd%+xnA9-eRpmE}OldZjCkWXPf!qyUwDX58vP4e}8}feL077`|JPL{rS--BN-Ru zV6>O1=;ZqN{d-pZ`}0#-X~~Q~`+qE)ueZel*SMYoSTc+7RA9bDrGZp0BDDR5X9S+3~Ma?&kDgH)>iTnxcE>YGt7i$~0>i+lJFw7B~xRZftJ^9Y`+Em(28{lfQhJA0qQ>>P89TjJ&JCGXqzb?@i%Q!b}W;hd|M-*fg&;hFS+ z4FV=}>Z(4?b=%t1|6m z`}=aX8dq)Z^y~Hfdu-&H&f6@^KGk;7_t7z@b-t@ENR)fqtkeF;Rgiz&w(Lf}v()1} zgKC*2C+D{;Xm!|Ym;O*MQ}^!K)%q)J^h5SHM6UUhGQ(}d@yKY8M~jYX^mEU@q%5^# zYUtYIk6ZU`+kN5|+rm4OrkQ-+G5wgxQPu71zgaZ!PWB1ad+@Qx!rY$mgv8`o{>eSN zO}9RKmaaLo=Tg4LXO({Optrtz)pnlk&zR{I;E>1CQ?Dua{lfg?-XA`FQd)e(w&IR* z;fEdD*E>mF{jf*0+~@V|S!vg^pFj9$X7YZu!rXL56${bB%hQTBR?kS-{(v=8t#&TcxZ!w6($;FMs^CWrDTBmz4Lr!!Akv=KXs{U7}3$Ja=XERh!NyZ@rQw4rF|0 zNv*h}sdYZ&(8DF=bwN|-OaHCh6SHB(!(=v3n_Vl7SmQZ2dU`-paB*DEnJMev_GCZ% zQ#sY3mczur=}SVhkL5i1=`2RhpMQ$U)OOF4*MCyz^C_{n(0rclyJx0f|9xfY@SYz& z@srK^L$$fzzpgl`bhXNI!6zS88-bT|d-gE(_b2u5{%Ni7xAf+ta)*mvi>Ax;X>UK6 z_U(s)0M~?VbI(YWr(d77P;B?j$44gLe=6Od-_Tt5@ND|$iM@r}m)X|2td;aKm|&ZC zLoWB*jzp6g*Lb9U-+s(?_-JDB@c{14$MtzPA3x7{d6whhH-*iK={N2eUODvUqxa!A zABzucNxN|4zT9>Tp~uNu2kzzC7`)ljwNQ-t=HuW(nNGbmi6xJt-hQl^S$(E?ahO=_ zzr2Picg~;pkK%dw_QL!PfA+r!s%U8pxzw=jeZ!(B|F(t7bbd&dcjheHe0=#Y3nBk= z^97gPcWkWlzQ}0x?d#Xj`n<#U+Vba|eWdF8)Tr0+%}>>~^yHIMSng^~>3DJDS>IN{ zTpPJMpWTHrolctK$2GoHILmP6|68)JLI0=GzfBd#|B0Ba(`0A}2=OYqKi<_Iks9M;X^i(c(Gzj4|N8Hp#{>-MuxH2-83 zJ4Jf$Zl3;hsfKCIyEjhD`6-pK(MP)fy|la2ddYXUCMvDEF#kCB(tFyEJuDu7{JS7C zJ1Cm#hH(EY?OV4sOB2$W{}&58|G2n$w`ow2*i*OndWRqXoTmI}TSzOxeL%{L$C zUAGX5Tjtv3p(yih<)qigp0DXrJ~*rQ_@>s`;=qnDAWcn+L|VJ->|P``pG%mZe1&!>gDuZ zLS;C+E(8S$N_#0;O005_Q=dBd$m$B4rBdem-@5R1g#Pd9Eqycf`BImsM%T(pcs3gb z@hm#{qm`{OuTnZpYT8+wci*~|AExe$T++dEC~>~l&UcklSE}`~=wGzISvi%>g>(A{ zt#kFhk3wzc1@+FppORD``M&3~lk8Jv*Oi((-#I?r`usR|F>?uPN|N;h}w}?+cy% z_Cx7f=KBi*LdP9X_VyNr=k(t$|0#ZO-nShG6AH}AdA>@VlQYlhG^@U2Amx+I*6Sqq zpC8gVvz>IsM&K*wH#QdUGn^g!Q}PdRK46)h?{GEmN9aU>V3m|R4blP=e{r=eS(Y7l zcD0*srpix$<9FgdC--hrdHwunr1r|#eruWRgU9<8i>*7(&wKsxcE)_u_O{oB?aAps zZWLZwWNrKIb?7#i*>c~f^6xzueRko-<#O^}e?5Hu>(%bwzyJJvfw?C?CRuvReapy* z==}3V->9>Hx$xIDvG@NK-HJVQ=#B*A+9k(tU+ed_ef+`6Y)L-PG0M;$Al(TKC!oE0Y6>ko;%80xPAS0Va@T|6?>L=++fdm z>%&;RX{Y-g!?oA4Zggpu^>}Sqp6m5)m;b_g zc5e=DoGrKhtMWokiJb1kJwbA8OTru9eeLCWY@xE7w|}xttlM>`_^3-krnrR9!0%h9NThGRs8I4z6IR2_a3+_JqU<yP#=HmlIzbU@K}k2c5w31_SiK6vi5nVtEzmFnBAYvlTWv23_#vOiky zTH@<{3iHL!7aa;z%xPNwI`Hr6ZBYkiYs%Go?Vjy1_4&(^wncxq9Fw_N-{>c^8ImJMp?Us#% z%juer>s%!kUQ=(_7QHd;@r#1WxC_mfI9of{x%T+qu5*oi96WP(=Na!Qi8VqCZ5)M} zFX?@~T5O?n{;_Jt2jzvGJezMjZ4GYnXY`a2mYws)EyZBLU;W?7d`NvOt9OM%wPhmd4HPE!|)W%nTeoQGfpQzQJ+mZ2F;XwHY z{jiM^RTmxy@0I5in#p7K$6QEd_9p{|jP%_;DK@@dC$b&-qj#kpS5?yv5c;DTAvf7j zOiV3nO;OXu2L}_}ZU0UB!0Aw}#j5AKIb|Z(@=sktyh`!nk!!AGRje+oWA^y?V@jF1 zAnX6$Gv&{hL}m5V7EL_$^1@BQqjps?ALFzBcx24f`Qy6oOtpl>l+AZNHzpb|_t~?) z=eH}J;A(RJ*&&u=TIv$BD-9xAjtAQ@7F18s;V2QEU8EKBw4Nbm|8$A@RhJ%LUTL}L z_3=`fxMg>IT?D^6E}XvFo8j1k>J6IWE2cyrywE8(|J?6}FYk=LD+l(O@w3f-`7ygu zpk3tOt|LE6euNdX-0A=OQy_c z|10v#QDEICzQ9cz@3l1-Go7*xxpL^f58v^(iSoAh-nc70SU=@D>x6%wKYy;U66#L% z{#nUUH1k}Q%<=Hh%Jvi1O&+aV|E&KM@UXx_=J$(_iQD8kv*!r&3Gv8T&Ub27?x-E8&V5!+?0uTp8`2c;Md0Yl-LqsJO+HsFd&1ZLctgaz zQ+8sb;gVa~?0wsB9Ta?P49e>JWwic!_^4~~U+Z5k*3PlLXfIcV*taS3*<-a%ZwS4o z800Dx*H)jt@k!;LQ_ilsZ+bsfE$?PKe(b=8oPekIvf5p@oYy)3_^HI5ei!x&y1Q4O zvrux`oe*~}`fOlF#{8S$BvS9~V()liQ}y@r%1L(p@Bgy&t=%ZtZ@rG2+o);Yx1GCp z|NivU`;^9ye}8}9-kx9j{?d;xFDJVk)0MZcJM&yS^OeXuzZw56q!+Nu$@4s0KGW$! zkZOn6%jf6k&pa30eaq$Ax}`Q&S0DH3Zd@goZZFu!#=5+R=l_q7&U*54awS$0ZQ zbxn`w>~7uOZFAh(A&zbF#L13*N_Re}9q4w{EA?FQOY^7d+3@vox~gCF7WvD$_i~2! zE$5oTb+Fqk>i^@VUT!sR7fQ7a@9(Wn&!56DLuzfZG?UvgclC>6D%_3-j1(3e-Ztmy z`PL7|WYbD)-_6){@$tbG-b;mJloXzHf7E=eE?;lcpWYX@^Gczdyu2slt#cFinEiV4 z@#7z@slO&lalg8Gt$yDm)w&B!XPzEz=Rd((_#^Vzo#tzb2i^xUcohk(Tb8z`{lrBN zue>QK7e$-ho)7LMeM|1#qmm16&iJLR&)xoOPU6Y_caELAzh2<)kG8&|arC9d`lQ9v4lYm;bnve_ z(6mxQv1HAps3y^Lw09@zUur` z1M3IsPhB4U{JHZ<CGye%c{0*=F~PLciSCJ2|5Nt4`%%(Pcf^-zmte=YFyH zwOEFl-(}<4y?<8Dnf~17dYWw7oa2w{8Nm&+xqJP-SP8Thv%a{)bR{H)nOD4EU8=T~ zN}mh+)o{hY0ELTz7cT}XT)g-+>f7we;nq^e>$)YLH0=L<{PFZdOS%NQ za;!Dwt?Feo1^u^M_1_K(D@tlUV~~2PQ9AEPK;3R$+35khH>5cRJ*`pP{x4Wda>cYs zpF>lUR#nbh&(z6t)92(9Yd4OKC47%~bq{M4z9>C=C-K&*KOY5udmLD6XKNd(XPHxc zxQ64ol(zV%Z?+aKr&c#T*nD~FVwa`Yr_7GwG8Bqe&wFk1QzS9V=pN71fabpC!Igg> z8#?_JPpl1j(trAn(D#WCp2p3-fBN6oR~GCGHru2%IbW|;3zvPia_==KR#%<~mSvAw z4Q0=>`fvEycV%s7*Pp_3y0!A1f8Q@mAwm zno4R?6ME0HzT6QwCt&``^^Y}sZn!&%iCik&!`(Xf!~KOPvLa;U${$zvYVNILOMdoZ>-=K73 zU*55Rv|HD8CoQf%)%0zmgX)sw*H1S2nDQu3{9|P|W$7RNdRePHiDSPsUiM3WPF|ZV z@p|zd`@Aa$>fIFAT^_bGa~CL-gn4fDflnpRVWU zx$B-Z&$9kr(47>gwLTe=k^EUhdAR5u~~xc*W|K zYwq2@zkdCCP08AQd-ona{rAU@2Rxmx`(ngRnS)g^T>x8oxO5Xw8D=tB?B4@6NZ} z7{>5ukg{MOSd+N0A@rYoOcd-aa%w^u*jvy)~0(??PhGPI(a>Q|)9bD!jW{9=4z zdw~B@TZYC38(#M>HdmhMR9aa2KVYhodD#=^m$wi5{=4SLXf-7>EUBUS0(kECtsM_cJ9&PBSn{e=dNoGeb|4zbkAFp)3&GYx+{sa8BMyh@z?Im6rUJ3 z^{XFCf-6f)d6X)(%UCK)V_H9+cquE-UNNsX<*Hxh?45}fp$Xf>%S~VJP?@4=Q)O{< z;pRP})jr-|<1)LRzB1T&C;7~|s|QzoIDY=zxeb>VYA@DMEtK!PXRzMp-7?OjM~eIA zSoj^k?0Zyzcb3XMF~K|BC#}~t75q8o!0`T2*}mg(J;x4AcQpFiWFq9}BW5{QPVhs5 z-R(IomB)_vuMrdXQ*c*QO5Z7ZJKCgt(ge?YkE)SHDb3ve zukbR%9)mlby!MR#{hYmfmcOVt^-SpHvZ5rpBj=s&eV_BD%6YEhyL%r$hTU0evx=i4 zV)D5|y6m1#Nmj4Fel1n6snla_|FrGlO^$mHqs)0K_O*LGVB0hy_IPB3V(7o;>?* zC#3lBaqk_A2g?|X_I3T4*7e}0){l=IHxH-pWL0ec0dn5EqjDE)r%E3?YdpQLI{wb- z$TK1iOWrIFm^1ft&&#>@x~FtZ7nac!w!H52%s$WUh~J)7x#BAxuMjq^w+Rs~nQ0Tx z`s+}r`tqh7*I%zad?E5)7w=4$wf<^~YFC2dl!bNkr{6!A_3`-k_DJoZBiZ-d7g>Bs zcCgo~ocr+xv2E zZaVjpt+KN6X6fn=)88^5yJRSP-|Eh$rKY*vGy0?>4P@_IEiV1@@ZrNJPg?wz``I7Jp+ns|Cr3{2(Y5*e+^(o$E(UrP)+b&k%TKi_}JvzeU<)puOG3*oO95$ zXq_4NO{(?K@|!A-UNZa2XEa6qFj4$0=$fQr^Y6ORxyRqXf4}tM@nh#xpVm(?6)OJs z@yGAqyZ2}(@pivhzkdDkz>aQNm~}_9rg~~cEYgk_0OM?r+)v9d+d1g;F6t&Zv~fj z>fLbNQC91yulT^fmcxNf`SIEq2IKKTHlU)Dx6P2H%Dvxxyh5x%) zdUF2puhY&oSQa%vtk8MzG0Jk;jkgyBXII$hzupx4vUZ;phYg?afydG5bB=%2T%;G9 zx>Gl`bB_B><6|Foq#v1SQ}-@!Cv?eojj5_fxld{?6@ytjg-zn!b{AirF@+Jld4 zjn6%P{_9^M@3XA#(;w?ZZ_nGSoF&}begE(?VP)a!{a$PLyp~(^Oq|VzPn^9!f9^%O z{X%XxK35%he1XMgU+IS*tOp^iYwtdO{glrx*Z%Us$F+;^M@w&E@-BMupgKEIsY2%8 zf7wpv7$!fN8GLf>{~wg!)nn2w%s9l?&&;q!%7%|&L*54qh6B4YUluYj?BK|?;bUO9 z&L+ps5Mf>+!;o|*x{b$LEJ7%$8HjFrKlVVazH zr#Js1o3}2%a;HDnv9RT1C^)<2%Z_zN?%%uj=)w2zA47@{^#IG!4)Bbw4E zQ@&{L{?a##q>rz)S$AGK)v(S+&i3n9#pO#@{oL|thaH=R4BxRo3=BPKiv9oJh0J>+ zzy14aAN}Lj5jJ0s{z%;4b+7AWzu~c&ZhPXFR#Y-D%s5me$Ij4TdEhYv!)rEB3`rwm zXy)n1!r#-bNQr%)@MCs7bK>IDhm?OkR{rJx?Ujo2lj_o}`HSnr&-?tY@49==aDuU9 zxK9*YtC4j5OaE;a|4-c)zun1fDmMG@ z9d(wN8+7N|ImMNh8AUx6x(^-O z19DRTi{4zU!YSQ()s8QHRaw|kmMr;Qb2~qZ2ffkithVELzELFl=YKo)vx+?jW;{G5 zw|;KLQNJwK#ZGZ+w-?22miU-*soG`hKlde1=Eyw1^3%TigOR0Ww*KeIH;b=qHNJm8 z{Ubwf`Q(-Fe6M<(^jKg%PrkG;WB2(bp+P$(3gx^vMs56jZ_NVBV_%NRLD%QqIvDua zK;&4VR>CC)c8x~mbiEP>)&R#gHlxW*I||P6`dJ=sWHWlHpnJioqC3s@(588DGB+ol z`EPD5>8>$p&58Ieo&Wz@*V(_b=M8s$GwV%ET;l1qS-+01>{+`xMSjhR8<)?CYl#Q- zE8Z-2e1CEN>Vl%Gn2LuXKUAlQF1miPeYt;kp{u00bB@PDAFceDB2LY0<+4pX&uN4m zH&QvhV#0Kzy_WmsuV26RvD>Kf<*UPfd=}SQ_v%;weKKLw^Bt)N41Zlwb)Q$Wc4_?5 zk13nkm&WZ^l>Jrr@~-TZ$KRgHzP7To_tN*WK9M~^=6-ec);s83N3UWEft#^)Wl#JyFQ8LfVp#p;Y-eC?q4=bTNOeRkP*1BNMX-=+$AE|+tyjhUie z{xtc?kIR=Q%jir$ef@g4_|wGNavjlo_wPS_@afYgkm_USr(J$m@cPrYZ_hpj&%gJ_ z^4_NRr?P(=HgINadV1wx#7xJcJ;p1Of8IV-xVLVTEW=SPmE+f6e?5EF*LaoVZz1I` zMj?H#>utNA?})Q6<5^J9`eaATjxR-Zb^m_;)bxMta#7>!-H&OT zBlV^i6;xNR?w58@(}@1-`C3iE!&;T z_4KjhykEUM~Jc&lj|$oyIr;Kw`8!{~r8?@v66WiRo=SZ#-l_6|!)uY|&G*(7DO@a$9yLiBu3480 zvu~e2u=#`CVh_`Zux#OK@8j|fb;V7eY`)L=87lqCV&$jj$NrYs=z2a^c%`Fucbm>t zt<*}h#Xj7Q(U~7s)t~l%DOM4zoRbxmyKc?XOpjctl=G*egP&wMg;eM8@Ew1&q|qs0 zlH2X5rewXxjB|rl^B)mzvw3fjC0tmvYvaeyd>?N{&dXYr8krXvl^fZ7w&;a^Ioq_A z{mZ9q&XifZlw;nxZE49L9RnAy-Nw4>nWcZ!WVWhA%{Pw@&vFy`Tj95MSs2?Rp5$G& z^?zKXJ}xQ${j=iNRvCs@6#?x1QL5VKXR$Tk)C&L0{P0BEBCA_-ndM4&zcbx_{NV3X z2OS&F;&)qjO?!It)x@Xr6=mO?z9vllvAyuX&6C0JR>{p${Biif?}n(CpX?TJ&RaRz zRwd0sO8v1-hUo^I@YAc`uBy{{zEr;c^6SNGpY2>(p1S*7(erz($Fj7p$v^s({qmp| zBO4}tt*?e{x4fMw}1NlV&7GZ3ZvH5owZpZ>bRof#_HTgt)-Dt zlV*u&8+^U|sxbm31aAI3juY#-4}T zj#qPvWzX|Hl9J6orQ6q)V)F7wLadF{;gUO+C&c;xu~vojM!uDLku$l^y0?7B_KjBW zb~0IR4tXnHTEjaRH2Py*z4Lt4le_t$n-e~N`V=(nbo8TwqidZ+zZuE*#~T|fEQp+X zX}0l(7EEq-ybS!&*_mQ{_nUT0*=>YL6pQaSx5 z^We(edY1|-_tswUt-Sf{`0?Xvn|}QJXZN$DX4hUWJ>4_+c-Xbp^%^bQ-S@uhF59-^ zW6yHK-Om=sDr(u5#H2mC`MYoNo;Lr$Z(q*NT&PlWw&!V*z_N##o>#0^SFM?`P49Yx z#^t5|vll%sl3m5-Df_>_)@^J340FZV7bk~Rz1Sf$#plx!gN|yE)#uNj-|+G4SJl?1 zTWo!v2fLnob~^0qiuOV;J#M4O($n=E)>B;auPQM5FL~TDq4CS*k6DS9j?>;6$kx@? z&RzCjGy3JhTcTzzHH#hE_wzRiEWe!l!2Zmg;EimIA)u`U?+zBo>VFM!G4olJTFd-; zht~1y`}b$DIr2}=6a13V{MUc`&GN0H{8tK{PT0O!_&A|fW_rrg{rmTa%7(9QKfj|v zxM?Emw2c10r@g8sRNU!ee`TTgMDELl!pMHU%W*s7j|#c`{A=JdbMq^sseE3u^xBp@ z-BGng+?8*BB*V1&o6}rB3+!3*K6-7%f<9rVcaHqB`|mBW*Mb_PtAgY`b_cI`+%jQ# z@}~PcYImIc;RBM84qUu3Lf+#P$js-5c5>7O$o^*sceZaV%m>I6F(NKgTe~DWM4fUu^|G diff --git a/project/jni/python/src/Mac/Demo/html.icons/mkapplet.gif b/project/jni/python/src/Mac/Demo/html.icons/mkapplet.gif deleted file mode 100644 index cb80496f2259f0edf2d1d3d820f0dfd7632a7b87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1010 zcmZ?wbhEHbRA5kG_|Cxa9|X?)|3CBp|Fr-AjsO2=_QX=|I>{Br!j!E8lU-ZJoCSC+J9r?|Hcge z8UFugIP;%j=6{B?{|v_e85lqYgN&Ye=6~9m|HfzjGl1+lbLPyMnP<+VojGHC<_rVK z+L>q0%$#{w*H4roxQgToG_6&xI(NC5i~WD?lX zpg1v}3GxBhCI$wOSquyy)eH>A?-&^FGBE6BU|7Y#(80h^&cG1Lz~I8bpv1r+$iTor zf%Lm~@9y5cyLCM@Qp!-fq{Vmlqc9Z z&NIB_l=0ZG;9xU{uvW~8f(QHC1Z0^iBqlzzXV{vp7n%&Pr}veqp)W#3GfSpEUy( zyK7r*t@^s+%94qR+v7z Qye|3lJYRtYdm9+60lnkJ`Tzg` diff --git a/project/jni/python/src/Mac/Demo/html.icons/modulator.gif b/project/jni/python/src/Mac/Demo/html.icons/modulator.gif deleted file mode 100644 index a75e1f9284f67c76649bd35d4db67f5d71f4d24e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6479 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 diff --git a/project/jni/python/src/Mac/Demo/html.icons/preferences.gif b/project/jni/python/src/Mac/Demo/html.icons/preferences.gif deleted file mode 100644 index d06eeb3f5b9b4b90d1b17d37e7bef8e663d95df3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5344 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 JFflP$0|4kW#0CHW diff --git a/project/jni/python/src/Mac/Demo/imgbrowse/imgbrowse.py b/project/jni/python/src/Mac/Demo/imgbrowse/imgbrowse.py deleted file mode 100644 index e38e5d863..000000000 --- a/project/jni/python/src/Mac/Demo/imgbrowse/imgbrowse.py +++ /dev/null @@ -1,115 +0,0 @@ -"""imgbrowse - Display pictures using img""" - -import FrameWork -import EasyDialogs -from Carbon import Res -from Carbon import Qd -from Carbon import QuickDraw -from Carbon import Win -#ifrom Carbon mport List -import struct -import img -import imgformat -import mac_image - - -# Where is the picture window? -LEFT=200 -TOP=64 -MINWIDTH=64 -MINHEIGHT=64 -MAXWIDTH=320 -MAXHEIGHT=320 - - -def main(): - print 'hello world' - imgbrowse() - -class imgbrowse(FrameWork.Application): - def __init__(self): - # First init menus, etc. - FrameWork.Application.__init__(self) - self.lastwin = None - # Finally, go into the event loop - self.mainloop() - - def makeusermenus(self): - self.filemenu = m = FrameWork.Menu(self.menubar, "File") - self.openitem = FrameWork.MenuItem(m, "Open...", "O", self.opendoc) - self.infoitem = FrameWork.MenuItem(m, "Info", "I", self.info) - self.quititem = FrameWork.MenuItem(m, "Quit", "Q", self.quit) - - def quit(self, *args): - self._quit() - - def opendoc(self, *args): - pathname = EasyDialogs.AskFileForOpen() # Any file type - if not pathname: - return - bar = EasyDialogs.ProgressBar('Reading and converting...') - try: - rdr = img.reader(imgformat.macrgb16, pathname) - except img.error, arg: - EasyDialogs.Message(repr(arg)) - return - w, h = rdr.width, rdr.height - bar.set(10) - data = rdr.read() - del bar - pixmap = mac_image.mkpixmap(w, h, imgformat.macrgb16, data) - self.showimg(w, h, pixmap, data) - - def showimg(self, w, h, pixmap, data): - win = imgwindow(self) - win.open(w, h, pixmap, data) - self.lastwin = win - - def info(self, *args): - if self.lastwin: - self.lastwin.info() - -class imgwindow(FrameWork.Window): - def open(self, width, height, pixmap, data): - self.pixmap = pixmap - self.data = data - self.pictrect = (0, 0, width, height) - bounds = (LEFT, TOP, LEFT+width, TOP+height) - - self.wid = Win.NewCWindow(bounds, "Picture", 1, 0, -1, 1, 0) - self.do_postopen() - - def do_update(self, *args): - pass - currect = self.fitrect() - print 'PICT:', self.pictrect - print 'WIND:', currect - print 'ARGS:', (self.pixmap, self.wid.GetWindowPort().GetPortBitMapForCopyBits(), self.pictrect, - currect, QuickDraw.srcCopy, None) - self.info() - Qd.CopyBits(self.pixmap, self.wid.GetWindowPort().GetPortBitMapForCopyBits(), self.pictrect, - currect, QuickDraw.srcCopy, None) - - def fitrect(self): - """Return self.pictrect scaled to fit in window""" - graf = self.wid.GetWindowPort() - screenrect = graf.GetPortBounds() - picwidth = self.pictrect[2] - self.pictrect[0] - picheight = self.pictrect[3] - self.pictrect[1] - if picwidth > screenrect[2] - screenrect[0]: - factor = float(picwidth) / float(screenrect[2]-screenrect[0]) - picwidth = picwidth / factor - picheight = picheight / factor - if picheight > screenrect[3] - screenrect[1]: - factor = float(picheight) / float(screenrect[3]-screenrect[1]) - picwidth = picwidth / factor - picheight = picheight / factor - return (screenrect[0], screenrect[1], screenrect[0]+int(picwidth), - screenrect[1]+int(picheight)) - - def info(self): - graf = self.wid.GetWindowPort() - bits = graf.GetPortBitMapForCopyBits() - mac_image.dumppixmap(bits.pixmap_data) - -main() diff --git a/project/jni/python/src/Mac/Demo/imgbrowse/mac_image.py b/project/jni/python/src/Mac/Demo/imgbrowse/mac_image.py deleted file mode 100644 index b6fb27442..000000000 --- a/project/jni/python/src/Mac/Demo/imgbrowse/mac_image.py +++ /dev/null @@ -1,55 +0,0 @@ -"""mac_image - Helper routines (hacks) for images""" -import imgformat -from Carbon import Qd -import struct -import MacOS - -_fmt_to_mac = { - imgformat.macrgb16 : (16, 16, 3, 5), -} - -def mkpixmap(w, h, fmt, data): - """kludge a pixmap together""" - fmtinfo = _fmt_to_mac[fmt] - - rv = struct.pack("lHhhhhhhlllhhhhlll", - id(data)+MacOS.string_id_to_buffer, # HACK HACK!! - w*2 + 0x8000, - 0, 0, h, w, - 0, - 0, 0, # XXXX? - 72<<16, 72<<16, - fmtinfo[0], fmtinfo[1], - fmtinfo[2], fmtinfo[3], - 0, 0, 0) -## print 'Our pixmap, size %d:'%len(rv) -## dumppixmap(rv) - return Qd.RawBitMap(rv) - -def dumppixmap(data): - baseAddr, \ - rowBytes, \ - t, l, b, r, \ - pmVersion, \ - packType, packSize, \ - hRes, vRes, \ - pixelType, pixelSize, \ - cmpCount, cmpSize, \ - planeBytes, pmTable, pmReserved \ - = struct.unpack("lhhhhhhhlllhhhhlll", data) - print 'Base: 0x%x'%baseAddr - print 'rowBytes: %d (0x%x)'%(rowBytes&0x3fff, rowBytes) - print 'rect: %d, %d, %d, %d'%(t, l, b, r) - print 'pmVersion: 0x%x'%pmVersion - print 'packing: %d %d'%(packType, packSize) - print 'resolution: %f x %f'%(float(hRes)/0x10000, float(vRes)/0x10000) - print 'pixeltype: %d, size %d'%(pixelType, pixelSize) - print 'components: %d, size %d'%(cmpCount, cmpSize) - print 'planeBytes: %d (0x%x)'%(planeBytes, planeBytes) - print 'pmTable: 0x%x'%pmTable - print 'pmReserved: 0x%x'%pmReserved - for i in range(0, len(data), 16): - for j in range(16): - if i + j < len(data): - print '%02.2x'%ord(data[i+j]), - print diff --git a/project/jni/python/src/Mac/Demo/index.html b/project/jni/python/src/Mac/Demo/index.html deleted file mode 100644 index 9e01e9f83..000000000 --- a/project/jni/python/src/Mac/Demo/index.html +++ /dev/null @@ -1,156 +0,0 @@ -Macintosh Python crash course - -

Macintosh Python crash course

-
- -

This set of documents provides an introduction to various aspects of -Python programming on the Mac. It is assumed that the reader is -already familiar with Python and, to some extent, with MacOS Toolbox -programming. Other readers may find something interesting here too, -your mileage may vary.

- -

As the previous paragraph reveals to the careful observer these examples -are dated, most of them were writting before OSX and haven't been updated -afterwards. They still show how to use the Carbon wrappers but aren't -necessarily the best way to use the Carbon API's in OSX.

- -Another set of Macintosh-savvy examples, more aimed at beginners, is -maintained by Joseph Strout, at Python Tidbits in -http://www.strout.net/python/. -

- -The Python Library -Reference contains a section on Macintosh-specific -modules that you should also read. Documentation is also available -in PostScript and other forms, see the documentation section on the -webserver.

- -

The W widget set by Just van Rossum, does not have complete documentation as -of this writing, but Corran Webster has documented most of it on his -Python Page.

- -There are also some documentation links, as well as other MacPython-related -pages, in the - -Open Directory. - - -

Table of contents

- -
Note: -Some of these documents were actually written a long time ago and have seen -little maintainance, so use with care.
- - -The Python distribution contains a few more examples, all unexplained: -
    -
  • -PICTbrowse is an application that locates PICT -resources and displays them, it demonstrates some quickdraw and the -resource and list managers. In the same folder you will find the very -similar scripts ICONbrowse and cicnbrowse. oldPICTbrowse is the same program -but form the pre-Appearance era, it uses a dialog with a user item and -creates and manages its own List object. - -
  • -Imgbrowse displays image files in -many different formats (gif, tiff, pbm, etc). It shows how to use the -img modules on the mac. - -
  • -Quicktime has the standard MovieInWindow and -VerySimplePlayer examples, re-coded in Python. - -
  • -Resources, Sound and Speech have some examples -on using the respective managers. In the Mac:Lib folder you -will also find modules that do useful things with the Communications -Toolbox, the Finder interface, etc. - -
  • -Printing has an example on using the Printing module to, you guessed -it, print from Python. The code is somewhat self-documenting. Donated -by Just van Rossum, who also donated the Printing module itself. -
- -At some point in the (possibly distant) future, I will add chapters on -how to use bgen to create modules completely automatic and how to make -your Python program scriptable, but that will have to wait.

- -


- -Please let me know if you miss critical information in this -document. I am quite sure that I will never find the time to turn it -into a complete MacPython programmers guide (which would probably be a -400-page book instead of 10 lousy html-files), but it should contain -at least the information that is neither in the standard Python -documentation nor in Inside Mac or other Mac programmers -documentation.

- -


-Jack Jansen, -jack@cwi.nl, 22-Apr-00. - diff --git a/project/jni/python/src/Mac/Demo/mlte/mlted.py b/project/jni/python/src/Mac/Demo/mlte/mlted.py deleted file mode 100644 index 323ea6249..000000000 --- a/project/jni/python/src/Mac/Demo/mlte/mlted.py +++ /dev/null @@ -1,374 +0,0 @@ -# A minimal text editor using MLTE. Based on wed.py. -# -# To be done: -# - Functionality: find, etc. - -from Menu import DrawMenuBar -from FrameWork import * -from Carbon import Win -from Carbon import Ctl -from Carbon import Qd -from Carbon import Res -from Carbon import Scrap -import os -from Carbon import MacTextEditor -from Carbon import Mlte - -UNDOLABELS = [ # Indexed by MLTECanUndo() value - "Typing", "Cut", "Paste", "Clear", "Font Change", "Color Change", "Size Change", - "Style Change", "Align Left", "Align Center", "Align Right", "Drop", "Move"] - -class MlteWindow(Window): - def open(self, path, name, data): - self.path = path - self.name = name - r = windowbounds(400, 400) - w = Win.NewWindow(r, name, 1, 0, -1, 1, 0) - self.wid = w - flags = MacTextEditor.kTXNDrawGrowIconMask|MacTextEditor.kTXNWantHScrollBarMask| \ - MacTextEditor.kTXNWantVScrollBarMask - self.ted, self.frameid = Mlte.TXNNewObject(None, w, None, flags, MacTextEditor.kTXNTextEditStyleFrameType, - MacTextEditor.kTXNTextFile, MacTextEditor.kTXNMacOSEncoding) - self.ted.TXNSetData(MacTextEditor.kTXNTextData, data, 0, 0x7fffffff) - self.changed = 0 - self.do_postopen() - self.do_activate(1, None) - - def do_idle(self, event): - self.ted.TXNIdle() - self.ted.TXNAdjustCursor(None) - - - - def do_activate(self, onoff, evt): - if onoff: -## self.ted.TXNActivate(self.frameid, 0) - self.ted.TXNFocus(1) - self.parent.active = self - else: - self.ted.TXNFocus(0) - self.parent.active = None - self.parent.updatemenubar() - - def do_update(self, wid, event): - self.ted.TXNDraw(None) - - def do_postresize(self, width, height, window): - self.ted.TXNResizeFrame(width, height, self.frameid) - - def do_contentclick(self, local, modifiers, evt): - self.ted.TXNClick(evt) - self.parent.updatemenubar() - - def do_char(self, ch, event): - self.ted.TXNKeyDown(event) - self.parent.updatemenubar() - - def close(self): - if self.changed: - save = EasyDialogs.AskYesNoCancel('Save window "%s" before closing?'%self.name, 1) - if save > 0: - self.menu_save() - elif save < 0: - return - if self.parent.active == self: - self.parent.active = None - self.ted.TXNDeleteObject() - del self.ted -## del self.tedtexthandle - self.do_postclose() - - def menu_save(self): - if not self.path: - self.menu_save_as() - return # Will call us recursively - dhandle = self.ted.TXNGetData(0, 0x7fffffff) - data = dhandle.data - fp = open(self.path, 'wb') # NOTE: wb, because data has CR for end-of-line - fp.write(data) - if data[-1] <> '\r': fp.write('\r') - fp.close() - self.changed = 0 - - def menu_save_as(self): - path = EasyDialogs.AskFileForSave(message='Save as:') - if not path: return - self.path = path - self.name = os.path.split(self.path)[-1] - self.wid.SetWTitle(self.name) - self.menu_save() - - def menu_cut(self): -## self.ted.WESelView() - self.ted.TXNCut() -### Mlte.ConvertToPublicScrap() -## Scrap.ZeroScrap() -## self.ted.WECut() -## self.updatescrollbars() - self.parent.updatemenubar() - self.changed = 1 - - def menu_copy(self): -## Scrap.ZeroScrap() - self.ted.TXNCopy() -### Mlte.ConvertToPublicScrap() -## self.updatescrollbars() - self.parent.updatemenubar() - - def menu_paste(self): -### Mlte.ConvertFromPublicScrap() - self.ted.TXNPaste() -## self.updatescrollbars() - self.parent.updatemenubar() - self.changed = 1 - - def menu_clear(self): -## self.ted.WESelView() - self.ted.TXNClear() -## self.updatescrollbars() - self.parent.updatemenubar() - self.changed = 1 - - def menu_undo(self): - self.ted.TXNUndo() -## self.updatescrollbars() - self.parent.updatemenubar() - - def menu_redo(self): - self.ted.TXNRedo() -## self.updatescrollbars() - self.parent.updatemenubar() - - def have_selection(self): - start, stop = self.ted.TXNGetSelection() - return start < stop - - def can_paste(self): - return Mlte.TXNIsScrapPastable() - - def can_undo(self): - can, which = self.ted.TXNCanUndo() - if not can: - return None - if which >= len(UNDOLABELS): - # Unspecified undo - return "Undo" - which = UNDOLABELS[which] - - return "Undo "+which - - def can_redo(self): - can, which = self.ted.TXNCanRedo() - if not can: - return None - if which >= len(UNDOLABELS): - # Unspecified undo - return "Redo" - which = UNDOLABELS[which] - - return "Redo "+which - -class Mlted(Application): - def __init__(self): - Application.__init__(self) - self.num = 0 - self.active = None - self.updatemenubar() - - def makeusermenus(self): - self.filemenu = m = Menu(self.menubar, "File") - self.newitem = MenuItem(m, "New window", "N", self.open) - self.openitem = MenuItem(m, "Open...", "O", self.openfile) - self.closeitem = MenuItem(m, "Close", "W", self.closewin) - m.addseparator() - self.saveitem = MenuItem(m, "Save", "S", self.save) - self.saveasitem = MenuItem(m, "Save as...", "", self.saveas) - m.addseparator() - self.quititem = MenuItem(m, "Quit", "Q", self.quit) - - self.editmenu = m = Menu(self.menubar, "Edit") - self.undoitem = MenuItem(m, "Undo", "Z", self.undo) - self.redoitem = MenuItem(m, "Redo", None, self.redo) - m.addseparator() - self.cutitem = MenuItem(m, "Cut", "X", self.cut) - self.copyitem = MenuItem(m, "Copy", "C", self.copy) - self.pasteitem = MenuItem(m, "Paste", "V", self.paste) - self.clearitem = MenuItem(m, "Clear", "", self.clear) - - # Groups of items enabled together: - self.windowgroup = [self.closeitem, self.saveitem, self.saveasitem, self.editmenu] - self.focusgroup = [self.cutitem, self.copyitem, self.clearitem] - self.windowgroup_on = -1 - self.focusgroup_on = -1 - self.pastegroup_on = -1 - self.undo_label = "never" - self.redo_label = "never" - - def updatemenubar(self): - changed = 0 - on = (self.active <> None) - if on <> self.windowgroup_on: - for m in self.windowgroup: - m.enable(on) - self.windowgroup_on = on - changed = 1 - if on: - # only if we have an edit menu - on = self.active.have_selection() - if on <> self.focusgroup_on: - for m in self.focusgroup: - m.enable(on) - self.focusgroup_on = on - changed = 1 - on = self.active.can_paste() - if on <> self.pastegroup_on: - self.pasteitem.enable(on) - self.pastegroup_on = on - changed = 1 - on = self.active.can_undo() - if on <> self.undo_label: - if on: - self.undoitem.enable(1) - self.undoitem.settext(on) - self.undo_label = on - else: - self.undoitem.settext("Nothing to undo") - self.undoitem.enable(0) - changed = 1 - on = self.active.can_redo() - if on <> self.redo_label: - if on: - self.redoitem.enable(1) - self.redoitem.settext(on) - self.redo_label = on - else: - self.redoitem.settext("Nothing to redo") - self.redoitem.enable(0) - changed = 1 - if changed: - DrawMenuBar() - - # - # Apple menu - # - - def do_about(self, id, item, window, event): - EasyDialogs.Message("A simple single-font text editor based on MacTextEditor") - - # - # File menu - # - - def open(self, *args): - self._open(0) - - def openfile(self, *args): - self._open(1) - - def _open(self, askfile): - if askfile: - path = EasyDialogs.AskFileForOpen(typeList=('TEXT',)) - if not path: - return - name = os.path.split(path)[-1] - try: - fp = open(path, 'rb') # NOTE binary, we need cr as end-of-line - data = fp.read() - fp.close() - except IOError, arg: - EasyDialogs.Message("IOERROR: %r" % (arg,)) - return - else: - path = None - name = "Untitled %d"%self.num - data = '' - w = MlteWindow(self) - w.open(path, name, data) - self.num = self.num + 1 - - def closewin(self, *args): - if self.active: - self.active.close() - else: - EasyDialogs.Message("No active window?") - - def save(self, *args): - if self.active: - self.active.menu_save() - else: - EasyDialogs.Message("No active window?") - - def saveas(self, *args): - if self.active: - self.active.menu_save_as() - else: - EasyDialogs.Message("No active window?") - - - def quit(self, *args): - for w in self._windows.values(): - w.close() - if self._windows: - return - self._quit() - - # - # Edit menu - # - - def undo(self, *args): - if self.active: - self.active.menu_undo() - else: - EasyDialogs.Message("No active window?") - - def redo(self, *args): - if self.active: - self.active.menu_redo() - else: - EasyDialogs.Message("No active window?") - - def cut(self, *args): - if self.active: - self.active.menu_cut() - else: - EasyDialogs.Message("No active window?") - - def copy(self, *args): - if self.active: - self.active.menu_copy() - else: - EasyDialogs.Message("No active window?") - - def paste(self, *args): - if self.active: - self.active.menu_paste() - else: - EasyDialogs.Message("No active window?") - - def clear(self, *args): - if self.active: - self.active.menu_clear() - else: - EasyDialogs.Message("No active window?") - - # - # Other stuff - # - - def idle(self, event): - if self.active: - self.active.do_idle(event) - else: - Qd.SetCursor(Qd.GetQDGlobalsArrow()) - -def main(): - Mlte.TXNInitTextension(0) - try: - App = Mlted() - App.mainloop() - finally: - Mlte.TXNTerminateTextension() - -if __name__ == '__main__': - main() diff --git a/project/jni/python/src/Mac/Demo/quicktime/MovieInWindow.py b/project/jni/python/src/Mac/Demo/quicktime/MovieInWindow.py deleted file mode 100644 index 00f596e47..000000000 --- a/project/jni/python/src/Mac/Demo/quicktime/MovieInWindow.py +++ /dev/null @@ -1,70 +0,0 @@ -"""MovieInWindow converted to python - -Jack Jansen, CWI, December 1995 -""" - -from Carbon import Qt -from Carbon import QuickTime -from Carbon import Qd -from Carbon import QuickDraw -from Carbon import Evt -from Carbon import Events -from Carbon import Win -from Carbon import Windows -from Carbon import File -import EasyDialogs -import sys -import os - - -def main(): - # skip the toolbox initializations, already done - # XXXX Should use gestalt here to check for quicktime version - Qt.EnterMovies() - - # Get the movie file - if len(sys.argv) > 1: - filename = sys.argv[1] - else: - filename = EasyDialogs.AskFileForOpen() # Was: QuickTime.MovieFileType - if not filename: - sys.exit(0) - - # Open the window - bounds = (175, 75, 175+160, 75+120) - theWindow = Win.NewCWindow(bounds, os.path.split(filename)[1], 1, 0, -1, 0, 0) - Qd.SetPort(theWindow) - # XXXX Needed? SetGWorld((CGrafPtr)theWindow, nil) - - playMovieInWindow(theWindow, filename, theWindow.GetWindowPort().GetPortBounds()) - -def playMovieInWindow(theWindow, theFile, movieBox): - """Play a movie in a window""" - # XXXX Needed? SetGWorld((CGrafPtr)theWindow, nil); - - # Get the movie - theMovie = loadMovie(theFile) - - # Set where we want it - theMovie.SetMovieBox(movieBox) - - # Start at the beginning - theMovie.GoToBeginningOfMovie() - - # Give a little time to preroll - theMovie.MoviesTask(0) - - # Start playing - theMovie.StartMovie() - - while not theMovie.IsMovieDone() and not Evt.Button(): - theMovie.MoviesTask(0) - -def loadMovie(theFile): - """Load a movie given an fsspec. Return the movie object""" - movieResRef = Qt.OpenMovieFile(theFile, 1) - movie, d1, d2 = Qt.NewMovieFromFile(movieResRef, 0, QuickTime.newMovieActive) - return movie - -if __name__ == '__main__': - main() diff --git a/project/jni/python/src/Mac/Demo/quicktime/VerySimplePlayer.py b/project/jni/python/src/Mac/Demo/quicktime/VerySimplePlayer.py deleted file mode 100644 index 2930eac77..000000000 --- a/project/jni/python/src/Mac/Demo/quicktime/VerySimplePlayer.py +++ /dev/null @@ -1,92 +0,0 @@ -"""VerySimplePlayer converted to python - -Jack Jansen, CWI, December 1995 -""" - -from Carbon import Qt -from Carbon import QuickTime -from Carbon import Qd -from Carbon import QuickDraw -from Carbon import Evt -from Carbon import Events -from Carbon import Win -from Carbon import Windows -from Carbon import File -import EasyDialogs -import sys - -# XXXX maxbounds = (40, 40, 1000, 1000) - -def main(): - print 'hello world' # XXXX - # skip the toolbox initializations, already done - # XXXX Should use gestalt here to check for quicktime version - Qt.EnterMovies() - - # Get the movie file - fss = EasyDialogs.AskFileForOpen(wanted=File.FSSpec) # Was: QuickTime.MovieFileType - if not fss: - sys.exit(0) - - # Open the window - bounds = (175, 75, 175+160, 75+120) - theWindow = Win.NewCWindow(bounds, fss.as_tuple()[2], 0, 0, -1, 1, 0) - # XXXX Needed? SetGWorld((CGrafPtr)theWindow, nil) - Qd.SetPort(theWindow) - - # Get the movie - theMovie = loadMovie(fss) - - # Relocate to (0, 0) - bounds = theMovie.GetMovieBox() - bounds = 0, 0, bounds[2]-bounds[0], bounds[3]-bounds[1] - theMovie.SetMovieBox(bounds) - - # Create a controller - theController = theMovie.NewMovieController(bounds, QuickTime.mcTopLeftMovie) - - # Get movie size and update window parameters - rv, bounds = theController.MCGetControllerBoundsRect() - theWindow.SizeWindow(bounds[2], bounds[3], 0) # XXXX or [3] [2]? - Qt.AlignWindow(theWindow, 0) - theWindow.ShowWindow() - - # XXXX MCDoAction(theController, mcActionSetGrowBoxBounds, &maxBounds) - theController.MCDoAction(QuickTime.mcActionSetKeysEnabled, '1') - - # XXXX MCSetActionFilterWithRefCon(theController, movieControllerEventFilter, (long)theWindow) - - done = 0 - while not done: - gotone, evt = Evt.WaitNextEvent(0xffff, 0) - (what, message, when, where, modifiers) = evt -## print what, message, when, where, modifiers # XXXX - - if theController.MCIsPlayerEvent(evt): - continue - - if what == Events.mouseDown: - part, whichWindow = Win.FindWindow(where) - if part == Windows.inGoAway: - done = whichWindow.TrackGoAway(where) - elif part == Windows.inDrag: - Qt.DragAlignedWindow(whichWindow, where, (0, 0, 4000, 4000)) - elif what == Events.updateEvt: - whichWindow = Win.WhichWindow(message) - if not whichWindow: - # Probably the console window. Print something, hope it helps. - print 'update' - else: - Qd.SetPort(whichWindow) - whichWindow.BeginUpdate() - Qd.EraseRect(whichWindow.GetWindowPort().GetPortBounds()) - whichWindow.EndUpdate() - -def loadMovie(theFile): - """Load a movie given an fsspec. Return the movie object""" - movieResRef = Qt.OpenMovieFile(theFile, 1) - movie, d1, d2 = Qt.NewMovieFromFile(movieResRef, 0, QuickTime.newMovieActive) - return movie - -if __name__ == '__main__': - main() diff --git a/project/jni/python/src/Mac/Demo/resources/copyres.py b/project/jni/python/src/Mac/Demo/resources/copyres.py deleted file mode 100644 index 528ff1679..000000000 --- a/project/jni/python/src/Mac/Demo/resources/copyres.py +++ /dev/null @@ -1,57 +0,0 @@ -from Carbon.Res import * -from Carbon.Resources import * -import MacOS - -READ = 1 -WRITE = 2 -smAllScripts = -3 - -def copyres(src, dst): - """Copy resource from src file to dst file.""" - - cur = CurResFile() - ctor, type = MacOS.GetCreatorAndType(src) - input = FSpOpenResFile(src, READ) - try: - FSpCreateResFile(dst, ctor, type, smAllScripts) - except: - raw_input("%s already exists... CR to write anyway! " % dst) - output = FSpOpenResFile(dst, WRITE) - UseResFile(input) - ntypes = Count1Types() - for itype in range(1, 1+ntypes): - type = Get1IndType(itype) - nresources = Count1Resources(type) - for ires in range(1, 1+nresources): - res = Get1IndResource(type, ires) - res.LoadResource() - id, type, name = res.GetResInfo() - size = res.SizeResource() - attrs = res.GetResAttrs() - print id, type, name, size, hex(attrs) - res.DetachResource() - UseResFile(output) - try: - res2 = Get1Resource(type, id) - except (RuntimeError, Res.Error), msg: - res2 = None - if res2: - print "Duplicate type+id, not copied" - print (res2.size, res2.data) - print res2.GetResInfo() - if res2.HomeResFile() == output: - 'OK' - elif res2.HomeResFile() == input: - 'BAD!' - else: - print 'Home:', res2.HomeResFile() - else: - res.AddResource(type, id, name) - #res.SetResAttrs(attrs) - res.WriteResource() - UseResFile(input) - UseResFile(cur) - CloseResFile(output) - CloseResFile(input) - -copyres('::python.¹.rsrc', '::foo.rsrc') diff --git a/project/jni/python/src/Mac/Demo/resources/listres.py b/project/jni/python/src/Mac/Demo/resources/listres.py deleted file mode 100644 index 6ce577921..000000000 --- a/project/jni/python/src/Mac/Demo/resources/listres.py +++ /dev/null @@ -1,60 +0,0 @@ -# List all resources - -from Carbon import Res -from Carbon.Resources import * - -def list1resources(): - ntypes = Res.Count1Types() - for itype in range(1, 1+ntypes): - type = Res.Get1IndType(itype) - print "Type:", repr(type) - nresources = Res.Count1Resources(type) - for i in range(1, 1 + nresources): - Res.SetResLoad(0) - res = Res.Get1IndResource(type, i) - Res.SetResLoad(1) - info(res) - -def listresources(): - ntypes = Res.CountTypes() - for itype in range(1, 1+ntypes): - type = Res.GetIndType(itype) - print "Type:", repr(type) - nresources = Res.CountResources(type) - for i in range(1, 1 + nresources): - Res.SetResLoad(0) - res = Res.GetIndResource(type, i) - Res.SetResLoad(1) - info(res) - -def info(res): - print res.GetResInfo(), res.SizeResource(), decodeattrs(res.GetResAttrs()) - -attrnames = { - resChanged: 'Changed', - resPreload: 'Preload', - resProtected: 'Protected', - resLocked: 'Locked', - resPurgeable: 'Purgeable', - resSysHeap: 'SysHeap', -} - -def decodeattrs(attrs): - names = [] - for bit in range(16): - mask = 1<> 8) & 255) + chr(val & 255) - sinewave = sinewave + sample[:SAMPWIDTH] - nowave = '\0' * (n*SAMPWIDTH) - -mkwave(OCTAVE) - -class BufferedAudioDev: - def __init__(self, *args): - import audiodev - self._base = apply(audiodev.AudioDev, args) - self._buffer = [] - self._filled = 0 - self._addmethods(self._base, self._base.__class__) - def _addmethods(self, inst, cls): - for name in cls.__dict__.keys(): - if not hasattr(self, name): - try: - setattr(self, name, getattr(inst, name)) - except: - pass - for basecls in cls.__bases__: - self._addmethods(self, inst, basecls) - def writeframesraw(self, frames): - self._buffer.append(frames) - self._filled = self._filled + len(frames) - if self._filled >= QSIZE: - self.flush() - def wait(self): - self.flush() - self._base.wait() - def flush(self): - print 'flush: %d blocks, %d bytes' % (len(self._buffer), self._filled) - if self._buffer: - import string - self._base.writeframes(string.joinfields(self._buffer, '')) - self._buffer = [] - self._filled = 0 - -def main(args = sys.argv[1:]): - import getopt, string - try: - opts, args = getopt.getopt(args, 'o:p:') - except getopt.error: - sys.stderr.write('Usage ' + sys.argv[0] + - ' [ -o outfile ] [ args ] ...\n') - sys.exit(1) - dev = None - for o, a in opts: - if o == '-o': - import aifc - dev = aifc.open(a, 'w') - dev.setframerate(FRAMERATE) - dev.setsampwidth(SAMPWIDTH) - dev.setnchannels(1) - if o == '-p': - mkwave(string.atoi(a)) - if not dev: - dev = BufferedAudioDev() - dev.setoutrate(FRAMERATE) - dev.setsampwidth(SAMPWIDTH) - dev.setnchannels(1) - dev.close = dev.stop - if args: - line = string.join(args) - else: - line = sys.stdin.readline() - while line: - print line - mline = morse(line) - print mline - play(mline, dev) - if hasattr(dev, 'wait'): - dev.wait() - if not args: - line = sys.stdin.readline() - else: - line = '' - dev.close() - -# Convert a string to morse code with \001 between the characters in -# the string. -def morse(line): - res = '' - for c in line: - try: - res = res + morsetab[c] + '\001' - except KeyError: - pass - return res - -# Play a line of morse code. -def play(line, dev): - for c in line: - if c == '.': - sine(dev, DOT) - elif c == '-': - sine(dev, DAH) - else: - pause(dev, DAH) - pause(dev, DOT) - -def sine(dev, length): - dev.writeframesraw(sinewave*length) - -def pause(dev, length): - dev.writeframesraw(nowave*length) - -if __name__ == '__main__' or sys.argv[0] == __name__: - main() diff --git a/project/jni/python/src/Mac/Demo/sound/morselib.py b/project/jni/python/src/Mac/Demo/sound/morselib.py deleted file mode 100644 index 98e259059..000000000 --- a/project/jni/python/src/Mac/Demo/sound/morselib.py +++ /dev/null @@ -1,188 +0,0 @@ -"""Translate text strings to Morse code""" - -FRAMERATE = 22050 -SAMPWIDTH = 2 - -BASEFREQ = 441 -OCTAVE = 2 - -DOT = 30 -DAH = 80 - -morsetab = { - 'a': '.-', - 'b': '-...', - 'c': '-.-.', - 'd': '-..', - 'e': '.', - 'f': '..-.', - 'g': '--.', - 'h': '....', - 'i': '..', - 'j': '.---', - 'k': '-.-', - 'l': '.-..', - 'm': '--', - 'n': '-.', - 'o': '---', - 'p': '.--.', - 'q': '--.-', - 'r': '.-.', - 's': '...', - 't': '-', - 'u': '..-', - 'v': '...-', - 'w': '.--', - 'x': '-..-', - 'y': '-.--', - 'z': '--..', - '0': '-----', - '1': '.----', - '2': '..---', - '3': '...--', - '4': '....-', - '5': '.....', - '6': '-....', - '7': '--...', - '8': '---..', - '9': '----.', - ',': '--..--', - '.': '.-.-.-', - '?': '..--..', - ';': '-.-.-.', - ':': '---...', - "'": '.----.', - '-': '-....-', - '/': '-..-.', - '(': '-.--.-', - ')': '-.--.-', # XXX same as code for '(' ??? - '_': '..--.-', - ' ': ' ' -} - -def morsecode(s): - from string import lower - m = '' - for c in s: - c = lower(c) - if morsetab.has_key(c): - c = morsetab[c] + ' ' - else: - c = '? ' - m = m + c - return m - - -class BaseMorse: - "base class for morse transmissions" - - def __init__(self): - "constructor" - self.dots = DOT - self.dahs = DAH - - def noise(self, duration): - "beep for given duration" - pass - - def pause(self, duration): - "pause for given duration" - pass - - def dot(self): - "short beep" - self.noise(self.dots) - - def dah(self): - "long beep" - self.noise(self.dahs) - - def pdot(self): - "pause as long as a dot" - self.pause(self.dots) - - def pdah(self): - "pause as long as a dah" - self.pause(self.dahs) - - def sendmorse(self, s): - for c in s: - if c == '.': self.dot() - elif c == '-': self.dah() - else: self.pdah() - self.pdot() - - def sendascii(self, s): - self.sendmorse(morsecode(s)) - - def send(self, s): - self.sendascii(s) - - -import Audio_mac -class MyAudio(Audio_mac.Play_Audio_mac): - def _callback(self, *args): - if hasattr(self, 'usercallback'): self.usercallback() - apply(Audio_mac.Play_Audio_mac._callback, (self,) + args) - - -class MacMorse(BaseMorse): - "Mac specific class to play Morse code" - - def __init__(self): - BaseMorse.__init__(self) - self.dev = MyAudio() - self.dev.setoutrate(FRAMERATE) - self.dev.setsampwidth(SAMPWIDTH) - self.dev.setnchannels(1) - self.dev.usercallback = self.usercallback - sinewave = '' - n = int(FRAMERATE / BASEFREQ) - octave = OCTAVE - from math import sin, pi - for i in range(n): - val = int(sin(2 * pi * i * octave / n) * 0x7fff) - sample = chr((val >> 8) & 255) + chr(val & 255) - sinewave = sinewave + sample[:SAMPWIDTH] - self.sinewave = sinewave - self.silence = '\0' * (n*SAMPWIDTH) - self.morsequeue = '' - - def __del__(self): - self.close() - - def close(self): - self.dev = None - - def pause(self, duration): - self.dev.writeframes(self.silence * duration) - - def noise(self, duration): - self.dev.writeframes(self.sinewave * duration) - - def sendmorse(self, s): - self.morsequeue = self.morsequeue + s - self.dev.usercallback() - self.dev.usercallback() - self.dev.usercallback() - - def usercallback(self): - if self.morsequeue: - c, self.morsequeue = self.morsequeue[0], self.morsequeue[1:] - if c == '.': self.dot() - elif c == '-': self.dah() - else: self.pdah() - self.pdot() - - -def test(): - m = MacMorse() - while 1: - try: - line = raw_input('Morse line: ') - except (EOFError, KeyboardInterrupt): - break - m.send(line) - while m.morsequeue: pass - -test() diff --git a/project/jni/python/src/Mac/Demo/sound/playaiff.py b/project/jni/python/src/Mac/Demo/sound/playaiff.py deleted file mode 100644 index 823789525..000000000 --- a/project/jni/python/src/Mac/Demo/sound/playaiff.py +++ /dev/null @@ -1,45 +0,0 @@ -from Carbon.Sound import * -from Carbon import Snd - -import aifc, audioop - -fn = 'f:just samples:2ndbeat.aif' -af = aifc.open(fn, 'r') -print af.getparams() -print 'nframes =', af.getnframes() -print 'nchannels =', af.getnchannels() -print 'framerate =', af.getframerate() -nframes = min(af.getnframes(), 100000) -frames = af.readframes(nframes) -print 'len(frames) =', len(frames) -print repr(frames[:100]) -frames = audioop.add(frames, '\x80'*len(frames), 1) -print repr(frames[:100]) - -import struct - -header1 = struct.pack('llhhllbbl', - 0, - af.getnchannels(), - af.getframerate(),0, - 0, - 0, - 0xFF, - 60, - nframes) -print repr(header1) -header2 = struct.pack('llhlll', 0, 0, 0, 0, 0, 0) -header3 = struct.pack('hhlll', - af.getsampwidth()*8, - 0, - 0, - 0, - 0) -print repr(header3) -header = header1 + header2 + header3 - -buffer = header + frames - -chan = Snd.SndNewChannel(5,0x00C0) - -Snd.SndDoCommand(chan, (bufferCmd, 0, buffer), 0) diff --git a/project/jni/python/src/Mac/Demo/textedit.html b/project/jni/python/src/Mac/Demo/textedit.html deleted file mode 100644 index fcd8c973d..000000000 --- a/project/jni/python/src/Mac/Demo/textedit.html +++ /dev/null @@ -1,150 +0,0 @@ -Using FrameWork and TextEdit - -

Using FrameWork and TextEdit

-
- -In this document we use the FrameWork and TextEdit -modules to create a simple text editor. The functionality -of the editor is very basic: you can open multiple files, type text and use -cut/copy/paste. The main intention is to explain the use of FrameWork, really.

- -

FrameWork

- -The FrameWork module provides you with a skeleton application. It declares a -number of classes suitable for subclassing in your application, thereby -releaving you of the burden of doing all event handling, etc. yourself. For a -real understanding you will have to browse the source. Here is a short overview -of the classes and what functionality they provide. - -
-
Application -
-This is the toplevel class you will override. It maintains the menu bar and contains -the main event handling code. Normal use is to override the __init__ routine -to do your own initializations and override makeusermenus to create your menus -(your menu callback routines may be here too, but this is by no means necessary). -The event handling code can be overridden at various levels, from very low-level (the -dispatch method) to intermedeate level (do_keyDown, for instance) -to high-level (do_key). The application class knows about the Window -objects you create, and will forward events to the appropriate window (So, normally you -would have a do_key method in your window object, not your application object). - -
MenuBar, Menu and MenuItem -
-These classes (and a few friends like SubMenu) handle your menus. You would not -normally override them but use them as-is. The idiom for creating menus is a bit strange, -see the test code at the bottom of FrameWork for sample use. The apple menu is handled for you -by MenuBar and Application. - -
Window -
-The basic window. Again, a class that you normally subclass in your application, possibly -multiple times if you have different types of windows. The init call instantiates the data -structure but actually opening the window is delayed until you call open. Your -open method should call do_postopen to let the base class handle linking in to -the application object. Similarly with close and do_postclose. The -rest of the code is mainly event-oriented: you override do_postresize, -do_contentclick, do_update, do_activate -and do_key to "do your thing". When these methods are called the relevant environment -has been setup (like BeginDrawing has been called for updates, etc). - -
windowbounds -
-Not a class but a function: you pass it a width and height and it will return you a rectangle -you can use to create your window. It will take care of staggering windows and it will try -to fit the window on the screen (but the resulting rect will always have the size you -specify). - -
ControlsWindow -
-A subclass of Window which automatically handles drawing and clicking for controls. You override -the same methods as for Window (if you need to: control-related things are done automatically) and -do_controlhit. - -
ScrolledWindow -
-A subclass of ControlsWindow, a window with optional scrollbars. If you override do_activate -or do_postresize you must call the ScrolledWindow methods at the end of your override. -You call scrollbars to enable/disable scrollbars and updatescrollbars to -update them. You provide getscrollbarvalues to return the current x/y values (a helper -method scalebarvalues is available) and scrollbarcallback to update your -display after the user has used the scrollbars. - -
DialogWindow -
-A modeless dialog window initialized from a DLOG resource. See the -second Interslip example for its useage. -
- -

A sample text editor

- -Let us have a look at ped.py (in the Demo:textedit folder), the Pathetic -EDitor. It has multiple windows, cut/copy/paste and keyboard input, but that is about all. It looks -as if you can resize the window but it does not work. Still, it serves as an example. - -Ped creates two classes, TEWindow and Ped. Let us start with the latter one, -which is a subclass of FrameWork.Application and our main application. The init function -has little to do aside from the standard init: it remembers a window sequence number (for untitled windows), -and sets things up for menu disable to work. Remember, the makeusermenus is called -automatically.

- -Makeusermenus creates the File and Edit menus. It also initializes -a couple of lists that are used later to correctly enable and disable menu items (and complete menus) depending -on whether a window is open, text is selected, etc. The callback functions for the menu items are -all methods of this class.

- -Updatemenubar handles greying out (and re-enabling) of menu items depending on whether there -is a current window and its state.

- -The rest of the methods are all callbacks and simple to understand. They check whether there is an active -window (and complain loudly if there is none: the corresponding menu entry should have been disabled -in that case!) and call the appropriate window method. Only the _open method (the common code -for Open and New) deserves some mention. It instantiates a TEWindow -object and opens it with the title, filename and contents of the file to edit. Note that FrameWork takes -care of remembering the window object. A minor note on opening the file in binary mode: this is because -TextEdit expects MacOS style carriage-return terminated lines, not python/unix/C style newline-terminated -lines.

- -Oh yes: the quit callback does a little magic too. It closes all windows, and only if this -succeeds it actually quits. This gives the user a chance to cancel the operation if some files are unsaved. -

- -Lastly, there is the idle method, called by the Application base class when no event -is available. It is forwarded to the active window, so it can blink the text caret.

- -The TEWindow object handles a single window. Due to this structuring it is absolutely no -problem to have multiple windows open at the same time (although a real application should exercise care when -two windows refer to the same document). TEWindow uses the standard init code inherited from -ScrolledWindow, and sets itself up at the time of the open call. It obtains screen -coordinates, opens the window, creates rectangles for TextEdit to work in (the magical number 15 -here is the size of a normal scroll bar: unfortunately there is no symbolic constant for it), -creates the TextEdit object and initializes it with our data. Finally, the scroll bars are created (the -initial values will be obtained automatically through getscrollbarvalues) and we activate -ourselves (this is unfortunately not done automatically by the MacOS event handling code).

- -Do_idle simply calls the TextEdit routine that blinks the cursor. Getscrollbarvalues -returns the current X and Y scrollbar values, scaled to 0..32767. For X we return None, -which means "no scrollbar, please", for Y we use the scaler provided by ScrolledWindow.

- -Scrollbar_callback is called when the user uses the scrollbar. It is passed a string 'x' -or 'y', one of 'set', '-', '--', '+', '++' and (for set) an absolute -value. Note that the sign of the value passed to TEPinScroll is counter-intuitive.

- -do_activate (de)activates the scrollbars and calls the relevant TextEdit routine. Moreover, it -tells the application object if we are now the active window, and updates the menubar. The next few methods -are update and menu callbacks, and pretty straightforward. Note that do_close can -return without closing the window (if the document is changed and the users cancels out of the operation). -Also note the "magic" in menu_save_as -that set the correct window title.

- -Things get moderately interesting again at the cut/copy/paste handling, since the TextEdit scrap is -separate from the desktop scrap. For that reason there are various calls to routines that move the scrap -back and forth. Have_selection is called by the menubar update code to determine whether cut and -copy should be enabled.

- -Understanding the main program is left as an exercise to the reader.

- -


-That's all for this example, you could now continue with the next example, where we use WASTE, a more-or-less -TextEdit compatible library with more functionality, to rebuild our editor. Or you can -return to the table of contents to pick another topic.

diff --git a/project/jni/python/src/Mac/Demo/textedit/ped.py b/project/jni/python/src/Mac/Demo/textedit/ped.py deleted file mode 100644 index 3e91b32a6..000000000 --- a/project/jni/python/src/Mac/Demo/textedit/ped.py +++ /dev/null @@ -1,359 +0,0 @@ -# A minimal text editor. -# -# To be done: -# - Update viewrect after resize -# - Handle horizontal scrollbar correctly -# - Functionality: find, etc. - -from Carbon.Menu import DrawMenuBar -from FrameWork import * -from Carbon import Win -from Carbon import Qd -from Carbon import TE -from Carbon import Scrap -import os -import macfs - -class TEWindow(ScrolledWindow): - def open(self, path, name, data): - self.path = path - self.name = name - r = windowbounds(400, 400) - w = Win.NewWindow(r, name, 1, 0, -1, 1, 0) - self.wid = w - x0, y0, x1, y1 = self.wid.GetWindowPort().GetPortBounds() - x0 = x0 + 4 - y0 = y0 + 4 - x1 = x1 - 20 - y1 = y1 - 20 - vr = dr = x0, y0, x1, y1 - ##vr = 4, 0, r[2]-r[0]-15, r[3]-r[1]-15 - ##dr = (0, 0, vr[2], 0) - Qd.SetPort(w) - Qd.TextFont(4) - Qd.TextSize(9) - self.ted = TE.TENew(dr, vr) - self.ted.TEAutoView(1) - self.ted.TESetText(data) - w.DrawGrowIcon() - self.scrollbars() - self.changed = 0 - self.do_postopen() - self.do_activate(1, None) - - def do_idle(self): - self.ted.TEIdle() - - def getscrollbarvalues(self): - dr = self.ted.destRect - vr = self.ted.viewRect - height = self.ted.nLines * self.ted.lineHeight - vx = self.scalebarvalue(dr[0], dr[2]-dr[0], vr[0], vr[2]) - vy = self.scalebarvalue(dr[1], dr[1]+height, vr[1], vr[3]) - print dr, vr, height, vx, vy - return None, vy - - def scrollbar_callback(self, which, what, value): - if which == 'y': - if what == 'set': - height = self.ted.nLines * self.ted.lineHeight - cur = self.getscrollbarvalues()[1] - delta = (cur-value)*height/32767 - if what == '-': - delta = self.ted.lineHeight - elif what == '--': - delta = (self.ted.viewRect[3]-self.ted.lineHeight) - if delta <= 0: - delta = self.ted.lineHeight - elif what == '+': - delta = -self.ted.lineHeight - elif what == '++': - delta = -(self.ted.viewRect[3]-self.ted.lineHeight) - if delta >= 0: - delta = -self.ted.lineHeight - self.ted.TEPinScroll(0, delta) - print 'SCROLL Y', delta - else: - pass # No horizontal scrolling - - def do_activate(self, onoff, evt): - print "ACTIVATE", onoff - ScrolledWindow.do_activate(self, onoff, evt) - if onoff: - self.ted.TEActivate() - self.parent.active = self - self.parent.updatemenubar() - else: - self.ted.TEDeactivate() - - def do_update(self, wid, event): - Qd.EraseRect(wid.GetWindowPort().GetPortBounds()) - self.ted.TEUpdate(wid.GetWindowPort().GetPortBounds()) - self.updatescrollbars() - - def do_contentclick(self, local, modifiers, evt): - shifted = (modifiers & 0x200) - self.ted.TEClick(local, shifted) - self.updatescrollbars() - self.parent.updatemenubar() - - def do_char(self, ch, event): - self.ted.TESelView() - self.ted.TEKey(ord(ch)) - self.changed = 1 - self.updatescrollbars() - self.parent.updatemenubar() - - def close(self): - if self.changed: - save = EasyDialogs.AskYesNoCancel('Save window "%s" before closing?'%self.name, 1) - if save > 0: - self.menu_save() - elif save < 0: - return - if self.parent.active == self: - self.parent.active = None - self.parent.updatemenubar() - del self.ted - self.do_postclose() - - def menu_save(self): - if not self.path: - self.menu_save_as() - return # Will call us recursively - print 'Saving to ', self.path - dhandle = self.ted.TEGetText() - data = dhandle.data - fp = open(self.path, 'wb') # NOTE: wb, because data has CR for end-of-line - fp.write(data) - if data[-1] <> '\r': fp.write('\r') - fp.close() - self.changed = 0 - - def menu_save_as(self): - path = EasyDialogs.AskFileForSave(message='Save as:') - if not path: return - self.path = path - self.name = os.path.split(self.path)[-1] - self.wid.SetWTitle(self.name) - self.menu_save() - - def menu_cut(self): - self.ted.TESelView() - self.ted.TECut() - if hasattr(Scrap, 'ZeroScrap'): - Scrap.ZeroScrap() - else: - Scrap.ClearCurrentScrap() - TE.TEToScrap() - self.updatescrollbars() - self.parent.updatemenubar() - self.changed = 1 - - def menu_copy(self): - self.ted.TECopy() - if hasattr(Scrap, 'ZeroScrap'): - Scrap.ZeroScrap() - else: - Scrap.ClearCurrentScrap() - TE.TEToScrap() - self.updatescrollbars() - self.parent.updatemenubar() - - def menu_paste(self): - TE.TEFromScrap() - self.ted.TESelView() - self.ted.TEPaste() - self.updatescrollbars() - self.parent.updatemenubar() - self.changed = 1 - - def menu_clear(self): - self.ted.TESelView() - self.ted.TEDelete() - self.updatescrollbars() - self.parent.updatemenubar() - self.changed = 1 - - def have_selection(self): - return (self.ted.selStart < self.ted.selEnd) - -class Ped(Application): - def __init__(self): - Application.__init__(self) - self.num = 0 - self.active = None - self.updatemenubar() - - def makeusermenus(self): - self.filemenu = m = Menu(self.menubar, "File") - self.newitem = MenuItem(m, "New window", "N", self.open) - self.openitem = MenuItem(m, "Open...", "O", self.openfile) - self.closeitem = MenuItem(m, "Close", "W", self.closewin) - m.addseparator() - self.saveitem = MenuItem(m, "Save", "S", self.save) - self.saveasitem = MenuItem(m, "Save as...", "", self.saveas) - m.addseparator() - self.quititem = MenuItem(m, "Quit", "Q", self.quit) - - self.editmenu = m = Menu(self.menubar, "Edit") - self.undoitem = MenuItem(m, "Undo", "Z", self.undo) - self.cutitem = MenuItem(m, "Cut", "X", self.cut) - self.copyitem = MenuItem(m, "Copy", "C", self.copy) - self.pasteitem = MenuItem(m, "Paste", "V", self.paste) - self.clearitem = MenuItem(m, "Clear", "", self.clear) - - # Not yet implemented: - self.undoitem.enable(0) - - # Groups of items enabled together: - self.windowgroup = [self.closeitem, self.saveitem, self.saveasitem, self.editmenu] - self.focusgroup = [self.cutitem, self.copyitem, self.clearitem] - self.windowgroup_on = -1 - self.focusgroup_on = -1 - self.pastegroup_on = -1 - - def updatemenubar(self): - changed = 0 - on = (self.active <> None) - if on <> self.windowgroup_on: - for m in self.windowgroup: - m.enable(on) - self.windowgroup_on = on - changed = 1 - if on: - # only if we have an edit menu - on = self.active.have_selection() - if on <> self.focusgroup_on: - for m in self.focusgroup: - m.enable(on) - self.focusgroup_on = on - changed = 1 - if hasattr(Scrap, 'InfoScrap'): - on = (Scrap.InfoScrap()[0] <> 0) - else: - flavors = Scrap.GetCurrentScrap().GetScrapFlavorInfoList() - for tp, info in flavors: - if tp == 'TEXT': - on = 1 - break - else: - on = 0 - if on <> self.pastegroup_on: - self.pasteitem.enable(on) - self.pastegroup_on = on - changed = 1 - if changed: - DrawMenuBar() - - # - # Apple menu - # - - def do_about(self, id, item, window, event): - EasyDialogs.Message("A simple single-font text editor") - - # - # File menu - # - - def open(self, *args): - self._open(0) - - def openfile(self, *args): - self._open(1) - - def _open(self, askfile): - if askfile: - path = EasyDialogs.AskFileForOpen(typeList=('TEXT',)) - if not path: - return - name = os.path.split(path)[-1] - try: - fp = open(path, 'rb') # NOTE binary, we need cr as end-of-line - data = fp.read() - fp.close() - except IOError, arg: - EasyDialogs.Message("IOERROR: %r" % (arg,)) - return - else: - path = None - name = "Untitled %d"%self.num - data = '' - w = TEWindow(self) - w.open(path, name, data) - self.num = self.num + 1 - - def closewin(self, *args): - if self.active: - self.active.close() - else: - EasyDialogs.Message("No active window?") - - def save(self, *args): - if self.active: - self.active.menu_save() - else: - EasyDialogs.Message("No active window?") - - def saveas(self, *args): - if self.active: - self.active.menu_save_as() - else: - EasyDialogs.Message("No active window?") - - - def quit(self, *args): - for w in self._windows.values(): - w.close() - if self._windows: - return - self._quit() - - # - # Edit menu - # - - def undo(self, *args): - pass - - def cut(self, *args): - if self.active: - self.active.menu_cut() - else: - EasyDialogs.Message("No active window?") - - def copy(self, *args): - if self.active: - self.active.menu_copy() - else: - EasyDialogs.Message("No active window?") - - def paste(self, *args): - if self.active: - self.active.menu_paste() - else: - EasyDialogs.Message("No active window?") - - def clear(self, *args): - if self.active: - self.active.menu_clear() - else: - EasyDialogs.Message("No active window?") - - # - # Other stuff - # - - def idle(self, *args): - if self.active: - self.active.do_idle() - else: - Qd.SetCursor(Qd.GetQDGlobalsArrow()) - -def main(): - App = Ped() - App.mainloop() - -if __name__ == '__main__': - main() diff --git a/project/jni/python/src/Mac/Extras.ReadMe.txt b/project/jni/python/src/Mac/Extras.ReadMe.txt deleted file mode 100644 index 2d7fd42ac..000000000 --- a/project/jni/python/src/Mac/Extras.ReadMe.txt +++ /dev/null @@ -1,5 +0,0 @@ -This folder contains examples of Python usage and useful scripts and tools. - -You should be aware that these are not Macintosh-specific but are shared -among Python on all platforms, so there are some that only run on Windows -or Unix or another platform, and/or make little sense on a Macintosh. diff --git a/project/jni/python/src/Mac/Extras.install.py b/project/jni/python/src/Mac/Extras.install.py deleted file mode 100644 index ce00af382..000000000 --- a/project/jni/python/src/Mac/Extras.install.py +++ /dev/null @@ -1,54 +0,0 @@ -"""Recursively copy a directory but skip undesired files and -directories (CVS, backup files, pyc files, etc)""" - -import sys -import os -import shutil - -verbose = 1 -debug = 0 - -def isclean(name): - if name == 'CVS': return 0 - if name == '.cvsignore': return 0 - if name == '.DS_store': return 0 - if name == '.svn': return 0 - if name.endswith('~'): return 0 - if name.endswith('.BAK'): return 0 - if name.endswith('.pyc'): return 0 - if name.endswith('.pyo'): return 0 - if name.endswith('.orig'): return 0 - return 1 - -def copycleandir(src, dst): - for cursrc, dirs, files in os.walk(src): - assert cursrc.startswith(src) - curdst = dst + cursrc[len(src):] - if verbose: - print "mkdir", curdst - if not debug: - if not os.path.exists(curdst): - os.makedirs(curdst) - for fn in files: - if isclean(fn): - if verbose: - print "copy", os.path.join(cursrc, fn), os.path.join(curdst, fn) - if not debug: - shutil.copy2(os.path.join(cursrc, fn), os.path.join(curdst, fn)) - else: - if verbose: - print "skipfile", os.path.join(cursrc, fn) - for i in range(len(dirs)-1, -1, -1): - if not isclean(dirs[i]): - if verbose: - print "skipdir", os.path.join(cursrc, dirs[i]) - del dirs[i] - -def main(): - if len(sys.argv) != 3: - sys.stderr.write("Usage: %s srcdir dstdir\n" % sys.argv[0]) - sys.exit(1) - copycleandir(sys.argv[1], sys.argv[2]) - -if __name__ == '__main__': - main() diff --git a/project/jni/python/src/Mac/IDLE/Info.plist.in b/project/jni/python/src/Mac/IDLE/Info.plist.in deleted file mode 100644 index 58e913c56..000000000 --- a/project/jni/python/src/Mac/IDLE/Info.plist.in +++ /dev/null @@ -1,55 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeExtensions - - py - pyw - - CFBundleTypeIconFile - PythonSource.icns - CFBundleTypeName - Python Script - CFBundleTypeRole - Editor - - - CFBundleTypeExtensions - - pyc - pyo - - CFBundleTypeIconFile - PythonCompiled.icns - CFBundleTypeName - Python Bytecode Document - CFBundleTypeRole - Editor - - - CFBundleExecutable - IDLE - CFBundleGetInfoString - %VERSION%, © 001-2006 Python Software Foundation - CFBundleIconFile - IDLE.icns - CFBundleIdentifier - org.python.IDLE - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - IDLE - CFBundlePackageType - APPL - CFBundleShortVersionString - %VERSION% - CFBundleVersion - %VERSION% - - diff --git a/project/jni/python/src/Mac/IDLE/Makefile.in b/project/jni/python/src/Mac/IDLE/Makefile.in deleted file mode 100644 index 496c139e7..000000000 --- a/project/jni/python/src/Mac/IDLE/Makefile.in +++ /dev/null @@ -1,60 +0,0 @@ -prefix=@prefix@ -CC=@CC@ -LD=@CC@ -BASECFLAGS=@BASECFLAGS@ -OPT=@OPT@ -CFLAGS=$(BASECFLAGS) $(OPT) -LDFLAGS=@LDFLAGS@ -srcdir= @srcdir@ -VERSION= @VERSION@ -UNIVERSALSDK=@UNIVERSALSDK@ -builddir= ../.. -PYTHONFRAMEWORK=@PYTHONFRAMEWORK@ - -RUNSHARED= @RUNSHARED@ -BUILDEXE= @BUILDEXEEXT@ -BUILDPYTHON= $(builddir)/python$(BUILDEXE) - -# Deployment target selected during configure, to be checked -# by distutils -MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@ -@EXPORT_MACOSX_DEPLOYMENT_TARGET@export MACOSX_DEPLOYMENT_TARGET - -BUNDLEBULDER=$(srcdir)/../../Lib/plat-mac/bundlebuilder.py - -PYTHONAPPSDIR=/Applications/$(PYTHONFRAMEWORK) $(VERSION) - -all: IDLE.app - -install: IDLE.app $(srcdir)/config-main.def $(srcdir)/config-extensions.def - test -d "$(DESTDIR)$(PYTHONAPPSDIR)" || mkdir -p "$(DESTDIR)$(PYTHONAPPSDIR)" - -test -d "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app" && rm -r "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app" - /bin/cp -PR IDLE.app "$(DESTDIR)$(PYTHONAPPSDIR)" - touch "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app" - /bin/cp $(srcdir)/config-main.def "$(DESTDIR)$(prefix)/lib/python$(VERSION)/idlelib/config-main.def" - /bin/cp $(srcdir)/config-extensions.def "$(DESTDIR)$(prefix)/lib/python$(VERSION)/idlelib/config-extensions.def" - -clean: - rm -rf IDLE.app - -IDLE.app: \ - $(srcdir)/../Icons/IDLE.icns $(srcdir)/idlemain.py \ - $(srcdir)/../Icons/PythonSource.icns \ - $(srcdir)/../Icons/PythonCompiled.icns Info.plist - rm -fr IDLE.app - $(RUNSHARED) @ARCH_RUN_32BIT@ $(BUILDPYTHON) $(BUNDLEBULDER) \ - --builddir=. \ - --name=IDLE \ - --link-exec \ - --plist=Info.plist \ - --mainprogram=$(srcdir)/idlemain.py \ - --iconfile=$(srcdir)/../Icons/IDLE.icns \ - --resource=$(srcdir)/../Icons/PythonSource.icns \ - --resource=$(srcdir)/../Icons/PythonCompiled.icns \ - --python=$(prefix)/Resources/Python.app/Contents/MacOS/$(PYTHONFRAMEWORK)`test -f "$(DESTDIR)$(prefix)/Resources/Python.app/Contents/MacOS/$(PYTHONFRAMEWORK)-32" && echo "-32"` \ - build - - -Info.plist: $(srcdir)/Info.plist.in - sed 's/%VERSION%/'"`$(RUNSHARED) $(BUILDPYTHON) -c 'import platform; print platform.python_version()'`"'/g' < $(srcdir)/Info.plist.in > Info.plist - diff --git a/project/jni/python/src/Mac/IDLE/config-extensions.def b/project/jni/python/src/Mac/IDLE/config-extensions.def deleted file mode 100644 index c17f068e2..000000000 --- a/project/jni/python/src/Mac/IDLE/config-extensions.def +++ /dev/null @@ -1,88 +0,0 @@ -# config-extensions.def -# -# IDLE reads several config files to determine user preferences. This -# file is the default configuration file for IDLE extensions settings. -# -# Each extension must have at least one section, named after the extension -# module. This section must contain an 'enable' item (=1 to enable the -# extension, =0 to disable it), it may contain 'enable_editor' or 'enable_shell' -# items, to apply it only to editor/shell windows, and may also contain any -# other general configuration items for the extension. -# -# Each extension must define at least one section named ExtensionName_bindings -# or ExtensionName_cfgBindings. If present, ExtensionName_bindings defines -# virtual event bindings for the extension that are not user re-configurable. -# If present, ExtensionName_cfgBindings defines virtual event bindings for the -# extension that may be sensibly re-configured. -# -# If there are no keybindings for a menus' virtual events, include lines like -# <>= (See [CodeContext], below.) -# -# Currently it is necessary to manually modify this file to change extension -# key bindings and default values. To customize, create -# ~/.idlerc/config-extensions.cfg and append the appropriate customized -# section(s). Those sections will override the defaults in this file. -# -# Note: If a keybinding is already in use when the extension is -# loaded, the extension's virtual event's keybinding will be set to ''. -# -# See config-keys.def for notes on specifying keys and extend.txt for -# information on creating IDLE extensions. - -[FormatParagraph] -enable=1 -[FormatParagraph_cfgBindings] -format-paragraph= - -[AutoExpand] -enable=1 -[AutoExpand_cfgBindings] -expand-word= - -[ZoomHeight] -enable=1 -[ZoomHeight_cfgBindings] -zoom-height= - -[ScriptBinding] -enable=1 -[ScriptBinding_cfgBindings] -run-module= -check-module= - -[CallTips] -enable=1 -[CallTips_cfgBindings] -force-open-calltip= -[CallTips_bindings] -try-open-calltip= -refresh-calltip= - -[ParenMatch] -enable=1 -style= expression -flash-delay= 500 -bell= 1 -[ParenMatch_cfgBindings] -flash-paren= -[ParenMatch_bindings] -paren-closed= - -[AutoComplete] -enable=1 -popupwait=2000 -[AutoComplete_cfgBindings] -force-open-completions= -[AutoComplete_bindings] -autocomplete= -try-open-completions= - -[CodeContext] -enable=1 -enable_shell=0 -numlines=3 -visible=0 -bgcolor=LightGray -fgcolor=Black -[CodeContext_bindings] -toggle-code-context= diff --git a/project/jni/python/src/Mac/IDLE/config-main.def b/project/jni/python/src/Mac/IDLE/config-main.def deleted file mode 100644 index 4691a8529..000000000 --- a/project/jni/python/src/Mac/IDLE/config-main.def +++ /dev/null @@ -1,79 +0,0 @@ -# IDLE reads several config files to determine user preferences. This -# file is the default config file for general idle settings. -# -# When IDLE starts, it will look in -# the following two sets of files, in order: -# -# default configuration -# --------------------- -# config-main.def the default general config file -# config-extensions.def the default extension config file -# config-highlight.def the default highlighting config file -# config-keys.def the default keybinding config file -# -# user configuration -# ------------------- -# ~/.idlerc/config-main.cfg the user general config file -# ~/.idlerc/config-extensions.cfg the user extension config file -# ~/.idlerc/config-highlight.cfg the user highlighting config file -# ~/.idlerc/config-keys.cfg the user keybinding config file -# -# On Windows2000 and Windows XP the .idlerc directory is at -# Documents and Settings\\.idlerc -# -# On Windows98 it is at c:\.idlerc -# -# Any options the user saves through the config dialog will be saved to -# the relevant user config file. Reverting any general setting to the -# default causes that entry to be wiped from the user file and re-read -# from the default file. User highlighting themes or keybinding sets are -# retained unless specifically deleted within the config dialog. Choosing -# one of the default themes or keysets just applies the relevant settings -# from the default file. -# -# Additional help sources are listed in the [HelpFiles] section and must be -# viewable by a web browser (or the Windows Help viewer in the case of .chm -# files). These sources will be listed on the Help menu. The pattern is -# -# You can't use a semi-colon in a menu item or path. The path will be platform -# specific because of path separators, drive specs etc. -# -# It is best to use the Configuration GUI to set up additional help sources! -# Example: -#1 = My Extra Help Source;/usr/share/doc/foo/index.html -#2 = Another Help Source;/path/to/another.pdf - -[General] -editor-on-startup= 0 -autosave= 0 -print-command-posix=lpr %s -print-command-win=start /min notepad /p %s -delete-exitfunc= 1 - -[EditorWindow] -width= 80 -height= 40 -font= courier -font-size= 10 -font-bold= 0 -encoding= none - -[FormatParagraph] -paragraph=70 - -[Indent] -use-spaces= 1 -num-spaces= 4 - -[Theme] -default= 1 -name= IDLE Classic - -[Keys] -default= 1 -name= IDLE Classic OSX - -[History] -cyclic=1 - -[HelpFiles] diff --git a/project/jni/python/src/Mac/IDLE/idlemain.py b/project/jni/python/src/Mac/IDLE/idlemain.py deleted file mode 100644 index d6803ba83..000000000 --- a/project/jni/python/src/Mac/IDLE/idlemain.py +++ /dev/null @@ -1,73 +0,0 @@ -""" -Bootstrap script for IDLE as an application bundle. -""" -import sys, os - -# Change the current directory the user's home directory, that way we'll get -# a more useful default location in the open/save dialogs. -os.chdir(os.path.expanduser('~/Documents')) - - -# Make sure sys.executable points to the python interpreter inside the -# framework, instead of at the helper executable inside the application -# bundle (the latter works, but doesn't allow access to the window server) -# -# .../IDLE.app/ -# Contents/ -# MacOS/ -# IDLE (a python script) -# Python{-32} (symlink) -# Resources/ -# idlemain.py (this module) -# ... -# -# ../IDLE.app/Contents/MacOS/Python{-32} is symlinked to -# ..Library/Frameworks/Python.framework/Versions/m.n -# /Resources/Python.app/Contents/MacOS/Python{-32} -# which is the Python interpreter executable -# -# The flow of control is as follows: -# 1. IDLE.app is launched which starts python running the IDLE script -# 2. IDLE script exports -# PYTHONEXECUTABLE = .../IDLE.app/Contents/MacOS/Python{-32} -# (the symlink to the framework python) -# 3. IDLE script alters sys.argv and uses os.execve to replace itself with -# idlemain.py running under the symlinked python. -# This is the magic step. -# 4. During interpreter initialization, because PYTHONEXECUTABLE is defined, -# sys.executable may get set to an unuseful value. -# -# (Note that the IDLE script and the setting of PYTHONEXECUTABLE is -# generated automatically by bundlebuilder in the Python 2.x build. -# Also, IDLE invoked via command line, i.e. bin/idle, bypasses all of -# this.) -# -# Now fix up the execution environment before importing idlelib. - -# Reset sys.executable to its normal value, the actual path of -# the interpreter in the framework, by following the symlink -# exported in PYTHONEXECUTABLE. -pyex = os.environ['PYTHONEXECUTABLE'] -sys.executable = os.path.join(os.path.dirname(pyex), os.readlink(pyex)) - -# Remove any sys.path entries for the Resources dir in the IDLE.app bundle. -p = pyex.partition('.app') -if p[2].startswith('/Contents/MacOS/Python'): - sys.path = [value for value in sys.path if - value.partition('.app') != (p[0], p[1], '/Contents/Resources')] - -# Unexport PYTHONEXECUTABLE so that the other Python processes started -# by IDLE have a normal sys.executable. -del os.environ['PYTHONEXECUTABLE'] - -# Look for the -psn argument that the launcher adds and remove it, it will -# only confuse the IDLE startup code. -for idx, value in enumerate(sys.argv): - if value.startswith('-psn_'): - del sys.argv[idx] - break - -# Now it is safe to import idlelib. -from idlelib.PyShell import main -if __name__ == '__main__': - main() diff --git a/project/jni/python/src/Mac/Icons/Disk Image.icns b/project/jni/python/src/Mac/Icons/Disk Image.icns deleted file mode 100644 index 35f16bf6e5075867e9e074021cdc6e61ca0b7a8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50703 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 BI&lC1 diff --git a/project/jni/python/src/Mac/Icons/Python Folder.icns b/project/jni/python/src/Mac/Icons/Python Folder.icns deleted file mode 100644 index ae766ee15898f12278a4f4cb93561861bb839fb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133608 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%0DE0C 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�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

M= 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

WUeu& zF`H!fPMI)e&a95YirNj!ax2=Ks!9s;bF(v2qQj!sZdkv1(X1(*p4S-E*xieJCr+3$ zb5?K1!ihE2Ju_!a?yfH>E-K8=PK}LRwQ)7jD4+pfuei9u^AzfE#QU1?rrYe#qA#L3gAO`bey(uCTS z?EJjkoXpgaO$TDBM7o=x2nVXegSW;4ymleBj z-^(B0->fdLPh`Kypu?`L6_uVBdG^Y_9joU}>Tap4EGf*($;vOQtf{ZBE6*XDzJBWzk$32EtBTh>i)DKE;;FDx!Cuc)r6t#52;@9ybrC`mlDXaB7`56*Rz zm&!7oV-Rj;5Y(|xNKZ|uZ7#|yDy^(`85viAN6XKXLKGfoY|s z-~ocY%tHE}38~2`ImP7_6}2s0{SzlonKE_S^qF%PE?c>DT6<;k!K24dpF6c{aY-p? zfIyf@SjRUpB{{#cvZAb}t$*6=`3n{_EEHR`ceSiuXAiC{E=vFn z5bR_S)DKNa$tbI=D64Gln?7&;+{RfAGeoCPpEjwtxvc%q#PA`K07Rb4xd9XNUU{Dli=j&3h3iRT854=iOB z(hH1DDk(27E34_8*weIl-P#q4=gpisXW?Sd_`tyfx4*qTbN>99qdN);5_v%51FT|t zL9vOYWu+x0Rn3h(vli?;c=FhZDvgXV0EKb!2-%0eFZ&k3~W& zASy1uw5+74D7AOv{;NMfzkC1g?VHyxpFV#4=)r@B56+)Dd*vMh{>y}t1cG6(`QegJbv`xn!>_3VbGuu zr--U=cywku3x=!@xsN6mo8qsaQ@u6vu949K6mBZ-U+3Ju_Dap z8N`GYJR{@cn-?#eQc=I+=FMv$br&vPX}T_W_3D+&mo8qqa`WEhoeky1u|l8`gYydV zZlTFp#S<6LY^a_8;QG}omoHwra{cC==DQ7dcy8ahcmK|XrA<`@G2kJCNm3p`DTP%v zUHx?pvmb)oeEHh78@C@ke)6>83IF3q5AWT-cl*MYNgdU>VM5I38FVKKyZT4v)^^ud z71qsuaQV`uD>trRzIOZGy<0bL-oAb7?t`nx_HA0fa7tTARw#JXpqJm=FC@OWdBT** zZ7Xho)Ze~#;mWC&t|>F;E?v2L-MYeu$D!{V6rPw<(a==3;Npdg zS8v|BcK+PKo(c1puG_x*;IXZ<7A>7WwY|D1E8P{;P1g}n^YRamOU=kG%3?(lfGBTW;LAdGp4#E0<0m z*}G@owkw}sAKbmVyREIUsyHJx1u|?P8O&$v6%?JAmYJQNckTYehxhN^x^el;v4dNW zHT>thw|re^M{`X{R!UNGAb8jyQ9$24ATl8}Ju4?~^V6r#pFMf}@b0y<$F?15_|JQM z<;wofx{AEi#DpYI@yiVSt@18DVex6{nR%sk=bt}&+VDi|(YaD?EK1I(KCC2HCUuF<66SemYi%Ut*OfRYF*z@@LlZHnk5AIyMczo-YO)D16?5!!yNr{h5 zjFi2~pw4gQ5fqo4o{^SO-rTk5!0r2w9zVK&`^v?W+g2``J+YyzAR{q0CfOA<#=vC+ z8aPPLOifBFYw4dlZ`rzSyLW9}yI}6zd9%73%L{W-;^GqG9b~UCsHa#6ItIn3q-Uii zB_!w6c2Au-YsR#R6Z^pf2X&Rjx#@{<@d>fg*BRv5js0Si(=#(c0|yy-)y-Yq9gPhY z#YLr6HI-%g8A%OsOo`r1*BB(DR298JLkw9N39$)jIfW&~xoJrW@rmh$4dtBqnJI~J zv2pR{jMo^{3byjP#v~?ZW@jeFC8T8+losV?B*n)irR5bD6=tU=#>d3PhDm+`j~qlL zC8y_RCCA67Wfzu}=BFpd#U`ZW8Oia{vGFMlsT@i1(b16+ z(P|*`E}dnwFD#Ep%gaiNP07wLsmM=H0*xHRCnh8$#zsa)1cZgM-DFT^Vm4_^bxX|4 zO^Qv*0*xGGfkqCZV`5_CK;5x$C)Wf=(8xi2VSr^&PF_kJOjS%|L_}mnbZlHqcsOk2 zK*XRV#@5;?DJLT~F*CQMydX0%IwHIwj3+WSE;2ma-Nw!?7;WSrHZCov2&^z1F>+v! zZR8+6DkZzH6gF}Y3?4b~$1!q{gfemvi+|)G4|U`q0ME!l_UOpL=*Yq7$N|IX$N?3W z7o0t?4co}U3!KXfUOm2Xe9xx&22atJ7u(gpM45mlvG6`rz^9YxkbMe)saptrNR9udF~CIXHCc%7X`& zuiSa^>fNhncTVryx)N#RVAq}lr?1?aQ% ztw%54y?OcI!l9k(m()taMh-S^*|KZ@3GniQTMwSUd-Lkil_NVhtUw((IB@FP?Mr7b z-@5<&-Md#$uN~dJVdac;=*Ypm6>HaR+OhxC^_v&YUA%e!*}HeIo`b?{)!aG*=<{TWOc!+<;#|?Si5oc(uK=bZQghC z^3A(9Pwm~hX3^w)(CUKPnNwyiSh`@&4-(uirOqe`n(yY1D zJ7=GN^X32dw+*lP-@N_wdfgg7WKYq_%Awr@riTi&R@KA`O4+T`x;koSifS? z>^!k& z?b;oO4(!>!ZrRc$ix$kD+S|5qxEMT-{9pFORwb>r$Kvu943++PVAJJ`afl~mmh8art2p0RMn#vOY$u2{aTf9`?> z^XJW;KB0HrvZ+0t?Oi>s;IV^Eg0{)!b*05U^A;~(wRY3Cox67J*}s3?wAu6L&Y3lR z^7Ktjd8I{F^{s8-)dj0mB|=h*izjTo`}Fzi4`09k{Q2X{hc~Y;Oq)Ju?wpy^r_R|G zHGBQUw6f}^Xx57ik|~PHVHx>-hyH#4^ySN^x6kfhKYL`?rd4xi&TW{_H+SZ=c?Y6r zoIbZQq@n>lcEGBl7n7bl>D`a_Zy(<{eQ4LFHOm&wpFL~t;w8(LFJC%;=KLdpzFoD` zQVOaH!D9!^>Xr#9^-Es8ytHTC^2Li5FIlp5>GBmTR<2sTX5IQV%jPaP6sHy#8tW8N zQ7R9b&|b;FuIreT+B0j%o|Q|MuUx%u!={Ff5*ya9->`Ahww*gSt(?E;P=bcFi<7op zafuo8IR?SKjG}s8Nof=3Em^g8?V5F)wr+3PA-Z$-zJrGkY*{sb#bHMiM^^_O-I7ud zmh%h(OrrX}$*EIUY*@c`^}5a5ckgRF(6FE3K*K@713T9*TX6WGww;Tci#i7=IU%~T#%O_0CE%u*mMvMje9Z(miJZ;Hj~?8+cjwlPt5>dAw`sxr4m$@|XD3@j=-L83PI2wP z=$QE{moHtsU{!yJKL;N&@NVoyg~Q(bj!xreozv!jExaY23@XnBGDK@L&S@`CB> z)~sBzU_rZrd0l5!WqCEi0);}-y4w-ONRMd2U~ptB1S0r?0nXY*9^BW=2j)Sy^*` zO=fOM-t?*MrP&d}pcMoQ1kHSd6N=mVr%i4N_jGsj^b7EI^NY-{?w&M#(X!QRAcF^U z`>G0{g9knJHKul_iTT)nLwOeIZM{8qQes+3_3V86qQ`o^fG&&_C zGcz^HFElDLG|1n}*+N%WU#jlGNqbebhR*hunxd?jaeU3I4J zX_X6~KC!*JC^IP`A>IJA>cCRW)-yCAH8UflxTY$lbJnbxGiOX`FG&y3)z`6^H?y}E zGI$UUT1p^n?GY50l9iE~QP$K|me=0XKY7Z8){?B4(5gkVCpA_Sq$R}0C%b@@@*27Y z$0ns`q$Z^lH}_3#%gf2m&PYp2@0&YsW=~UjQFc;XTzs4zXw^ZArI1r_d`f0kdQx0c zPEF6$nX_k1oicG^|HLUhE%j9;d1>)+@riL#*BMlJOnhTgGO{w#;^PxD^Q)S>I@(+6 zt4d2Mt81!C3$j3+^hDq53<`cmN?tKZ8JSt>32}+(*@Yz~IcZ7pNy%A7phX8+sfi7- zO!4MS*BI1t&-1xQC#7a&XC}larsWitmgQz7#wR3ao;Sv6JHlAs!HyKp)iy?ytnXw5OdBx?B!Go~yF!10(gr^O3*@1`<(z1iJTNATx>*mh$D`%1Ef_4!I25k;o-j6#tt%5qLMNTkyjl=goWZ+b$~W@FuLksbk)J= zsslo+4oWOQmt!~(x5W>AkHaV*5&}#D0tEICLDbQT6iJO2p_SQ0n9E}R@vQ+15ejLf zM6B!o|5_m$8BW+(7Ml0AR6zpPu>2W&i>}qyy&t|Nmza+VxC0FO#Z*#R}=r z%rEwI4*-z~2=D*@KZo8afXN)?$kUJXE&~J_QBL9d*G=DAfXUz~a`6BE|IVDQ?Et=F z6z~84|G$Ng)D%pCdM2$WsNVno|FI4o1Ar$LT8OU=VjTwguTOv~;fvo8CbdTxHbVuTY11JEa>QelJy7fa z|B0hRZ(8gK%sNc^5baYSlNIzZAxzu<|NrVp^AyN~bXhKj6aMw{;!ivj%Q7jVoyUUe zhFi)sPJwKp;G?2YZAI{Y2GBSK3c#;vL0F2!`nQtUGpWdn2__w+RyUHpaONX*nnnOe zEY8dial+4Vnnr-&4u~~4$$#qw$qQMcbTR4RsCp3Yd8$Xl2w+Pj5d8oD|4O7`1n_T0 zcoY|FCk-n>sJu1>HtR0HuPQ($U-#yZwAde z0>X%s=+G=h=03oBzZcd3B~efte$XDWedz3OrX(6mq;f{K03xFQ|Nnm}v`GL=Tunqo z|NsC07o%L`O{DJ#D`S-2haS|}`42@28%DYcMs_odPB(V@zZjElI$<45g5d-Ue~5d2 zyAd{xbQP@fHALQJ@-K@PRS>7)V&anD|9{h|-xFtK;Bnbcr2YR-@=-ki7+Hh^Z$hG% zFnLFm>h?3RNTfU_Y%@f~8*L_PJAjc@CZ9ml6Jj@rd}GQ&bqBD@))ATg{{R2#%|>ne z8QJ8Upwk^7AL7T~136fz9RaM$?L^f+AeVg$;iSI(3SGq8AIe4b1i-4$LA3o}BYCKu z02o($oZrMZU6uOdnhN>(?0`;H__$qCpW4`KLZ1^? z#14Gq?-W{ipMlZzB|cjba^EbdUHOCk&&YQMVFy0eD;kZ0vrHl`0q&(u|CfO=fv679 zzjAPJ(SXn=YW(4s9Sy7o8_5AW#u{JDgXLb)YW#~U?teCG$E{s=mPwWqKVZY zLm9bFgF_fE@d142G)OtsF(XqG;Rx7C=)7-AoMlU}4fF@c_4bt53fIfXehP2c|NsC0 zEsY94up1az^0BNuKylIs56I=~VD;1{7@2hmHNyU#RijDm1Mv!z!gUniV&VK+Bu+aA zaOZu(VkN53=OUU-g0kpbAfgI#EozgDg0qO}gZ-u{N_7AC|Ns9VT&Qk8@%?X5HEc_D z`xQ~D9<)1~f80lHo8Q%-y8VL4tNz|BxQCn)&f19N-A5KUK>b;8#wm!#-^O z&g5icj=P4C|I95$G)my=>|2LcSib~2Ws;ZhMUH<+5<;te2s*3WG zqWtXi$}8YZab1^6z;8Ael~z<%*VNS39sT+L<+R$GnySi*vf_fA zl5?OG@^^_SCkxf>=M+&k_BaQMfEQ~^$}6j?Yiet2kN^Dtaz<@UO?6ded1+Bz>FKZk z|NsAzEyhK4`grQJ|G$`7T~$?CQC?P3lwW)p)IGRm zE67g$1i;K8D5qBpGXLR%!jjUm^78VE%F{ppKc87%20FL1s4zb#d)w>(|Nkx#3r6CsRO2)8^&oWM`(QZ+!Xx|EFXD4i+YA zJAjdig;PLAd;Q=4e{OWAq^6~(XJlk%?)>uqMs0dpT1rZCQer}U?2p_ybyclTy zkIE^Kk&&65M?`w*pO5=&_&8Wu*f@FkMI>eAq{ReyI9QpPn3!2P1wxj;*<>Qd&&f*l z^vA%!z{teH&Yl0_!5m#yCPoHEMkZ!f4lXVZHdtb3WM42k%`%S l$?{l9SlVV}WJ2~RBNMZroDj8BKAJmOS*hQ(L$hK;aRJ$Fh(rJY diff --git a/project/jni/python/src/Mac/Icons/PythonSource.icns b/project/jni/python/src/Mac/Icons/PythonSource.icns deleted file mode 100644 index 9e35c1ecbe9507c78e4c5103cfb4e29a1b678d6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54522 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
#V0YEGa&z%OX4+G5zZ`lZ%x}P^|`sBXO^7QPy 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 diff --git a/project/jni/python/src/Mac/Icons/ReadMe.txt b/project/jni/python/src/Mac/Icons/ReadMe.txt deleted file mode 100644 index 226836abd..000000000 --- a/project/jni/python/src/Mac/Icons/ReadMe.txt +++ /dev/null @@ -1,3 +0,0 @@ -The icons for use on MacOS X were created by Jacob Rus -with some feedback from the folks on pythonmac-sig@python.org. - diff --git a/project/jni/python/src/Mac/Makefile.in b/project/jni/python/src/Mac/Makefile.in deleted file mode 100644 index 3981a96f0..000000000 --- a/project/jni/python/src/Mac/Makefile.in +++ /dev/null @@ -1,317 +0,0 @@ -# This file can be invoked from the various frameworkinstall... targets in the -# main Makefile. The next couple of variables are overridden on the -# commandline in that case. - -VERSION=@VERSION@ -builddir = .. -srcdir=@srcdir@ -prefix=@prefix@ -LIBDEST=$(prefix)/lib/python$(VERSION) -RUNSHARED=@RUNSHARED@ -BUILDEXE=@BUILDEXEEXT@ -BUILDPYTHON=$(builddir)/python$(BUILDEXE) -DESTDIR= -LDFLAGS=@LDFLAGS@ -FRAMEWORKUNIXTOOLSPREFIX=@FRAMEWORKUNIXTOOLSPREFIX@ -PYTHONFRAMEWORK=@PYTHONFRAMEWORK@ -PYTHONFRAMEWORKIDENTIFIER=@PYTHONFRAMEWORKIDENTIFIER@ - - -# These are normally glimpsed from the previous set -bindir=$(prefix)/bin -PYTHONAPPSDIR=/Applications/$(PYTHONFRAMEWORK) $(VERSION) -APPINSTALLDIR=$(prefix)/Resources/Python.app - -# Variables for installing the "normal" unix binaries -INSTALLED_PYTHONAPP=$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK) - -# Items more-or-less copied from the main Makefile -DIRMODE=755 -FILEMODE=644 -INSTALL=@INSTALL@ -INSTALL_SYMLINK=ln -fsn -INSTALL_PROGRAM=@INSTALL_PROGRAM@ -INSTALL_SCRIPT= @INSTALL_SCRIPT@ -INSTALL_DATA=@INSTALL_DATA@ -LN=@LN@ -STRIPFLAG=-s -CPMAC=/Developer/Tools/CpMac - -APPTEMPLATE=$(srcdir)/Resources/app -APPSUBDIRS=MacOS Resources Resources/English.lproj \ - Resources/English.lproj/Documentation \ - Resources/English.lproj/Documentation/doc \ - Resources/English.lproj/Documentation/ide -DOCDIR=$(srcdir)/Resources/app/Resources/English.lproj/Documentation -DOCINDEX=$(DOCDIR)/"Documentation idx" -CACHERSRC=$(srcdir)/scripts/cachersrc.py -compileall=$(srcdir)/../Lib/compileall.py - -installapps: install_Python install_BuildApplet install_PythonLauncher \ - install_IDLE checkapplepython install_pythonw install_versionedtools - -installapps4way: install_Python4way install_BuildApplet install_PythonLauncher install_IDLE install_pythonw4way install_versionedtools - - -install_pythonw: pythonw - $(INSTALL_PROGRAM) $(STRIPFLAG) pythonw "$(DESTDIR)$(prefix)/bin/pythonw$(VERSION)" - $(INSTALL_PROGRAM) $(STRIPFLAG) pythonw "$(DESTDIR)$(prefix)/bin/python$(VERSION)" - ln -sf python$(VERSION) "$(DESTDIR)$(prefix)/bin/python" - ln -sf pythonw$(VERSION) "$(DESTDIR)$(prefix)/bin/pythonw" - - -# Install 3 variants of python/pythonw: -# - 32-bit (i386 and ppc) -# - 64-bit (x86_64 and ppc64) -# - all (all four architectures) -# - Make 'python' and 'pythonw' aliases for the 32-bit variant -install_pythonw4way: pythonw-32 pythonw-64 pythonw - $(INSTALL_PROGRAM) $(STRIPFLAG) pythonw-64 "$(DESTDIR)$(prefix)/bin/pythonw$(VERSION)-64" - $(INSTALL_PROGRAM) $(STRIPFLAG) pythonw-64 "$(DESTDIR)$(prefix)/bin/python$(VERSION)-64" - ln -sf python$(VERSION)-64 "$(DESTDIR)$(prefix)/bin/python-64" - ln -sf pythonw$(VERSION)-64 "$(DESTDIR)$(prefix)/bin/pythonw-64" - - $(INSTALL_PROGRAM) $(STRIPFLAG) pythonw-32 "$(DESTDIR)$(prefix)/bin/pythonw$(VERSION)-32" - $(INSTALL_PROGRAM) $(STRIPFLAG) pythonw-32 "$(DESTDIR)$(prefix)/bin/python$(VERSION)-32" - ln -sf python$(VERSION)-32 "$(DESTDIR)$(prefix)/bin/python-32" - ln -sf pythonw$(VERSION)-32 "$(DESTDIR)$(prefix)/bin/pythonw-32" - - $(INSTALL_PROGRAM) $(STRIPFLAG) pythonw "$(DESTDIR)$(prefix)/bin/pythonw$(VERSION)-all" - $(INSTALL_PROGRAM) $(STRIPFLAG) pythonw "$(DESTDIR)$(prefix)/bin/python$(VERSION)-all" - ln -sf python$(VERSION)-all "$(DESTDIR)$(prefix)/bin/python-all" - ln -sf pythonw$(VERSION)-all "$(DESTDIR)$(prefix)/bin/pythonw-all" - - ln -sf pythonw$(VERSION)-32 "$(DESTDIR)$(prefix)/bin/pythonw$(VERSION)" - ln -sf python$(VERSION)-32 "$(DESTDIR)$(prefix)/bin/python$(VERSION)" - ln -sf pythonw$(VERSION)-32 "$(DESTDIR)$(prefix)/bin/pythonw" - ln -sf python$(VERSION)-32 "$(DESTDIR)$(prefix)/bin/python" - -# -# Install unix tools in /usr/local/bin. These are just aliases for the -# actual installation inside the framework. -# -installunixtools: - if [ ! -d "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ]; then \ - $(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ;\ - fi - for fn in python pythonw idle pydoc python-config smtpd.py \ - python$(VERSION) pythonw$(VERSION) idle$(VERSION) \ - pydoc$(VERSION) python$(VERSION)-config smtpd$(VERSION).py ;\ - do \ - ln -fs "$(prefix)/bin/$${fn}" "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin/$${fn}" ;\ - done - - -# TODO: install symlinks for -32, -64 and -all as well -installunixtools4way: installunixtools - - -# -# Like installunixtools, but only install links to the versioned binaries. -# -altinstallunixtools: - if [ ! -d "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ]; then \ - $(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ;\ - fi - for fn in python$(VERSION) pythonw$(VERSION) idle$(VERSION) \ - pydoc$(VERSION) python$(VERSION)-config smtpd$(VERSION).py ;\ - do \ - ln -fs "$(prefix)/bin/$${fn}" "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin/$${fn}" ;\ - done - -# TODO: -32, -64 and -all variants -altinstallunixtools4way: altinstallunixtools - -# By default most tools are installed without a version in their basename, to -# make it easier to install (and use) several python versions side-by-side move -# the tools to a version-specific name and add the non-versioned name as an -# alias. -install_versionedtools: - for fn in idle pydoc ;\ - do \ - if [ -h "$(DESTDIR)$(prefix)/bin/$${fn}" ]; then \ - continue ;\ - fi ;\ - mv "$(DESTDIR)$(prefix)/bin/$${fn}" "$(DESTDIR)$(prefix)/bin/$${fn}$(VERSION)" ;\ - ln -sf "$${fn}$(VERSION)" "$(DESTDIR)$(prefix)/bin/$${fn}" ;\ - done - if [ ! -h "$(DESTDIR)$(prefix)/bin/python-config" ]; then \ - mv "$(DESTDIR)$(prefix)/bin/python-config" "$(DESTDIR)$(prefix)/bin/python$(VERSION)-config" ;\ - ln -sf "python$(VERSION)-config" "$(DESTDIR)$(prefix)/bin/python-config" ; \ - fi - if [ ! -h "$(DESTDIR)$(prefix)/bin/smtpd.py" ]; then \ - mv "$(DESTDIR)$(prefix)/bin/smtpd.py" "$(DESTDIR)$(prefix)/bin/smtpd$(VERSION).py" ;\ - ln -sf "smtpd$(VERSION).py" "$(DESTDIR)$(prefix)/bin/smtpd.py" ;\ - fi - - -pythonw: $(srcdir)/Tools/pythonw.c Makefile - $(CC) $(LDFLAGS) -o $@ $(srcdir)/Tools/pythonw.c \ - -DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"' - -pythonw-32: $(srcdir)/Tools/pythonw.c Makefile - $(CC) $(LDFLAGS) -o $@ -arch i386 -arch ppc $(srcdir)/Tools/pythonw.c \ - -DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-32"' - -pythonw-64: $(srcdir)/Tools/pythonw.c Makefile - $(CC) $(LDFLAGS) -o $@ -arch x86_64 -arch ppc64 $(srcdir)/Tools/pythonw.c \ - -DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-64"' - -install_PythonLauncher: - cd PythonLauncher && make install DESTDIR=$(DESTDIR) - -install_Python: - @if test ! -f $(DOCINDEX); then \ - echo WARNING: you should run Apple Help Indexing Tool on $(DOCDIR); \ - fi - @for i in "$(PYTHONAPPSDIR)" "$(APPINSTALLDIR)" "$(APPINSTALLDIR)/Contents"; do \ - if test ! -d "$(DESTDIR)$$i"; then \ - echo "Creating directory $(DESTDIR)$$i"; \ - $(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$$i"; \ - fi;\ - done - @for i in $(APPSUBDIRS); do \ - if test ! -d "$(DESTDIR)$(APPINSTALLDIR)/Contents/$$i"; then \ - echo "Creating directory $(DESTDIR)$(APPINSTALLDIR)/Contents/$$i"; \ - $(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$(APPINSTALLDIR)/Contents/$$i"; \ - else true; \ - fi; \ - done - @for d in . $(APPSUBDIRS); \ - do \ - a=$(APPTEMPLATE)/$$d; \ - if test ! -d $$a; then continue; else true; fi; \ - b="$(DESTDIR)$(APPINSTALLDIR)/Contents/$$d"; \ - for i in $$a/*; \ - do \ - case $$i in \ - *CVS) ;; \ - *.svn) ;; \ - *.py[co]) ;; \ - *.orig) ;; \ - *~) ;; \ - *idx) \ - echo $(CPMAC) "$$i" $$b; \ - $(CPMAC) "$$i" "$$b"; \ - ;; \ - *) \ - if test -d $$i; then continue; fi; \ - if test -x $$i; then \ - echo $(INSTALL_SCRIPT) "$$i" "$$b"; \ - $(INSTALL_SCRIPT) "$$i" "$$b"; \ - else \ - echo $(INSTALL_DATA) "$$i" "$$b"; \ - $(INSTALL_DATA) "$$i" "$$b"; \ - fi;; \ - esac; \ - done; \ - done - $(INSTALL_PROGRAM) $(STRIPFLAG) $(BUILDPYTHON) "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)" - sed -e "s!%bundleid%!$(PYTHONFRAMEWORKIDENTIFIER)!g" \ - -e "s!%version%!`$(RUNSHARED) $(BUILDPYTHON) \ - -c 'import platform; print(platform.python_version())'`!g" \ - < "$(DESTDIR)$(APPINSTALLDIR)/Contents/Info.plist.in" \ - > "$(DESTDIR)$(APPINSTALLDIR)/Contents/Info.plist" - rm "$(DESTDIR)$(APPINSTALLDIR)/Contents/Info.plist.in" - -install_Python4way: install_Python - lipo -extract i386 -extract ppc7400 -output "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-32" "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)" - lipo -extract x86_64 -extract ppc64 -output "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-64" "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)" - - - -install_IDLE: - cd IDLE && make install - -install_BuildApplet: - $(RUNSHARED) @ARCH_RUN_32BIT@ $(BUILDPYTHON) $(srcdir)/scripts/BuildApplet.py \ - --destroot "$(DESTDIR)" \ - --python=$(prefix)/Resources/Python.app/Contents/MacOS/$(PYTHONFRAMEWORK)`test -f "$(DESTDIR)$(prefix)/Resources/Python.app/Contents/MacOS/$(PYTHONFRAMEWORK)-32" && echo "-32"` \ - --output "$(DESTDIR)$(PYTHONAPPSDIR)/Build Applet.app" \ - $(srcdir)/scripts/BuildApplet.py - -MACLIBDEST=$(LIBDEST)/plat-mac -MACTOOLSDEST=$(prefix)/Mac/Tools -MACTOOLSSRC=$(srcdir)/Mac/Tools -MACTOOLSSUBDIRS=IDE - -installmacsubtree: - @for i in $(MACTOOLSDEST); \ - do \ - if test ! -d $(DESTDIR)$$i; then \ - echo "Creating directory $(DESTDIR)$$i"; \ - $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ - else true; \ - fi; \ - done - @for d in $(MACTOOLSSUBDIRS); \ - do \ - a=$(MACTOOLSSRC)/$$d; \ - if test ! -d $$a; then continue; else true; fi; \ - b=$(DESTDIR)$(MACTOOLSDEST)/$$d; \ - if test ! -d $$b; then \ - echo "Creating directory $$b"; \ - $(INSTALL) -d -m $(DIRMODE) $$b; \ - else true; \ - fi; \ - done - @for d in $(MACTOOLSSUBDIRS); \ - do \ - a=$(MACTOOLSSRC)/$$d; \ - if test ! -d $$a; then continue; else true; fi; \ - b=$(DESTDIR)$(MACTOOLSDEST)/$$d; \ - for i in $$a/*; \ - do \ - case $$i in \ - *CVS) ;; \ - *.svn) ;; \ - *.py[co]) ;; \ - *.orig) ;; \ - *~) ;; \ - *.rsrc) \ - echo $(CPMAC) $$i $$b ; \ - $(CPMAC) $$i $$b ; \ - ;; \ - *) \ - if test -d $$i; then continue; fi; \ - if test -x $$i; then \ - echo $(INSTALL_SCRIPT) $$i $$b; \ - $(INSTALL_SCRIPT) $$i $$b; \ - else \ - echo $(INSTALL_DATA) $$i $$b; \ - $(INSTALL_DATA) $$i $$b; \ - fi;; \ - esac; \ - done; \ - done - - - $(RUNSHARED) @ARCH_RUN_32BIT@ $(BUILDPYTHON) $(CACHERSRC) -v $(DESTDIR)$(MACLIBDEST) $(DESTDIR)$(MACTOOLSDEST) - $(RUNSHARED) $(BUILDPYTHON) -Wi -tt $(compileall) -d $(MACTOOLSDEST) -x badsyntax $(DESTDIR)$(MACTOOLSDEST) - $(RUNSHARED) $(BUILDPYTHON) -O -Wi -tt $(compileall) -d $(MACTOOLSDEST) -x badsyntax $(DESTDIR)$(MACTOOLSDEST) - -$(INSTALLED_PYTHONAPP): install_Python - -installextras: $(srcdir)/Extras.ReadMe.txt $(srcdir)/Extras.install.py - $(INSTALL) -d "$(DESTDIR)$(PYTHONAPPSDIR)/Extras" - $(INSTALL) $(srcdir)/Extras.ReadMe.txt "$(DESTDIR)$(PYTHONAPPSDIR)/Extras/ReadMe.txt" - $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/Extras.install.py $(srcdir)/../Demo \ - "$(DESTDIR)$(PYTHONAPPSDIR)/Extras/Demo" - $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/Extras.install.py $(srcdir)/Demo \ - "$(DESTDIR)$(PYTHONAPPSDIR)/Extras/Demo.Mac" - - -checkapplepython: $(srcdir)/Tools/fixapplepython23.py - @if ! $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/Tools/fixapplepython23.py -n; then \ - echo "* WARNING: Apple-installed Python 2.3 will have trouble building extensions from now on."; \ - echo "* WARNING: Run $(srcdir)/Tools/fixapplepython23.py with \"sudo\" to fix this."; \ - fi - - -clean: - rm pythonw - cd PythonLauncher && make clean - cd IDLE && make clean - -Makefile: $(srcdir)/Makefile.in ../config.status - cd .. && CONFIG_FILES=Mac/Makefile CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/project/jni/python/src/Mac/Modules/ColorPickermodule.c b/project/jni/python/src/Mac/Modules/ColorPickermodule.c deleted file mode 100644 index 440642622..000000000 --- a/project/jni/python/src/Mac/Modules/ColorPickermodule.c +++ /dev/null @@ -1,90 +0,0 @@ -/****************************************************************** -Copyright 1998 by Just van Rossum, Den Haag, The Netherlands. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Just van Rossum not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -JUST VAN ROSSUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL JUST VAN ROSSUM BE LIABLE FOR ANY SPECIAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF -USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -******************************************************************/ - -#include -#include "Python.h" -#include "pymactoolbox.h" - -/* ----------------------------------------------------- */ - - -#ifndef __LP64__ - -static char cp_GetColor__doc__[] = -"GetColor(prompt, (r, g, b)) -> (r, g, b), ok" -; - -static PyObject * -cp_GetColor(PyObject *self, PyObject *args) -{ - RGBColor inColor, outColor; - Boolean ok; - Point where = {0, 0}; - Str255 prompt; - - if (!PyArg_ParseTuple(args, "O&O&", PyMac_GetStr255, prompt, QdRGB_Convert, &inColor)) - return NULL; - - ok = GetColor(where, prompt, &inColor, &outColor); - - return Py_BuildValue("O&h", QdRGB_New, &outColor, ok); -} -#endif /* __LP64__ */ - -/* List of methods defined in the module */ - -static struct PyMethodDef cp_methods[] = { -#ifndef __LP64__ - {"GetColor", (PyCFunction)cp_GetColor, METH_VARARGS, cp_GetColor__doc__}, -#endif /* __LP64__ */ - {NULL, (PyCFunction)NULL, 0, NULL} /* sentinel */ -}; - - -/* Initialization function for the module (*must* be called initColorPicker) */ - -static char cp_module_documentation[] = -"" -; - -void initColorPicker(void) -{ - PyObject *m; - - if (PyErr_WarnPy3k("In 3.x, ColorPicker is removed.", 1) < 0) - return; - - /* Create the module and add the functions */ - m = Py_InitModule4("ColorPicker", cp_methods, - cp_module_documentation, - (PyObject*)NULL,PYTHON_API_VERSION); - - /* Add symbolic constants to the module here */ - - /* XXXX Add constants here */ - - /* Check for errors */ - if (PyErr_Occurred()) - Py_FatalError("can't initialize module ColorPicker"); -} - diff --git a/project/jni/python/src/Mac/Modules/MacOS.c b/project/jni/python/src/Mac/Modules/MacOS.c deleted file mode 100644 index 272fe8d55..000000000 --- a/project/jni/python/src/Mac/Modules/MacOS.c +++ /dev/null @@ -1,730 +0,0 @@ -/*********************************************************** -Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam, -The Netherlands. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Stichting Mathematisch -Centrum or CWI not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior permission. - -STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO -THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE -FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT -OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -******************************************************************/ - -/* Macintosh OS-specific interface */ - -#include "Python.h" -#include "pymactoolbox.h" - -#include -#include - -#ifndef HAVE_OSX105_SDK -typedef SInt16 FSIORefNum; -#endif - -static PyObject *MacOS_Error; /* Exception MacOS.Error */ - -#define PATHNAMELEN 1024 - -/* ----------------------------------------------------- */ - -/* Declarations for objects of type Resource fork */ - -typedef struct { - PyObject_HEAD - FSIORefNum fRefNum; - int isclosed; -} rfobject; - -static PyTypeObject Rftype; - - - -/* ---------------------------------------------------------------- */ - -static void -do_close(rfobject *self) -{ - if (self->isclosed ) return; - (void)FSCloseFork(self->fRefNum); - self->isclosed = 1; -} - -static char rf_read__doc__[] = -"Read data from resource fork" -; - -static PyObject * -rf_read(rfobject *self, PyObject *args) -{ - long n; - PyObject *v; - OSErr err; - ByteCount n2; - - if (self->isclosed) { - PyErr_SetString(PyExc_ValueError, "Operation on closed file"); - return NULL; - } - - if (!PyArg_ParseTuple(args, "l", &n)) - return NULL; - - v = PyBytes_FromStringAndSize((char *)NULL, n); - if (v == NULL) - return NULL; - - err = FSReadFork(self->fRefNum, fsAtMark, 0, n, PyString_AsString(v), &n2); - if (err && err != eofErr) { - PyMac_Error(err); - Py_DECREF(v); - return NULL; - } - _PyString_Resize(&v, n2); - return v; -} - - -static char rf_write__doc__[] = -"Write to resource fork" -; - -static PyObject * -rf_write(rfobject *self, PyObject *args) -{ - char *buffer; - long size; - OSErr err; - - if (self->isclosed) { - PyErr_SetString(PyExc_ValueError, "Operation on closed file"); - return NULL; - } - if (!PyArg_ParseTuple(args, "s#", &buffer, &size)) - return NULL; - err = FSWriteFork(self->fRefNum, fsAtMark, 0, size, buffer, NULL); - if (err) { - PyMac_Error(err); - return NULL; - } - Py_INCREF(Py_None); - return Py_None; -} - - -static char rf_seek__doc__[] = -"Set file position" -; - -static PyObject * -rf_seek(rfobject *self, PyObject *args) -{ - long amount; - int whence = SEEK_SET; - int mode; - OSErr err; - - if (self->isclosed) { - PyErr_SetString(PyExc_ValueError, "Operation on closed file"); - return NULL; - } - if (!PyArg_ParseTuple(args, "l|i", &amount, &whence)) { - return NULL; - } - - switch (whence) { - case SEEK_CUR: - mode = fsFromMark; - break; - case SEEK_END: - mode = fsFromLEOF; - break; - case SEEK_SET: - mode = fsFromStart; - break; - default: - PyErr_BadArgument(); - return NULL; - } - - err = FSSetForkPosition(self->fRefNum, mode, amount); - if (err != noErr) { - PyMac_Error(err); - return NULL; - } - Py_INCREF(Py_None); - return Py_None; -} - - -static char rf_tell__doc__[] = -"Get file position" -; - -static PyObject * -rf_tell(rfobject *self, PyObject *args) -{ - long long where; - OSErr err; - - if (self->isclosed) { - PyErr_SetString(PyExc_ValueError, "Operation on closed file"); - return NULL; - } - if (!PyArg_ParseTuple(args, "")) - return NULL; - - err = FSGetForkPosition(self->fRefNum, &where); - if (err != noErr) { - PyMac_Error(err); - return NULL; - } - return PyLong_FromLongLong(where); -} - -static char rf_close__doc__[] = -"Close resource fork" -; - -static PyObject * -rf_close(rfobject *self, PyObject *args) -{ - if (!PyArg_ParseTuple(args, "")) - return NULL; - do_close(self); - Py_INCREF(Py_None); - return Py_None; -} - - -static struct PyMethodDef rf_methods[] = { - {"read", (PyCFunction)rf_read, 1, rf_read__doc__}, - {"write", (PyCFunction)rf_write, 1, rf_write__doc__}, - {"seek", (PyCFunction)rf_seek, 1, rf_seek__doc__}, - {"tell", (PyCFunction)rf_tell, 1, rf_tell__doc__}, - {"close", (PyCFunction)rf_close, 1, rf_close__doc__}, - - {NULL, NULL} /* sentinel */ -}; - -/* ---------- */ - - -static rfobject * -newrfobject(void) -{ - rfobject *self; - - self = PyObject_NEW(rfobject, &Rftype); - if (self == NULL) - return NULL; - self->isclosed = 1; - return self; -} - - -static void -rf_dealloc(rfobject *self) -{ - do_close(self); - PyObject_DEL(self); -} - -static PyObject * -rf_getattr(rfobject *self, char *name) -{ - return Py_FindMethod(rf_methods, (PyObject *)self, name); -} - -static char Rftype__doc__[] = -"Resource fork file object" -; - -static PyTypeObject Rftype = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /*ob_size*/ - "MacOS.ResourceFork", /*tp_name*/ - sizeof(rfobject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)rf_dealloc, /*tp_dealloc*/ - (printfunc)0, /*tp_print*/ - (getattrfunc)rf_getattr, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc)0, /*tp_compare*/ - (reprfunc)0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - (hashfunc)0, /*tp_hash*/ - (ternaryfunc)0, /*tp_call*/ - (reprfunc)0, /*tp_str*/ - - /* Space for future expansion */ - 0L,0L,0L,0L, - Rftype__doc__ /* Documentation string */ -}; - - -/* End of code for Resource fork objects */ -/* -------------------------------------------------------- */ - -/*----------------------------------------------------------------------*/ -/* Miscellaneous File System Operations */ - -static char getcrtp_doc[] = "Get MacOS 4-char creator and type for a file"; - -static PyObject * -MacOS_GetCreatorAndType(PyObject *self, PyObject *args) -{ - PyObject *creator, *type, *res; - OSErr err; - FSRef ref; - FSCatalogInfo cataloginfo; - FileInfo* finfo; - - if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSRef, &ref)) { -#ifndef __LP64__ - /* This function is documented to take an FSSpec as well, - * which only works in 32-bit mode. - */ - PyErr_Clear(); - FSSpec fss; - FInfo info; - - if (!PyArg_ParseTuple(args, "O&", PyMac_GetFSSpec, &fss)) - return NULL; - - if ((err = FSpGetFInfo(&fss, &info)) != noErr) { - return PyErr_Mac(MacOS_Error, err); - } - creator = PyString_FromStringAndSize( - (char *)&info.fdCreator, 4); - type = PyString_FromStringAndSize((char *)&info.fdType, 4); - res = Py_BuildValue("OO", creator, type); - Py_DECREF(creator); - Py_DECREF(type); - return res; -#else /* __LP64__ */ - return NULL; -#endif /* __LP64__ */ - } - - err = FSGetCatalogInfo(&ref, - kFSCatInfoFinderInfo|kFSCatInfoNodeFlags, &cataloginfo, - NULL, NULL, NULL); - if (err != noErr) { - PyErr_Mac(MacOS_Error, err); - return NULL; - } - - if ((cataloginfo.nodeFlags & kFSNodeIsDirectoryMask) != 0) { - /* Directory: doesn't have type/creator info. - * - * The specific error code is for backward compatibility with - * earlier versions. - */ - PyErr_Mac(MacOS_Error, fnfErr); - return NULL; - - } - finfo = (FileInfo*)&(cataloginfo.finderInfo); - creator = PyString_FromStringAndSize((char*)&(finfo->fileCreator), 4); - type = PyString_FromStringAndSize((char*)&(finfo->fileType), 4); - - res = Py_BuildValue("OO", creator, type); - Py_DECREF(creator); - Py_DECREF(type); - return res; -} - -static char setcrtp_doc[] = "Set MacOS 4-char creator and type for a file"; - -static PyObject * -MacOS_SetCreatorAndType(PyObject *self, PyObject *args) -{ - ResType creator, type; - FSRef ref; - FileInfo* finfo; - OSErr err; - FSCatalogInfo cataloginfo; - - if (!PyArg_ParseTuple(args, "O&O&O&", - PyMac_GetFSRef, &ref, PyMac_GetOSType, &creator, PyMac_GetOSType, &type)) { -#ifndef __LP64__ - /* Try to handle FSSpec arguments, for backward compatibility */ - FSSpec fss; - FInfo info; - - if (!PyArg_ParseTuple(args, "O&O&O&", - PyMac_GetFSSpec, &fss, PyMac_GetOSType, &creator, PyMac_GetOSType, &type)) - return NULL; - - if ((err = FSpGetFInfo(&fss, &info)) != noErr) - return PyErr_Mac(MacOS_Error, err); - - info.fdCreator = creator; - info.fdType = type; - - if ((err = FSpSetFInfo(&fss, &info)) != noErr) - return PyErr_Mac(MacOS_Error, err); - Py_INCREF(Py_None); - return Py_None; -#else /* __LP64__ */ - return NULL; -#endif /* __LP64__ */ - } - - err = FSGetCatalogInfo(&ref, - kFSCatInfoFinderInfo|kFSCatInfoNodeFlags, &cataloginfo, - NULL, NULL, NULL); - if (err != noErr) { - PyErr_Mac(MacOS_Error, err); - return NULL; - } - - if ((cataloginfo.nodeFlags & kFSNodeIsDirectoryMask) != 0) { - /* Directory: doesn't have type/creator info. - * - * The specific error code is for backward compatibility with - * earlier versions. - */ - PyErr_Mac(MacOS_Error, fnfErr); - return NULL; - - } - finfo = (FileInfo*)&(cataloginfo.finderInfo); - finfo->fileCreator = creator; - finfo->fileType = type; - - err = FSSetCatalogInfo(&ref, kFSCatInfoFinderInfo, &cataloginfo); - if (err != noErr) { - PyErr_Mac(MacOS_Error, fnfErr); - return NULL; - } - - Py_INCREF(Py_None); - return Py_None; -} - - -static char geterr_doc[] = "Convert OSErr number to string"; - -static PyObject * -MacOS_GetErrorString(PyObject *self, PyObject *args) -{ - int err; - char buf[256]; - Handle h; - char *str; - static int errors_loaded; - - if (!PyArg_ParseTuple(args, "i", &err)) - return NULL; - - h = GetResource('Estr', err); - if (!h && !errors_loaded) { - /* - ** Attempt to open the resource file containing the - ** Estr resources. We ignore all errors. We also try - ** this only once. - */ - PyObject *m, *rv; - errors_loaded = 1; - - m = PyImport_ImportModuleNoBlock("macresource"); - if (!m) { - if (Py_VerboseFlag) - PyErr_Print(); - PyErr_Clear(); - } - else { - rv = PyObject_CallMethod(m, "open_error_resource", ""); - if (!rv) { - if (Py_VerboseFlag) - PyErr_Print(); - PyErr_Clear(); - } - else { - Py_DECREF(rv); - /* And try again... */ - h = GetResource('Estr', err); - } - Py_DECREF(m); - } - } - /* - ** Whether the code above succeeded or not, we won't try - ** again. - */ - errors_loaded = 1; - - if (h) { - HLock(h); - str = (char *)*h; - memcpy(buf, str+1, (unsigned char)str[0]); - buf[(unsigned char)str[0]] = '\0'; - HUnlock(h); - ReleaseResource(h); - } - else { - PyOS_snprintf(buf, sizeof(buf), "Mac OS error code %d", err); - } - - return Py_BuildValue("s", buf); -} - - -#ifndef __LP64__ - -static char splash_doc[] = "Open a splash-screen dialog by resource-id (0=close)"; - -static PyObject * -MacOS_splash(PyObject *self, PyObject *args) -{ - int resid = -1; - static DialogPtr curdialog = NULL; - DialogPtr olddialog; - WindowRef theWindow; - CGrafPtr thePort; -#if 0 - short xpos, ypos, width, height, swidth, sheight; -#endif - - if (!PyArg_ParseTuple(args, "|i", &resid)) - return NULL; - olddialog = curdialog; - curdialog = NULL; - - if ( resid != -1 ) { - curdialog = GetNewDialog(resid, NULL, (WindowPtr)-1); - if ( curdialog ) { - theWindow = GetDialogWindow(curdialog); - thePort = GetWindowPort(theWindow); -#if 0 - width = thePort->portRect.right - thePort->portRect.left; - height = thePort->portRect.bottom - thePort->portRect.top; - swidth = qd.screenBits.bounds.right - qd.screenBits.bounds.left; - sheight = qd.screenBits.bounds.bottom - qd.screenBits.bounds.top - LMGetMBarHeight(); - xpos = (swidth-width)/2; - ypos = (sheight-height)/5 + LMGetMBarHeight(); - MoveWindow(theWindow, xpos, ypos, 0); - ShowWindow(theWindow); -#endif - DrawDialog(curdialog); - } - } - if (olddialog) - DisposeDialog(olddialog); - Py_INCREF(Py_None); - return Py_None; -} - -static char DebugStr_doc[] = "Switch to low-level debugger with a message"; - -static PyObject * -MacOS_DebugStr(PyObject *self, PyObject *args) -{ - Str255 message; - PyObject *object = 0; - - if (!PyArg_ParseTuple(args, "O&|O", PyMac_GetStr255, message, &object)) - return NULL; - - DebugStr(message); - Py_INCREF(Py_None); - return Py_None; -} - - -static char SysBeep_doc[] = "BEEEEEP!!!"; - -static PyObject * -MacOS_SysBeep(PyObject *self, PyObject *args) -{ - int duration = 6; - - if (!PyArg_ParseTuple(args, "|i", &duration)) - return NULL; - SysBeep(duration); - Py_INCREF(Py_None); - return Py_None; -} - -#endif /* __LP64__ */ - -static char WMAvailable_doc[] = - "True if this process can interact with the display." - "Will foreground the application on the first call as a side-effect." - ; - -static PyObject * -MacOS_WMAvailable(PyObject *self, PyObject *args) -{ - static PyObject *rv = NULL; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - if (!rv) { - ProcessSerialNumber psn; - - /* - ** This is a fairly innocuous call to make if we don't have a window - ** manager, or if we have no permission to talk to it. It will print - ** a message on stderr, but at least it won't abort the process. - ** It appears the function caches the result itself, and it's cheap, so - ** no need for us to cache. - */ -#ifdef kCGNullDirectDisplay - /* On 10.1 CGMainDisplayID() isn't available, and - ** kCGNullDirectDisplay isn't defined. - */ - if (CGMainDisplayID() == 0) { - rv = Py_False; - } else { -#else - { -#endif - if (GetCurrentProcess(&psn) < 0 || - SetFrontProcess(&psn) < 0) { - rv = Py_False; - } else { - rv = Py_True; - } - } - } - Py_INCREF(rv); - return rv; -} - -static char GetTicks_doc[] = "Return number of ticks since bootup"; - -static PyObject * -MacOS_GetTicks(PyObject *self, PyObject *args) -{ - return Py_BuildValue("i", (int)TickCount()); -} - -static char openrf_doc[] = "Open resource fork of a file"; - -static PyObject * -MacOS_openrf(PyObject *self, PyObject *args) -{ - OSErr err; - char *mode = "r"; - FSRef ref; - SInt8 permission = fsRdPerm; - rfobject *fp; - HFSUniStr255 name; - - if (!PyArg_ParseTuple(args, "O&|s", PyMac_GetFSRef, &ref, &mode)) - return NULL; - while (*mode) { - switch (*mode++) { - case '*': break; - case 'r': permission = fsRdPerm; break; - case 'w': permission = fsWrPerm; break; - case 'b': break; - default: - PyErr_BadArgument(); - return NULL; - } - } - - err = FSGetResourceForkName(&name); - if (err != noErr) { - PyMac_Error(err); - return NULL; - } - - if ( (fp = newrfobject()) == NULL ) - return NULL; - - - err = FSOpenFork(&ref, name.length, name.unicode, permission, &fp->fRefNum); - if (err != noErr) { - Py_DECREF(fp); - PyMac_Error(err); - return NULL; - } - fp->isclosed = 0; - return (PyObject *)fp; -} - - - -static PyMethodDef MacOS_Methods[] = { - {"GetCreatorAndType", MacOS_GetCreatorAndType, 1, getcrtp_doc}, - {"SetCreatorAndType", MacOS_SetCreatorAndType, 1, setcrtp_doc}, - {"GetErrorString", MacOS_GetErrorString, 1, geterr_doc}, - {"openrf", MacOS_openrf, 1, openrf_doc}, -#ifndef __LP64__ - {"splash", MacOS_splash, 1, splash_doc}, - {"DebugStr", MacOS_DebugStr, 1, DebugStr_doc}, - {"SysBeep", MacOS_SysBeep, 1, SysBeep_doc}, -#endif /* __LP64__ */ - {"GetTicks", MacOS_GetTicks, 1, GetTicks_doc}, - {"WMAvailable", MacOS_WMAvailable, 1, WMAvailable_doc}, - {NULL, NULL} /* Sentinel */ -}; - - -void -initMacOS(void) -{ - PyObject *m, *d; - - if (PyErr_WarnPy3k("In 3.x, MacOS is removed.", 1)) - return; - - m = Py_InitModule("MacOS", MacOS_Methods); - d = PyModule_GetDict(m); - - /* Initialize MacOS.Error exception */ - MacOS_Error = PyMac_GetOSErrException(); - if (MacOS_Error == NULL || PyDict_SetItemString(d, "Error", MacOS_Error) != 0) - return; - Rftype.ob_type = &PyType_Type; - Py_INCREF(&Rftype); - if (PyDict_SetItemString(d, "ResourceForkType", (PyObject *)&Rftype) != 0) - return; - /* - ** This is a hack: the following constant added to the id() of a string - ** object gives you the address of the data. Unfortunately, it is needed for - ** some of the image and sound processing interfaces on the mac:-( - */ - { - PyStringObject *p = 0; - long off = (long)&(p->ob_sval[0]); - - if( PyDict_SetItemString(d, "string_id_to_buffer", Py_BuildValue("i", off)) != 0) - return; - } -#define PY_RUNTIMEMODEL "macho" - if (PyDict_SetItemString(d, "runtimemodel", - Py_BuildValue("s", PY_RUNTIMEMODEL)) != 0) - return; -#if defined(WITH_NEXT_FRAMEWORK) -#define PY_LINKMODEL "framework" -#elif defined(Py_ENABLE_SHARED) -#define PY_LINKMODEL "shared" -#else -#define PY_LINKMODEL "static" -#endif - if (PyDict_SetItemString(d, "linkmodel", - Py_BuildValue("s", PY_LINKMODEL)) != 0) - return; - -} diff --git a/project/jni/python/src/Mac/Modules/Nav.c b/project/jni/python/src/Mac/Modules/Nav.c deleted file mode 100644 index e03a06ea7..000000000 --- a/project/jni/python/src/Mac/Modules/Nav.c +++ /dev/null @@ -1,977 +0,0 @@ -/*********************************************************** -Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam, -The Netherlands. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Stichting Mathematisch -Centrum or CWI or Corporation for National Research Initiatives or -CNRI not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. - -While CWI is the initial source for this software, a modified version -is made available by the Corporation for National Research Initiatives -(CNRI) at the Internet address ftp://ftp.python.org. - -STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH -CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL -DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR -PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -******************************************************************/ - -#include "Python.h" -#include "pymactoolbox.h" -#include - -static PyObject *ErrorObject; - -static NavEventUPP my_eventProcUPP; -static NavPreviewUPP my_previewProcUPP; -static NavObjectFilterUPP my_filterProcUPP; - -/* Callback functions */ -static pascal void -my_eventProc(NavEventCallbackMessage callBackSelector, - NavCBRecPtr callBackParms, - NavCallBackUserData callbackUD) -{ - PyObject *dict = (PyObject *)callbackUD; - PyObject *pyfunc; - PyObject *rv; - - if (!dict) return; - if ( (pyfunc = PyDict_GetItemString(dict, "eventProc")) == NULL ) { - PyErr_Print(); - return; - } - if ( pyfunc == Py_None ) { - return; - } - rv = PyObject_CallFunction(pyfunc, "ls#", (long)callBackSelector, - (void *)callBackParms, sizeof(NavCBRec)); - if ( rv ) - Py_DECREF(rv); - else { - PySys_WriteStderr("Nav: exception in eventProc callback\n"); - PyErr_Print(); - } -} - -static pascal Boolean -my_previewProc(NavCBRecPtr callBackParms, - NavCallBackUserData callbackUD) -{ - PyObject *dict = (PyObject *)callbackUD; - PyObject *pyfunc; - PyObject *rv; - Boolean c_rv = false; - - if (!dict) return false; - if ( (pyfunc = PyDict_GetItemString(dict, "previewProc")) == NULL ) { - PyErr_Print(); - return false; - } - rv = PyObject_CallFunction(pyfunc, "s#", (void *)callBackParms, sizeof(NavCBRec)); - if ( rv ) { - c_rv = PyObject_IsTrue(rv); - Py_DECREF(rv); - } else { - PySys_WriteStderr("Nav: exception in previewProc callback\n"); - PyErr_Print(); - } - return c_rv; -} - -static pascal Boolean -my_filterProc(AEDesc *theItem, void *info, - NavCallBackUserData callbackUD, - NavFilterModes filterMode) -{ - PyObject *dict = (PyObject *)callbackUD; - PyObject *pyfunc; - PyObject *rv; - Boolean c_rv = false; - - if (!dict) return false; - if ( (pyfunc = PyDict_GetItemString(dict, "filterProc")) == NULL ) { - PyErr_Print(); - return false; - } - rv = PyObject_CallFunction(pyfunc, "O&s#h", - AEDesc_NewBorrowed, theItem, info, sizeof(NavFileOrFolderInfo), (short)filterMode); - if ( rv ) { - c_rv = PyObject_IsTrue(rv); - Py_DECREF(rv); - } else { - PySys_WriteStderr("Nav: exception in filterProc callback\n"); - PyErr_Print(); - } - return c_rv; -} - -/* ----------------------------------------------------- */ -static int -filldialogoptions(PyObject *d, - AEDesc **defaultLocationP, - NavDialogOptions *opt, - NavEventUPP *eventProcP, - NavPreviewUPP *previewProcP, - NavObjectFilterUPP *filterProcP, - NavTypeListHandle *typeListP, - OSType *fileTypeP, - OSType *fileCreatorP) -{ - Py_ssize_t pos = 0; - PyObject *key, *value; - char *keystr; - AEDesc *defaultLocation_storage; - - NavGetDefaultDialogOptions(opt); - - while ( PyDict_Next(d, &pos, &key, &value) ) { - if ( !key || !value || !PyString_Check(key) ) { - PyErr_SetString(ErrorObject, "DialogOption has non-string key"); - return 0; - } - keystr = PyString_AsString(key); - if( strcmp(keystr, "defaultLocation") == 0 ) { - if ( (defaultLocation_storage = PyMem_NEW(AEDesc, 1)) == NULL ) { - PyErr_NoMemory(); - return 0; - } - if ( !PyArg_Parse(value, "O&", AEDesc_Convert, defaultLocation_storage) ) { - PyMem_DEL(defaultLocation_storage); - return 0; - } - *defaultLocationP = defaultLocation_storage; - } else if( strcmp(keystr, "version") == 0 ) { - if ( !PyArg_Parse(value, "H", &opt->version) ) - return 0; - } else if( strcmp(keystr, "dialogOptionFlags") == 0 ) { - if ( !PyArg_Parse(value, "k", &opt->dialogOptionFlags) ) - return 0; - } else if( strcmp(keystr, "location") == 0 ) { - if ( !PyArg_Parse(value, "O&", PyMac_GetPoint, &opt->location) ) - return 0; - } else if( strcmp(keystr, "clientName") == 0 ) { - if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->clientName) ) - return 0; - } else if( strcmp(keystr, "windowTitle") == 0 ) { - if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->windowTitle) ) - return 0; - } else if( strcmp(keystr, "actionButtonLabel") == 0 ) { - if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->actionButtonLabel) ) - return 0; - } else if( strcmp(keystr, "cancelButtonLabel") == 0 ) { - if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->cancelButtonLabel) ) - return 0; - } else if( strcmp(keystr, "savedFileName") == 0 ) { - if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->savedFileName) ) - return 0; - } else if( strcmp(keystr, "message") == 0 ) { - if ( !PyArg_Parse(value, "O&", PyMac_GetStr255, &opt->message) ) - return 0; - } else if( strcmp(keystr, "preferenceKey") == 0 ) { - if ( !PyArg_Parse(value, "O&", PyMac_GetOSType, &opt->preferenceKey) ) - return 0; -#ifndef __LP64__ - } else if( strcmp(keystr, "popupExtension") == 0 ) { - if ( !PyArg_Parse(value, "O&", ResObj_Convert, &opt->popupExtension) ) - return 0; -#endif /* !__LP64__ */ - } else if( eventProcP && strcmp(keystr, "eventProc") == 0 ) { - *eventProcP = my_eventProcUPP; - } else if( previewProcP && strcmp(keystr, "previewProc") == 0 ) { - *previewProcP = my_previewProcUPP; - } else if( filterProcP && strcmp(keystr, "filterProc") == 0 ) { - *filterProcP = my_filterProcUPP; -#ifndef __LP64__ - } else if( typeListP && strcmp(keystr, "typeList") == 0 ) { - if ( !PyArg_Parse(value, "O&", ResObj_Convert, typeListP) ) - return 0; -#endif /* !__LP64__ */ - } else if( fileTypeP && strcmp(keystr, "fileType") == 0 ) { - if ( !PyArg_Parse(value, "O&", PyMac_GetOSType, fileTypeP) ) - return 0; - } else if( fileCreatorP && strcmp(keystr, "fileCreator") == 0 ) { - if ( !PyArg_Parse(value, "O&", PyMac_GetOSType, fileCreatorP) ) - return 0; - } else { - PyErr_Format(ErrorObject, "Unknown DialogOption key: %s", keystr); - return 0; - } - } - return 1; -} - -/* ----------------------------------------------------- */ - -/* Declarations for objects of type NavReplyRecord */ - -typedef struct { - PyObject_HEAD - NavReplyRecord itself; -} navrrobject; - -static PyTypeObject Navrrtype; - - - -/* ---------------------------------------------------------------- */ - -static char nav_NavTranslateFile__doc__[] = -"(NavTranslationOptions)->None" -; - -static PyObject * -nav_NavTranslateFile(navrrobject *self, PyObject *args) -{ - NavTranslationOptions howToTranslate; - OSErr err; - - if (!PyArg_ParseTuple(args, "k", &howToTranslate)) - return NULL; - err = NavTranslateFile(&self->itself, howToTranslate); - if ( err ) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - Py_INCREF(Py_None); - return Py_None; -} - -static char nav_NavCompleteSave__doc__[] = -"(NavTranslationOptions)->None" -; - -static PyObject * -nav_NavCompleteSave(navrrobject *self, PyObject *args) -{ - NavTranslationOptions howToTranslate; - OSErr err; - - if (!PyArg_ParseTuple(args, "k", &howToTranslate)) - return NULL; - err = NavCompleteSave(&self->itself, howToTranslate); - if ( err ) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - Py_INCREF(Py_None); - return Py_None; -} - - -static struct PyMethodDef navrr_methods[] = { - {"NavTranslateFile", (PyCFunction)nav_NavTranslateFile, METH_VARARGS, nav_NavTranslateFile__doc__}, - {"NavCompleteSave", (PyCFunction)nav_NavCompleteSave, METH_VARARGS, nav_NavCompleteSave__doc__}, - - {NULL, NULL} /* sentinel */ -}; - -/* ---------- */ - - -static navrrobject * -newnavrrobject(NavReplyRecord *itself) -{ - navrrobject *self; - - self = PyObject_NEW(navrrobject, &Navrrtype); - if (self == NULL) - return NULL; - self->itself = *itself; - return self; -} - - -static void -navrr_dealloc(navrrobject *self) -{ - NavDisposeReply(&self->itself); - PyObject_DEL(self); -} - -static PyObject * -navrr_getattr(navrrobject *self, char *name) -{ - FSRef fsr; -#ifndef __LP64__ - FSSpec fss; -#endif /* !__LP64__ */ - - if( strcmp(name, "__members__") == 0 ) - return Py_BuildValue( -#ifndef __LP64__ - "ssssssssss", -#else /* __LP64__ */ - "ssssssssss", -#endif /* __LP64__ */ - "version", "validRecord", "replacing", - "isStationery", "translationNeeded", -#ifndef __LP64__ - "selection", -#endif /* !__LP64__ */ - "selection_fsr", - "fileTranslation", "keyScript", "saveFileName"); - - if( strcmp(name, "version") == 0 ) - return Py_BuildValue("h", self->itself.version); - if( strcmp(name, "validRecord") == 0 ) - return Py_BuildValue("l", (long)self->itself.validRecord); - if( strcmp(name, "replacing") == 0 ) - return Py_BuildValue("l", (long)self->itself.replacing); - if( strcmp(name, "isStationery") == 0 ) - return Py_BuildValue("l", (long)self->itself.isStationery); - if( strcmp(name, "translationNeeded") == 0 ) - return Py_BuildValue("l", (long)self->itself.translationNeeded); -#ifndef __LP64__ - if( strcmp(name, "selection") == 0 ) { - SInt32 i; - long count; - OSErr err; - PyObject *rv, *rvitem; - AEDesc desc; - - if ((err=AECountItems(&self->itself.selection, &count))) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - if ( (rv=PyList_New(count)) == NULL ) - return NULL; - for(i=0; iitself.selection, i+1, typeFSS, NULL, &desc))) { - Py_DECREF(rv); - PyErr_Mac(ErrorObject, err); - return NULL; - } - if ((err=AEGetDescData(&desc, &fss, sizeof(FSSpec)))) { - Py_DECREF(rv); - PyErr_Mac(ErrorObject, err); - return NULL; - } - rvitem = PyMac_BuildFSSpec(&fss); - PyList_SetItem(rv, i, rvitem); - AEDisposeDesc(&desc); - } - return rv; - } -#endif /* !__LP64__ */ - if( strcmp(name, "selection_fsr") == 0 ) { - SInt32 i; - long count; - OSErr err; - PyObject *rv, *rvitem; - AEDesc desc; - - if ((err=AECountItems(&self->itself.selection, &count))) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - if ( (rv=PyList_New(count)) == NULL ) - return NULL; - for(i=0; iitself.selection, i+1, typeFSRef, NULL, &desc))) { - Py_DECREF(rv); - PyErr_Mac(ErrorObject, err); - return NULL; - } - if ((err=AEGetDescData(&desc, &fsr, sizeof(FSRef)))) { - Py_DECREF(rv); - PyErr_Mac(ErrorObject, err); - return NULL; - } - rvitem = PyMac_BuildFSRef(&fsr); - PyList_SetItem(rv, i, rvitem); - AEDisposeDesc(&desc); - } - return rv; - } -#ifndef __LP64__ - if( strcmp(name, "fileTranslation") == 0 ) - return ResObj_New((Handle)self->itself.fileTranslation); -#endif - if( strcmp(name, "keyScript") == 0 ) - return Py_BuildValue("h", (short)self->itself.keyScript); - if( strcmp(name, "saveFileName") == 0 ) - return Py_BuildValue("O&", CFStringRefObj_New, self->itself.saveFileName); - - - return Py_FindMethod(navrr_methods, (PyObject *)self, name); -} - -static int -navrr_setattr(navrrobject *self, char *name, PyObject *v) -{ - /* Set attribute 'name' to value 'v'. v==NULL means delete */ - - /* XXXX Add your own setattr code here */ - return -1; -} - -static char Navrrtype__doc__[] = -"Record containing result of a Nav file selection call. Use dir() for member names." -; - -static PyTypeObject Navrrtype = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /*ob_size*/ - "Nav.NavReplyRecord", /*tp_name*/ - sizeof(navrrobject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)navrr_dealloc, /*tp_dealloc*/ - (printfunc)0, /*tp_print*/ - (getattrfunc)navrr_getattr, /*tp_getattr*/ - (setattrfunc)navrr_setattr, /*tp_setattr*/ - (cmpfunc)0, /*tp_compare*/ - (reprfunc)0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - (hashfunc)0, /*tp_hash*/ - (ternaryfunc)0, /*tp_call*/ - (reprfunc)0, /*tp_str*/ - - /* Space for future expansion */ - 0L,0L,0L,0L, - Navrrtype__doc__ /* Documentation string */ -}; - -/* End of code for NavReplyRecord objects */ - -/* ----------------------------------------------------- */ - -static char nav_NavGetFile__doc__[] = -"(DialogOptions dict or kwargs+defaultLocation,eventProc,previewProc,filterProc,typeList) -> NavReplyRecord" -; - -static PyObject * -nav_NavGetFile(PyObject *self, PyObject *args, PyObject *kw) -{ - PyObject *dict; - AEDesc *defaultLocation = NULL; - NavReplyRecord reply; - NavDialogOptions dialogOptions; - NavEventUPP eventProc = NULL; - NavPreviewUPP previewProc = NULL; - NavObjectFilterUPP filterProc = NULL; - NavTypeListHandle typeList = NULL; - OSErr err; - - if ( kw && PyObject_IsTrue(kw) ) { - if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected")) - return NULL; - dict = kw; - } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict)) - return NULL; - if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, &previewProc, &filterProc, &typeList, NULL, NULL)) - return NULL; - err = NavGetFile(defaultLocation, &reply, &dialogOptions, - eventProc, previewProc, filterProc, typeList, (void *)dict); - PyMem_DEL(defaultLocation); - if ( err ) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - return (PyObject *)newnavrrobject(&reply); -} - -static char nav_NavPutFile__doc__[] = -"(DialogOptions dict or kwargs+defaultLocation,eventProc,fileCreator,fileType) -> NavReplyRecord" -; - -static PyObject * -nav_NavPutFile(PyObject *self, PyObject *args, PyObject *kw) -{ - PyObject *dict; - AEDesc *defaultLocation = NULL; - NavReplyRecord reply; - NavDialogOptions dialogOptions; - NavEventUPP eventProc = NULL; - OSType fileType; - OSType fileCreator; - OSErr err; - - if ( kw && PyObject_IsTrue(kw) ) { - if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected")) - return NULL; - dict = kw; - } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict)) - return NULL; - if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, NULL, NULL, &fileType, &fileCreator)) - return NULL; - err = NavPutFile(defaultLocation, &reply, &dialogOptions, - eventProc, fileType, fileCreator, (void *)dict); - PyMem_DEL(defaultLocation); - if ( err ) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - return (PyObject *)newnavrrobject(&reply); -} - -static char nav_NavAskSaveChanges__doc__[] = -"(NavAskSaveChangesAction, DialogOptions dict or kwargs+eventProc) -> NavAskSaveChangesResult" - -; - -static PyObject * -nav_NavAskSaveChanges(PyObject *self, PyObject *args, PyObject *kw) -{ - PyObject *dict; - NavDialogOptions dialogOptions; - NavAskSaveChangesAction action; - NavAskSaveChangesResult reply; - NavEventUPP eventProc = NULL; - OSErr err; - - if ( kw && PyObject_IsTrue(kw) ) { - if (!PyArg_ParseTuple(args, "k", &action)) - return NULL; - dict = kw; - } else if (!PyArg_ParseTuple(args, "lO!", &action, &PyDict_Type, &dict)) - return NULL; - if (!filldialogoptions(dict, NULL, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL)) - return NULL; - err = NavAskSaveChanges(&dialogOptions, action, &reply, eventProc, (void *)dict); - if ( err ) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - return Py_BuildValue("l", (long)reply); -} - -static char nav_NavCustomAskSaveChanges__doc__[] = -"(DialogOptions dict or kwargs+eventProc) -> NavAskSaveChangesResult" -; - -static PyObject * -nav_NavCustomAskSaveChanges(PyObject *self, PyObject *args, PyObject *kw) -{ - PyObject *dict; - NavDialogOptions dialogOptions; - NavAskSaveChangesResult reply; - NavEventUPP eventProc = NULL; - OSErr err; - - if ( kw && PyObject_IsTrue(kw) ) { - if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected")) - return NULL; - dict = kw; - } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict)) - return NULL; - if (!filldialogoptions(dict, NULL, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL)) - return NULL; - err = NavCustomAskSaveChanges(&dialogOptions, &reply, eventProc, (void *)dict); - if ( err ) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - return Py_BuildValue("l", (long)reply); -} - -static char nav_NavAskDiscardChanges__doc__[] = -"(DialogOptions dict or kwargs+eventProc) -> NavAskSaveChangesResult" -; - -static PyObject * -nav_NavAskDiscardChanges(PyObject *self, PyObject *args, PyObject *kw) -{ - PyObject *dict; - NavDialogOptions dialogOptions; - NavAskSaveChangesResult reply; - NavEventUPP eventProc = NULL; - OSErr err; - - if ( kw && PyObject_IsTrue(kw) ) { - if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected")) - return NULL; - dict = kw; - } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict)) - return NULL; - if (!filldialogoptions(dict, NULL, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL)) - return NULL; - err = NavAskDiscardChanges(&dialogOptions, &reply, eventProc, (void *)dict); - if ( err ) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - return Py_BuildValue("l", (long)reply); -} - -static char nav_NavChooseFile__doc__[] = -"(DialogOptions dict or kwargs+defaultLocation,eventProc,previewProc,filterProc,typeList) -> NavReplyRecord" -; - -static PyObject * -nav_NavChooseFile(PyObject *self, PyObject *args, PyObject *kw) -{ - PyObject *dict; - AEDesc *defaultLocation = NULL; - NavReplyRecord reply; - NavDialogOptions dialogOptions; - NavEventUPP eventProc = NULL; - NavPreviewUPP previewProc = NULL; - NavObjectFilterUPP filterProc = NULL; - NavTypeListHandle typeList = NULL; - OSErr err; - - if ( kw && PyObject_IsTrue(kw) ) { - if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected")) - return NULL; - dict = kw; - } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict)) - return NULL; - if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, &previewProc, &filterProc, &typeList, NULL, NULL)) - return NULL; - err = NavChooseFile(defaultLocation, &reply, &dialogOptions, - eventProc, previewProc, filterProc, typeList, (void *)dict); - PyMem_DEL(defaultLocation); - if ( err ) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - return (PyObject *)newnavrrobject(&reply); -} - -static char nav_NavChooseFolder__doc__[] = -"(DialogOptions dict or kwargs+defaultLocation,eventProc,filterProc) -> NavReplyRecord" -; - -static PyObject * -nav_NavChooseFolder(PyObject *self, PyObject *args, PyObject *kw) -{ - PyObject *dict; - AEDesc *defaultLocation = NULL; - NavReplyRecord reply; - NavDialogOptions dialogOptions; - NavEventUPP eventProc = NULL; - NavObjectFilterUPP filterProc = NULL; - OSErr err; - - if ( kw && PyObject_IsTrue(kw) ) { - if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected")) - return NULL; - dict = kw; - } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict)) - return NULL; - if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, &filterProc, NULL, NULL, NULL)) - return NULL; - err = NavChooseFolder(defaultLocation, &reply, &dialogOptions, - eventProc, filterProc, (void *)dict); - PyMem_DEL(defaultLocation); - if ( err ) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - return (PyObject *)newnavrrobject(&reply); -} - -static char nav_NavChooseVolume__doc__[] = -"(DialogOptions dict or kwargs+defaultLocation,eventProc,filterProc) -> NavReplyRecord" -; - -static PyObject * -nav_NavChooseVolume(PyObject *self, PyObject *args, PyObject *kw) -{ - PyObject *dict; - AEDesc *defaultLocation = NULL; - NavReplyRecord reply; - NavDialogOptions dialogOptions; - NavEventUPP eventProc = NULL; - NavObjectFilterUPP filterProc = NULL; - OSErr err; - - if ( kw && PyObject_IsTrue(kw) ) { - if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected")) - return NULL; - dict = kw; - } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict)) - return NULL; - if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, &filterProc, NULL, NULL, NULL)) - return NULL; - err = NavChooseVolume(defaultLocation, &reply, &dialogOptions, - eventProc, filterProc, (void *)dict); - PyMem_DEL(defaultLocation); - if ( err ) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - return (PyObject *)newnavrrobject(&reply); -} - -static char nav_NavChooseObject__doc__[] = -"(DialogOptions dict or kwargs+defaultLocation,eventProc,filterProc) -> NavReplyRecord" -; - -static PyObject * -nav_NavChooseObject(PyObject *self, PyObject *args, PyObject *kw) -{ - PyObject *dict; - AEDesc *defaultLocation = NULL; - NavReplyRecord reply; - NavDialogOptions dialogOptions; - NavEventUPP eventProc = NULL; - NavObjectFilterUPP filterProc = NULL; - OSErr err; - - if ( kw && PyObject_IsTrue(kw) ) { - if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected")) - return NULL; - dict = kw; - } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict)) - return NULL; - if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, &filterProc, NULL, NULL, NULL)) - return NULL; - err = NavChooseObject(defaultLocation, &reply, &dialogOptions, - eventProc, filterProc, (void *)dict); - PyMem_DEL(defaultLocation); - if ( err ) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - return (PyObject *)newnavrrobject(&reply); -} - -static char nav_NavNewFolder__doc__[] = -"(DialogOptions dict or kwargs+defaultLocation,eventProc) -> NavReplyRecord" -; - -static PyObject * -nav_NavNewFolder(PyObject *self, PyObject *args, PyObject *kw) -{ - PyObject *dict; - AEDesc *defaultLocation = NULL; - NavReplyRecord reply; - NavDialogOptions dialogOptions; - NavEventUPP eventProc = NULL; - OSErr err; - - if ( kw && PyObject_IsTrue(kw) ) { - if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected")) - return NULL; - dict = kw; - } else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict)) - return NULL; - if (!filldialogoptions(dict, &defaultLocation, &dialogOptions, &eventProc, NULL, NULL, NULL, NULL, NULL)) - return NULL; - err = NavNewFolder(defaultLocation, &reply, &dialogOptions, eventProc, (void *)dict); - PyMem_DEL(defaultLocation); - if ( err ) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - return (PyObject *)newnavrrobject(&reply); -} - -#if 0 -/* XXXX I don't know what to do with the void * argument */ -static char nav_NavCustomControl__doc__[] = -"" -; - - -static PyObject * -nav_NavCustomControl(PyObject *self, PyObject *args) -{ - - if (!PyArg_ParseTuple(args, "")) - return NULL; - Py_INCREF(Py_None); - return Py_None; -} -#endif - -static char nav_NavServicesCanRun__doc__[] = -"()->int" -; - -static PyObject * -nav_NavServicesCanRun(PyObject *self, PyObject *args) -{ - Boolean rv; - if (!PyArg_ParseTuple(args, "")) - return NULL; - rv = NavServicesCanRun(); - return Py_BuildValue("l", (long)rv); -} - -static char nav_NavServicesAvailable__doc__[] = -"()->int" -; - -static PyObject * -nav_NavServicesAvailable(PyObject *self, PyObject *args) -{ - Boolean rv; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - rv = NavServicesAvailable(); - return Py_BuildValue("l", (long)rv); -} -/* XX */ -static char nav_NavLoad__doc__[] = -"()->None" -; - -static PyObject * -nav_NavLoad(PyObject *self, PyObject *args) -{ - - if (!PyArg_ParseTuple(args, "")) - return NULL; - NavLoad(); - Py_INCREF(Py_None); - return Py_None; -} - -static char nav_NavUnload__doc__[] = -"()->None" -; - -static PyObject * -nav_NavUnload(PyObject *self, PyObject *args) -{ - - if (!PyArg_ParseTuple(args, "")) - return NULL; - NavUnload(); - Py_INCREF(Py_None); - return Py_None; -} - -static char nav_NavLibraryVersion__doc__[] = -"()->int" -; - -static PyObject * -nav_NavLibraryVersion(PyObject *self, PyObject *args) -{ - UInt32 rv; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - rv = NavLibraryVersion(); - return Py_BuildValue("l", (long)rv); -} - -static char nav_NavGetDefaultDialogOptions__doc__[] = -"()->dict\nPass dict or keyword args with same names to other calls." -; - -static PyObject * -nav_NavGetDefaultDialogOptions(PyObject *self, PyObject *args) -{ - NavDialogOptions dialogOptions; - OSErr err; - - err = NavGetDefaultDialogOptions(&dialogOptions); - if ( err ) { - PyErr_Mac(ErrorObject, err); - return NULL; - } - return Py_BuildValue( -#ifndef __LP64__ - "{s:h,s:l,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&}", -#else /* __LP64__ */ - "{s:h,s:l,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&,s:O&}", -#endif /* __LP64__ */ - "version", dialogOptions.version, - "dialogOptionFlags", dialogOptions.dialogOptionFlags, - "location", PyMac_BuildPoint, dialogOptions.location, - "clientName", PyMac_BuildStr255, &dialogOptions.clientName, - "windowTitle", PyMac_BuildStr255, &dialogOptions.windowTitle, - "actionButtonLabel", PyMac_BuildStr255, &dialogOptions.actionButtonLabel, - "cancelButtonLabel", PyMac_BuildStr255, &dialogOptions.cancelButtonLabel, - "savedFileName", PyMac_BuildStr255, &dialogOptions.savedFileName, - "message", PyMac_BuildStr255, &dialogOptions.message, - "preferenceKey", PyMac_BuildOSType, dialogOptions.preferenceKey -#ifndef __LP64__ - ,"popupExtension", OptResObj_New, dialogOptions.popupExtension -#endif /* __LP64__ */ - ); -} - -/* List of methods defined in the module */ - -static struct PyMethodDef nav_methods[] = { - {"NavGetFile", (PyCFunction)nav_NavGetFile, METH_VARARGS|METH_KEYWORDS, nav_NavGetFile__doc__}, - {"NavPutFile", (PyCFunction)nav_NavPutFile, METH_VARARGS|METH_KEYWORDS, nav_NavPutFile__doc__}, - {"NavAskSaveChanges", (PyCFunction)nav_NavAskSaveChanges, METH_VARARGS|METH_KEYWORDS, nav_NavAskSaveChanges__doc__}, - {"NavCustomAskSaveChanges", (PyCFunction)nav_NavCustomAskSaveChanges, METH_VARARGS|METH_KEYWORDS, nav_NavCustomAskSaveChanges__doc__}, - {"NavAskDiscardChanges", (PyCFunction)nav_NavAskDiscardChanges, METH_VARARGS|METH_KEYWORDS, nav_NavAskDiscardChanges__doc__}, - {"NavChooseFile", (PyCFunction)nav_NavChooseFile, METH_VARARGS|METH_KEYWORDS, nav_NavChooseFile__doc__}, - {"NavChooseFolder", (PyCFunction)nav_NavChooseFolder, METH_VARARGS|METH_KEYWORDS, nav_NavChooseFolder__doc__}, - {"NavChooseVolume", (PyCFunction)nav_NavChooseVolume, METH_VARARGS|METH_KEYWORDS, nav_NavChooseVolume__doc__}, - {"NavChooseObject", (PyCFunction)nav_NavChooseObject, METH_VARARGS|METH_KEYWORDS, nav_NavChooseObject__doc__}, - {"NavNewFolder", (PyCFunction)nav_NavNewFolder, METH_VARARGS|METH_KEYWORDS, nav_NavNewFolder__doc__}, -#if 0 - {"NavCustomControl", (PyCFunction)nav_NavCustomControl, METH_VARARGS, nav_NavCustomControl__doc__}, -#endif - {"NavServicesCanRun", (PyCFunction)nav_NavServicesCanRun, METH_VARARGS, nav_NavServicesCanRun__doc__}, - {"NavServicesAvailable", (PyCFunction)nav_NavServicesAvailable, METH_VARARGS, nav_NavServicesAvailable__doc__}, - {"NavLoad", (PyCFunction)nav_NavLoad, METH_VARARGS, nav_NavLoad__doc__}, - {"NavUnload", (PyCFunction)nav_NavUnload, METH_VARARGS, nav_NavUnload__doc__}, - {"NavLibraryVersion", (PyCFunction)nav_NavLibraryVersion, METH_VARARGS, nav_NavLibraryVersion__doc__}, - {"NavGetDefaultDialogOptions", (PyCFunction)nav_NavGetDefaultDialogOptions, METH_VARARGS, nav_NavGetDefaultDialogOptions__doc__}, - {NULL, (PyCFunction)NULL, 0, NULL} /* sentinel */ -}; - - -/* Initialization function for the module (*must* be called initNav) */ - -static char Nav_module_documentation[] = -"Interface to Navigation Services\n" -"Most calls accept a NavDialogOptions dictionary or keywords with the same names, pass {}\n" -"if you want the default options.\n" -"Use NavGetDefaultDialogOptions() to find out common option names.\n" -"See individual docstrings for additional keyword args/dictentries supported by each call.\n" -"Pass None as eventProc to get movable-modal dialogs that process updates through the standard Python mechanism." -; - -void -initNav(void) -{ - PyObject *m, *d; - - if (PyErr_WarnPy3k("In 3.x, Nav is removed.", 1)) - return; - - /* Test that we have NavServices */ - if ( !NavServicesAvailable() ) { - PyErr_SetString(PyExc_ImportError, "Navigation Services not available"); - return; - } - /* Create the module and add the functions */ - m = Py_InitModule4("Nav", nav_methods, - Nav_module_documentation, - (PyObject*)NULL,PYTHON_API_VERSION); - - /* Add some symbolic constants to the module */ - d = PyModule_GetDict(m); - ErrorObject = PyString_FromString("Nav.error"); - PyDict_SetItemString(d, "error", ErrorObject); - - /* XXXX Add constants here */ - - /* Set UPPs */ - my_eventProcUPP = NewNavEventUPP(my_eventProc); - my_previewProcUPP = NewNavPreviewUPP(my_previewProc); - my_filterProcUPP = NewNavObjectFilterUPP(my_filterProc); - -} - diff --git a/project/jni/python/src/Mac/Modules/OSATerminology.c b/project/jni/python/src/Mac/Modules/OSATerminology.c deleted file mode 100644 index e56a0db20..000000000 --- a/project/jni/python/src/Mac/Modules/OSATerminology.c +++ /dev/null @@ -1,98 +0,0 @@ -/* -** This module is a one-trick pony: given an FSSpec it gets the aeut -** resources. It was written by Donovan Preston and slightly modified -** by Jack. -** -** It should be considered a placeholder, it will probably be replaced -** by a full interface to OpenScripting. -*/ -#include "Python.h" -#include "pymactoolbox.h" - -#include - -#ifndef __LP64__ -static PyObject * -PyOSA_GetAppTerminology(PyObject* self, PyObject* args) -{ - AEDesc theDesc = {0,0}; - FSSpec fss; - ComponentInstance defaultComponent = NULL; - SInt16 defaultTerminology = 0; - Boolean didLaunch = 0; - OSAError err; - long modeFlags = 0; - - if (!PyArg_ParseTuple(args, "O&|i", PyMac_GetFSSpec, &fss, &modeFlags)) - return NULL; - - defaultComponent = OpenDefaultComponent (kOSAComponentType, 'ascr'); - err = GetComponentInstanceError (defaultComponent); - if (err) return PyMac_Error(err); - err = OSAGetAppTerminology ( - defaultComponent, - modeFlags, - &fss, - defaultTerminology, - &didLaunch, - &theDesc - ); - if (err) return PyMac_Error(err); - return Py_BuildValue("O&i", AEDesc_New, &theDesc, didLaunch); -} - -static PyObject * -PyOSA_GetSysTerminology(PyObject* self, PyObject* args) -{ - AEDesc theDesc = {0,0}; - FSSpec fss; - ComponentInstance defaultComponent = NULL; - SInt16 defaultTerminology = 0; - Boolean didLaunch = 0; - OSAError err; - long modeFlags = 0; - - if (!PyArg_ParseTuple(args, "O&|i", PyMac_GetFSSpec, &fss, &modeFlags)) - return NULL; - - defaultComponent = OpenDefaultComponent (kOSAComponentType, 'ascr'); - err = GetComponentInstanceError (defaultComponent); - if (err) return PyMac_Error(err); - err = OSAGetAppTerminology ( - defaultComponent, - modeFlags, - &fss, - defaultTerminology, - &didLaunch, - &theDesc - ); - if (err) return PyMac_Error(err); - return Py_BuildValue("O&i", AEDesc_New, &theDesc, didLaunch); -} -#endif /* !__LP64__ */ - -/* - * List of methods defined in the module - */ -static struct PyMethodDef OSATerminology_methods[] = -{ -#ifndef __LP64__ - {"GetAppTerminology", - (PyCFunction) PyOSA_GetAppTerminology, - METH_VARARGS, - "Get an applications terminology, as an AEDesc object."}, - {"GetSysTerminology", - (PyCFunction) PyOSA_GetSysTerminology, - METH_VARARGS, - "Get an applications system terminology, as an AEDesc object."}, -#endif /* !__LP64__ */ - {NULL, (PyCFunction) NULL, 0, NULL} -}; - -void -initOSATerminology(void) -{ - if (PyErr_WarnPy3k("In 3.x, OSATerminology is removed.", 1) < 0) - return; - Py_InitModule("OSATerminology", OSATerminology_methods); -} diff --git a/project/jni/python/src/Mac/Modules/ae/README b/project/jni/python/src/Mac/Modules/ae/README deleted file mode 100644 index f91c44f67..000000000 --- a/project/jni/python/src/Mac/Modules/ae/README +++ /dev/null @@ -1,24 +0,0 @@ -A quick note on what all the files here are, currently (16-7-95), -and whether they really are source or generated. - -aegen.py Generated by aescan, temporary file -AEModule.c Generated by aescan, from AppleEvents.h -AEObjects.py Generated by aescan, from AEObjects.h -aepack.py Routines to convert python objects <-> AEDesc record - (formerly part of aetools, now imported there) -AERegistry.py Generated by aescan, from AERegistry.h -aescan.py Program to scan headers and generate AE modules -aesupport.py Helper code for aescan -aetools.py Routines/classes to create and send appleevents -aetypes.py Classes for python objects corresponding to AEDesc types - (formerly part of aetools, now imported there) -AppleEvents.py Generated by aescan, from AppleEvents.h -AppleScript_Suite.py Generated by gensuitemodule -echo.py Old test program (may still work) to echo events back to sender -gensuitemodule.py Program to scan aete/aeut resources and generate python - interface modules -Required_Suite.py Generated by gensuitemodule -Standard_Suite.py Generated by gensuitemodule -tae.py Old test program (may still work) to send an appleevent -tell.py Old test program (may still work) to send an appleevent -test_suite.py Test program to test bits of the _Suite modules and aetools/etc diff --git a/project/jni/python/src/Mac/Modules/ae/_AEmodule.c b/project/jni/python/src/Mac/Modules/ae/_AEmodule.c deleted file mode 100644 index 09105a56f..000000000 --- a/project/jni/python/src/Mac/Modules/ae/_AEmodule.c +++ /dev/null @@ -1,1459 +0,0 @@ - -/* =========================== Module _AE =========================== */ - -#include "Python.h" - - - -#include "pymactoolbox.h" - -#ifndef HAVE_OSX105_SDK -typedef SInt32 SRefCon; -#endif - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_AEDesc_New(AEDesc *); -extern int _AEDesc_Convert(PyObject *, AEDesc *); - -#define AEDesc_New _AEDesc_New -#define AEDesc_NewBorrowed _AEDesc_NewBorrowed -#define AEDesc_Convert _AEDesc_Convert -#endif - -typedef long refcontype; - -static pascal OSErr GenericEventHandler(const AppleEvent *request, AppleEvent *reply, refcontype refcon); /* Forward */ - -AEEventHandlerUPP upp_GenericEventHandler; - -static pascal Boolean AEIdleProc(EventRecord *theEvent, long *sleepTime, RgnHandle *mouseRgn) -{ - if ( PyOS_InterruptOccurred() ) - return 1; - return 0; -} - -AEIdleUPP upp_AEIdleProc; - -static PyObject *AE_Error; - -/* ----------------------- Object type AEDesc ----------------------- */ - -PyTypeObject AEDesc_Type; - -#define AEDesc_Check(x) ((x)->ob_type == &AEDesc_Type || PyObject_TypeCheck((x), &AEDesc_Type)) - -typedef struct AEDescObject { - PyObject_HEAD - AEDesc ob_itself; - int ob_owned; -} AEDescObject; - -PyObject *AEDesc_New(AEDesc *itself) -{ - AEDescObject *it; - it = PyObject_NEW(AEDescObject, &AEDesc_Type); - if (it == NULL) return NULL; - it->ob_itself = *itself; - it->ob_owned = 1; - return (PyObject *)it; -} - -int AEDesc_Convert(PyObject *v, AEDesc *p_itself) -{ - if (!AEDesc_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "AEDesc required"); - return 0; - } - *p_itself = ((AEDescObject *)v)->ob_itself; - return 1; -} - -static void AEDesc_dealloc(AEDescObject *self) -{ - if (self->ob_owned) AEDisposeDesc(&self->ob_itself); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *AEDesc_AECoerceDesc(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DescType toType; - AEDesc result; -#ifndef AECoerceDesc - PyMac_PRECHECK(AECoerceDesc); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &toType)) - return NULL; - _err = AECoerceDesc(&_self->ob_itself, - toType, - &result); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &result); - return _res; -} - -static PyObject *AEDesc_AEDuplicateDesc(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEDesc result; -#ifndef AEDuplicateDesc - PyMac_PRECHECK(AEDuplicateDesc); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = AEDuplicateDesc(&_self->ob_itself, - &result); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &result); - return _res; -} - -static PyObject *AEDesc_AECountItems(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long theCount; -#ifndef AECountItems - PyMac_PRECHECK(AECountItems); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = AECountItems(&_self->ob_itself, - &theCount); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - theCount); - return _res; -} - -static PyObject *AEDesc_AEPutPtr(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long index; - DescType typeCode; - char *dataPtr__in__; - long dataPtr__len__; - int dataPtr__in_len__; -#ifndef AEPutPtr - PyMac_PRECHECK(AEPutPtr); -#endif - if (!PyArg_ParseTuple(_args, "lO&s#", - &index, - PyMac_GetOSType, &typeCode, - &dataPtr__in__, &dataPtr__in_len__)) - return NULL; - dataPtr__len__ = dataPtr__in_len__; - _err = AEPutPtr(&_self->ob_itself, - index, - typeCode, - dataPtr__in__, dataPtr__len__); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AEDesc_AEPutDesc(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long index; - AEDesc theAEDesc; -#ifndef AEPutDesc - PyMac_PRECHECK(AEPutDesc); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &index, - AEDesc_Convert, &theAEDesc)) - return NULL; - _err = AEPutDesc(&_self->ob_itself, - index, - &theAEDesc); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AEDesc_AEGetNthPtr(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long index; - DescType desiredType; - AEKeyword theAEKeyword; - DescType typeCode; - char *dataPtr__out__; - long dataPtr__len__; - int dataPtr__in_len__; -#ifndef AEGetNthPtr - PyMac_PRECHECK(AEGetNthPtr); -#endif - if (!PyArg_ParseTuple(_args, "lO&i", - &index, - PyMac_GetOSType, &desiredType, - &dataPtr__in_len__)) - return NULL; - if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL) - { - PyErr_NoMemory(); - goto dataPtr__error__; - } - dataPtr__len__ = dataPtr__in_len__; - _err = AEGetNthPtr(&_self->ob_itself, - index, - desiredType, - &theAEKeyword, - &typeCode, - dataPtr__out__, dataPtr__len__, &dataPtr__len__); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&s#", - PyMac_BuildOSType, theAEKeyword, - PyMac_BuildOSType, typeCode, - dataPtr__out__, (int)dataPtr__len__); - free(dataPtr__out__); - dataPtr__error__: ; - return _res; -} - -static PyObject *AEDesc_AEGetNthDesc(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long index; - DescType desiredType; - AEKeyword theAEKeyword; - AEDesc result; -#ifndef AEGetNthDesc - PyMac_PRECHECK(AEGetNthDesc); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &index, - PyMac_GetOSType, &desiredType)) - return NULL; - _err = AEGetNthDesc(&_self->ob_itself, - index, - desiredType, - &theAEKeyword, - &result); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - PyMac_BuildOSType, theAEKeyword, - AEDesc_New, &result); - return _res; -} - -static PyObject *AEDesc_AESizeOfNthItem(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long index; - DescType typeCode; - Size dataSize; -#ifndef AESizeOfNthItem - PyMac_PRECHECK(AESizeOfNthItem); -#endif - if (!PyArg_ParseTuple(_args, "l", - &index)) - return NULL; - _err = AESizeOfNthItem(&_self->ob_itself, - index, - &typeCode, - &dataSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&l", - PyMac_BuildOSType, typeCode, - dataSize); - return _res; -} - -static PyObject *AEDesc_AEDeleteItem(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long index; -#ifndef AEDeleteItem - PyMac_PRECHECK(AEDeleteItem); -#endif - if (!PyArg_ParseTuple(_args, "l", - &index)) - return NULL; - _err = AEDeleteItem(&_self->ob_itself, - index); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AEDesc_AEPutParamPtr(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword theAEKeyword; - DescType typeCode; - char *dataPtr__in__; - long dataPtr__len__; - int dataPtr__in_len__; -#ifndef AEPutParamPtr - PyMac_PRECHECK(AEPutParamPtr); -#endif - if (!PyArg_ParseTuple(_args, "O&O&s#", - PyMac_GetOSType, &theAEKeyword, - PyMac_GetOSType, &typeCode, - &dataPtr__in__, &dataPtr__in_len__)) - return NULL; - dataPtr__len__ = dataPtr__in_len__; - _err = AEPutParamPtr(&_self->ob_itself, - theAEKeyword, - typeCode, - dataPtr__in__, dataPtr__len__); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AEDesc_AEPutParamDesc(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword theAEKeyword; - AEDesc theAEDesc; -#ifndef AEPutParamDesc - PyMac_PRECHECK(AEPutParamDesc); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &theAEKeyword, - AEDesc_Convert, &theAEDesc)) - return NULL; - _err = AEPutParamDesc(&_self->ob_itself, - theAEKeyword, - &theAEDesc); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AEDesc_AEGetParamPtr(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword theAEKeyword; - DescType desiredType; - DescType typeCode; - char *dataPtr__out__; - long dataPtr__len__; - int dataPtr__in_len__; -#ifndef AEGetParamPtr - PyMac_PRECHECK(AEGetParamPtr); -#endif - if (!PyArg_ParseTuple(_args, "O&O&i", - PyMac_GetOSType, &theAEKeyword, - PyMac_GetOSType, &desiredType, - &dataPtr__in_len__)) - return NULL; - if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL) - { - PyErr_NoMemory(); - goto dataPtr__error__; - } - dataPtr__len__ = dataPtr__in_len__; - _err = AEGetParamPtr(&_self->ob_itself, - theAEKeyword, - desiredType, - &typeCode, - dataPtr__out__, dataPtr__len__, &dataPtr__len__); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&s#", - PyMac_BuildOSType, typeCode, - dataPtr__out__, (int)dataPtr__len__); - free(dataPtr__out__); - dataPtr__error__: ; - return _res; -} - -static PyObject *AEDesc_AEGetParamDesc(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword theAEKeyword; - DescType desiredType; - AEDesc result; -#ifndef AEGetParamDesc - PyMac_PRECHECK(AEGetParamDesc); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &theAEKeyword, - PyMac_GetOSType, &desiredType)) - return NULL; - _err = AEGetParamDesc(&_self->ob_itself, - theAEKeyword, - desiredType, - &result); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &result); - return _res; -} - -static PyObject *AEDesc_AESizeOfParam(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword theAEKeyword; - DescType typeCode; - Size dataSize; -#ifndef AESizeOfParam - PyMac_PRECHECK(AESizeOfParam); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &theAEKeyword)) - return NULL; - _err = AESizeOfParam(&_self->ob_itself, - theAEKeyword, - &typeCode, - &dataSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&l", - PyMac_BuildOSType, typeCode, - dataSize); - return _res; -} - -static PyObject *AEDesc_AEDeleteParam(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword theAEKeyword; -#ifndef AEDeleteParam - PyMac_PRECHECK(AEDeleteParam); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &theAEKeyword)) - return NULL; - _err = AEDeleteParam(&_self->ob_itself, - theAEKeyword); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AEDesc_AEGetAttributePtr(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword theAEKeyword; - DescType desiredType; - DescType typeCode; - char *dataPtr__out__; - long dataPtr__len__; - int dataPtr__in_len__; -#ifndef AEGetAttributePtr - PyMac_PRECHECK(AEGetAttributePtr); -#endif - if (!PyArg_ParseTuple(_args, "O&O&i", - PyMac_GetOSType, &theAEKeyword, - PyMac_GetOSType, &desiredType, - &dataPtr__in_len__)) - return NULL; - if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL) - { - PyErr_NoMemory(); - goto dataPtr__error__; - } - dataPtr__len__ = dataPtr__in_len__; - _err = AEGetAttributePtr(&_self->ob_itself, - theAEKeyword, - desiredType, - &typeCode, - dataPtr__out__, dataPtr__len__, &dataPtr__len__); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&s#", - PyMac_BuildOSType, typeCode, - dataPtr__out__, (int)dataPtr__len__); - free(dataPtr__out__); - dataPtr__error__: ; - return _res; -} - -static PyObject *AEDesc_AEGetAttributeDesc(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword theAEKeyword; - DescType desiredType; - AEDesc result; -#ifndef AEGetAttributeDesc - PyMac_PRECHECK(AEGetAttributeDesc); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &theAEKeyword, - PyMac_GetOSType, &desiredType)) - return NULL; - _err = AEGetAttributeDesc(&_self->ob_itself, - theAEKeyword, - desiredType, - &result); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &result); - return _res; -} - -static PyObject *AEDesc_AESizeOfAttribute(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword theAEKeyword; - DescType typeCode; - Size dataSize; -#ifndef AESizeOfAttribute - PyMac_PRECHECK(AESizeOfAttribute); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &theAEKeyword)) - return NULL; - _err = AESizeOfAttribute(&_self->ob_itself, - theAEKeyword, - &typeCode, - &dataSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&l", - PyMac_BuildOSType, typeCode, - dataSize); - return _res; -} - -static PyObject *AEDesc_AEPutAttributePtr(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword theAEKeyword; - DescType typeCode; - char *dataPtr__in__; - long dataPtr__len__; - int dataPtr__in_len__; -#ifndef AEPutAttributePtr - PyMac_PRECHECK(AEPutAttributePtr); -#endif - if (!PyArg_ParseTuple(_args, "O&O&s#", - PyMac_GetOSType, &theAEKeyword, - PyMac_GetOSType, &typeCode, - &dataPtr__in__, &dataPtr__in_len__)) - return NULL; - dataPtr__len__ = dataPtr__in_len__; - _err = AEPutAttributePtr(&_self->ob_itself, - theAEKeyword, - typeCode, - dataPtr__in__, dataPtr__len__); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AEDesc_AEPutAttributeDesc(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword theAEKeyword; - AEDesc theAEDesc; -#ifndef AEPutAttributeDesc - PyMac_PRECHECK(AEPutAttributeDesc); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &theAEKeyword, - AEDesc_Convert, &theAEDesc)) - return NULL; - _err = AEPutAttributeDesc(&_self->ob_itself, - theAEKeyword, - &theAEDesc); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AEDesc_AEGetDescDataSize(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Size _rv; -#ifndef AEGetDescDataSize - PyMac_PRECHECK(AEGetDescDataSize); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = AEGetDescDataSize(&_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *AEDesc_AESend(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AppleEvent reply; - AESendMode sendMode; - AESendPriority sendPriority; - long timeOutInTicks; -#ifndef AESend - PyMac_PRECHECK(AESend); -#endif - if (!PyArg_ParseTuple(_args, "lhl", - &sendMode, - &sendPriority, - &timeOutInTicks)) - return NULL; - _err = AESend(&_self->ob_itself, - &reply, - sendMode, - sendPriority, - timeOutInTicks, - upp_AEIdleProc, - (AEFilterUPP)0); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &reply); - return _res; -} - -static PyObject *AEDesc_AEResetTimer(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef AEResetTimer - PyMac_PRECHECK(AEResetTimer); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = AEResetTimer(&_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AEDesc_AESuspendTheCurrentEvent(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef AESuspendTheCurrentEvent - PyMac_PRECHECK(AESuspendTheCurrentEvent); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = AESuspendTheCurrentEvent(&_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AEDesc_AEResumeTheCurrentEvent(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AppleEvent reply; - AEEventHandlerUPP dispatcher__proc__ = upp_GenericEventHandler; - PyObject *dispatcher; -#ifndef AEResumeTheCurrentEvent - PyMac_PRECHECK(AEResumeTheCurrentEvent); -#endif - if (!PyArg_ParseTuple(_args, "O&O", - AEDesc_Convert, &reply, - &dispatcher)) - return NULL; - _err = AEResumeTheCurrentEvent(&_self->ob_itself, - &reply, - dispatcher__proc__, - (SRefCon)dispatcher); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - Py_INCREF(dispatcher); /* XXX leak, but needed */ - return _res; -} - -static PyObject *AEDesc_AEGetTheCurrentEvent(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef AEGetTheCurrentEvent - PyMac_PRECHECK(AEGetTheCurrentEvent); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = AEGetTheCurrentEvent(&_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AEDesc_AESetTheCurrentEvent(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef AESetTheCurrentEvent - PyMac_PRECHECK(AESetTheCurrentEvent); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = AESetTheCurrentEvent(&_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AEDesc_AEResolve(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short callbackFlags; - AEDesc theToken; -#ifndef AEResolve - PyMac_PRECHECK(AEResolve); -#endif - if (!PyArg_ParseTuple(_args, "h", - &callbackFlags)) - return NULL; - _err = AEResolve(&_self->ob_itself, - callbackFlags, - &theToken); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &theToken); - return _res; -} - -static PyObject *AEDesc_AutoDispose(AEDescObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - int onoff, old; - if (!PyArg_ParseTuple(_args, "i", &onoff)) - return NULL; - old = _self->ob_owned; - _self->ob_owned = onoff; - _res = Py_BuildValue("i", old); - return _res; - -} - -static PyMethodDef AEDesc_methods[] = { - {"AECoerceDesc", (PyCFunction)AEDesc_AECoerceDesc, 1, - PyDoc_STR("(DescType toType) -> (AEDesc result)")}, - {"AEDuplicateDesc", (PyCFunction)AEDesc_AEDuplicateDesc, 1, - PyDoc_STR("() -> (AEDesc result)")}, - {"AECountItems", (PyCFunction)AEDesc_AECountItems, 1, - PyDoc_STR("() -> (long theCount)")}, - {"AEPutPtr", (PyCFunction)AEDesc_AEPutPtr, 1, - PyDoc_STR("(long index, DescType typeCode, Buffer dataPtr) -> None")}, - {"AEPutDesc", (PyCFunction)AEDesc_AEPutDesc, 1, - PyDoc_STR("(long index, AEDesc theAEDesc) -> None")}, - {"AEGetNthPtr", (PyCFunction)AEDesc_AEGetNthPtr, 1, - PyDoc_STR("(long index, DescType desiredType, Buffer dataPtr) -> (AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr)")}, - {"AEGetNthDesc", (PyCFunction)AEDesc_AEGetNthDesc, 1, - PyDoc_STR("(long index, DescType desiredType) -> (AEKeyword theAEKeyword, AEDesc result)")}, - {"AESizeOfNthItem", (PyCFunction)AEDesc_AESizeOfNthItem, 1, - PyDoc_STR("(long index) -> (DescType typeCode, Size dataSize)")}, - {"AEDeleteItem", (PyCFunction)AEDesc_AEDeleteItem, 1, - PyDoc_STR("(long index) -> None")}, - {"AEPutParamPtr", (PyCFunction)AEDesc_AEPutParamPtr, 1, - PyDoc_STR("(AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr) -> None")}, - {"AEPutParamDesc", (PyCFunction)AEDesc_AEPutParamDesc, 1, - PyDoc_STR("(AEKeyword theAEKeyword, AEDesc theAEDesc) -> None")}, - {"AEGetParamPtr", (PyCFunction)AEDesc_AEGetParamPtr, 1, - PyDoc_STR("(AEKeyword theAEKeyword, DescType desiredType, Buffer dataPtr) -> (DescType typeCode, Buffer dataPtr)")}, - {"AEGetParamDesc", (PyCFunction)AEDesc_AEGetParamDesc, 1, - PyDoc_STR("(AEKeyword theAEKeyword, DescType desiredType) -> (AEDesc result)")}, - {"AESizeOfParam", (PyCFunction)AEDesc_AESizeOfParam, 1, - PyDoc_STR("(AEKeyword theAEKeyword) -> (DescType typeCode, Size dataSize)")}, - {"AEDeleteParam", (PyCFunction)AEDesc_AEDeleteParam, 1, - PyDoc_STR("(AEKeyword theAEKeyword) -> None")}, - {"AEGetAttributePtr", (PyCFunction)AEDesc_AEGetAttributePtr, 1, - PyDoc_STR("(AEKeyword theAEKeyword, DescType desiredType, Buffer dataPtr) -> (DescType typeCode, Buffer dataPtr)")}, - {"AEGetAttributeDesc", (PyCFunction)AEDesc_AEGetAttributeDesc, 1, - PyDoc_STR("(AEKeyword theAEKeyword, DescType desiredType) -> (AEDesc result)")}, - {"AESizeOfAttribute", (PyCFunction)AEDesc_AESizeOfAttribute, 1, - PyDoc_STR("(AEKeyword theAEKeyword) -> (DescType typeCode, Size dataSize)")}, - {"AEPutAttributePtr", (PyCFunction)AEDesc_AEPutAttributePtr, 1, - PyDoc_STR("(AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr) -> None")}, - {"AEPutAttributeDesc", (PyCFunction)AEDesc_AEPutAttributeDesc, 1, - PyDoc_STR("(AEKeyword theAEKeyword, AEDesc theAEDesc) -> None")}, - {"AEGetDescDataSize", (PyCFunction)AEDesc_AEGetDescDataSize, 1, - PyDoc_STR("() -> (Size _rv)")}, - {"AESend", (PyCFunction)AEDesc_AESend, 1, - PyDoc_STR("(AESendMode sendMode, AESendPriority sendPriority, long timeOutInTicks) -> (AppleEvent reply)")}, - {"AEResetTimer", (PyCFunction)AEDesc_AEResetTimer, 1, - PyDoc_STR("() -> None")}, - {"AESuspendTheCurrentEvent", (PyCFunction)AEDesc_AESuspendTheCurrentEvent, 1, - PyDoc_STR("() -> None")}, - {"AEResumeTheCurrentEvent", (PyCFunction)AEDesc_AEResumeTheCurrentEvent, 1, - PyDoc_STR("(AppleEvent reply, EventHandler dispatcher) -> None")}, - {"AEGetTheCurrentEvent", (PyCFunction)AEDesc_AEGetTheCurrentEvent, 1, - PyDoc_STR("() -> None")}, - {"AESetTheCurrentEvent", (PyCFunction)AEDesc_AESetTheCurrentEvent, 1, - PyDoc_STR("() -> None")}, - {"AEResolve", (PyCFunction)AEDesc_AEResolve, 1, - PyDoc_STR("(short callbackFlags) -> (AEDesc theToken)")}, - {"AutoDispose", (PyCFunction)AEDesc_AutoDispose, 1, - PyDoc_STR("(int)->int. Automatically AEDisposeDesc the object on Python object cleanup")}, - {NULL, NULL, 0} -}; - -static PyObject *AEDesc_get_type(AEDescObject *self, void *closure) -{ - return PyMac_BuildOSType(self->ob_itself.descriptorType); -} - -#define AEDesc_set_type NULL - -static PyObject *AEDesc_get_data(AEDescObject *self, void *closure) -{ - PyObject *res; - Size size; - char *ptr; - OSErr err; - - size = AEGetDescDataSize(&self->ob_itself); - if ( (res = PyString_FromStringAndSize(NULL, size)) == NULL ) - return NULL; - if ( (ptr = PyString_AsString(res)) == NULL ) - return NULL; - if ( (err=AEGetDescData(&self->ob_itself, ptr, size)) < 0 ) - return PyMac_Error(err); - return res; -} - -#define AEDesc_set_data NULL - -static PyGetSetDef AEDesc_getsetlist[] = { - {"type", (getter)AEDesc_get_type, (setter)AEDesc_set_type, "Type of this AEDesc"}, - {"data", (getter)AEDesc_get_data, (setter)AEDesc_set_data, "The raw data in this AEDesc"}, - {NULL, NULL, NULL, NULL}, -}; - - -#define AEDesc_compare NULL - -#define AEDesc_repr NULL - -#define AEDesc_hash NULL -#define AEDesc_tp_init 0 - -#define AEDesc_tp_alloc PyType_GenericAlloc - -static PyObject *AEDesc_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - AEDesc itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, AEDesc_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((AEDescObject *)_self)->ob_itself = itself; - return _self; -} - -#define AEDesc_tp_free PyObject_Del - - -PyTypeObject AEDesc_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_AE.AEDesc", /*tp_name*/ - sizeof(AEDescObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) AEDesc_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) AEDesc_compare, /*tp_compare*/ - (reprfunc) AEDesc_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) AEDesc_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - AEDesc_methods, /* tp_methods */ - 0, /*tp_members*/ - AEDesc_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - AEDesc_tp_init, /* tp_init */ - AEDesc_tp_alloc, /* tp_alloc */ - AEDesc_tp_new, /* tp_new */ - AEDesc_tp_free, /* tp_free */ -}; - -/* --------------------- End object type AEDesc --------------------- */ - - -static PyObject *AE_AECoercePtr(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DescType typeCode; - char *dataPtr__in__; - long dataPtr__len__; - int dataPtr__in_len__; - DescType toType; - AEDesc result; -#ifndef AECoercePtr - PyMac_PRECHECK(AECoercePtr); -#endif - if (!PyArg_ParseTuple(_args, "O&s#O&", - PyMac_GetOSType, &typeCode, - &dataPtr__in__, &dataPtr__in_len__, - PyMac_GetOSType, &toType)) - return NULL; - dataPtr__len__ = dataPtr__in_len__; - _err = AECoercePtr(typeCode, - dataPtr__in__, dataPtr__len__, - toType, - &result); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &result); - return _res; -} - -static PyObject *AE_AECreateDesc(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DescType typeCode; - char *dataPtr__in__; - long dataPtr__len__; - int dataPtr__in_len__; - AEDesc result; -#ifndef AECreateDesc - PyMac_PRECHECK(AECreateDesc); -#endif - if (!PyArg_ParseTuple(_args, "O&s#", - PyMac_GetOSType, &typeCode, - &dataPtr__in__, &dataPtr__in_len__)) - return NULL; - dataPtr__len__ = dataPtr__in_len__; - _err = AECreateDesc(typeCode, - dataPtr__in__, dataPtr__len__, - &result); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &result); - return _res; -} - -static PyObject *AE_AECreateList(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - char *factoringPtr__in__; - long factoringPtr__len__; - int factoringPtr__in_len__; - Boolean isRecord; - AEDescList resultList; -#ifndef AECreateList - PyMac_PRECHECK(AECreateList); -#endif - if (!PyArg_ParseTuple(_args, "s#b", - &factoringPtr__in__, &factoringPtr__in_len__, - &isRecord)) - return NULL; - factoringPtr__len__ = factoringPtr__in_len__; - _err = AECreateList(factoringPtr__in__, factoringPtr__len__, - isRecord, - &resultList); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &resultList); - return _res; -} - -static PyObject *AE_AECreateAppleEvent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEEventClass theAEEventClass; - AEEventID theAEEventID; - AEAddressDesc target; - AEReturnID returnID; - AETransactionID transactionID; - AppleEvent result; -#ifndef AECreateAppleEvent - PyMac_PRECHECK(AECreateAppleEvent); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&hl", - PyMac_GetOSType, &theAEEventClass, - PyMac_GetOSType, &theAEEventID, - AEDesc_Convert, &target, - &returnID, - &transactionID)) - return NULL; - _err = AECreateAppleEvent(theAEEventClass, - theAEEventID, - &target, - returnID, - transactionID, - &result); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &result); - return _res; -} - -static PyObject *AE_AEReplaceDescData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DescType typeCode; - char *dataPtr__in__; - long dataPtr__len__; - int dataPtr__in_len__; - AEDesc theAEDesc; -#ifndef AEReplaceDescData - PyMac_PRECHECK(AEReplaceDescData); -#endif - if (!PyArg_ParseTuple(_args, "O&s#", - PyMac_GetOSType, &typeCode, - &dataPtr__in__, &dataPtr__in_len__)) - return NULL; - dataPtr__len__ = dataPtr__in_len__; - _err = AEReplaceDescData(typeCode, - dataPtr__in__, dataPtr__len__, - &theAEDesc); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &theAEDesc); - return _res; -} - -static PyObject *AE_AEProcessAppleEvent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - EventRecord theEventRecord; -#ifndef AEProcessAppleEvent - PyMac_PRECHECK(AEProcessAppleEvent); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetEventRecord, &theEventRecord)) - return NULL; - _err = AEProcessAppleEvent(&theEventRecord); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AE_AEGetInteractionAllowed(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEInteractAllowed level; -#ifndef AEGetInteractionAllowed - PyMac_PRECHECK(AEGetInteractionAllowed); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = AEGetInteractionAllowed(&level); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - level); - return _res; -} - -static PyObject *AE_AESetInteractionAllowed(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEInteractAllowed level; -#ifndef AESetInteractionAllowed - PyMac_PRECHECK(AESetInteractionAllowed); -#endif - if (!PyArg_ParseTuple(_args, "b", - &level)) - return NULL; - _err = AESetInteractionAllowed(level); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AE_AEInteractWithUser(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long timeOutInTicks; -#ifndef AEInteractWithUser - PyMac_PRECHECK(AEInteractWithUser); -#endif - if (!PyArg_ParseTuple(_args, "l", - &timeOutInTicks)) - return NULL; - _err = AEInteractWithUser(timeOutInTicks, - (NMRecPtr)0, - upp_AEIdleProc); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AE_AEInstallEventHandler(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEEventClass theAEEventClass; - AEEventID theAEEventID; - AEEventHandlerUPP handler__proc__ = upp_GenericEventHandler; - PyObject *handler; -#ifndef AEInstallEventHandler - PyMac_PRECHECK(AEInstallEventHandler); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O", - PyMac_GetOSType, &theAEEventClass, - PyMac_GetOSType, &theAEEventID, - &handler)) - return NULL; - _err = AEInstallEventHandler(theAEEventClass, - theAEEventID, - handler__proc__, (SRefCon)handler, - 0); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - Py_INCREF(handler); /* XXX leak, but needed */ - return _res; -} - -static PyObject *AE_AERemoveEventHandler(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEEventClass theAEEventClass; - AEEventID theAEEventID; -#ifndef AERemoveEventHandler - PyMac_PRECHECK(AERemoveEventHandler); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &theAEEventClass, - PyMac_GetOSType, &theAEEventID)) - return NULL; - _err = AERemoveEventHandler(theAEEventClass, - theAEEventID, - upp_GenericEventHandler, - 0); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AE_AEGetEventHandler(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEEventClass theAEEventClass; - AEEventID theAEEventID; - AEEventHandlerUPP handler__proc__ = upp_GenericEventHandler; - PyObject *handler; -#ifndef AEGetEventHandler - PyMac_PRECHECK(AEGetEventHandler); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &theAEEventClass, - PyMac_GetOSType, &theAEEventID)) - return NULL; - _err = AEGetEventHandler(theAEEventClass, - theAEEventID, - &handler__proc__, (SRefCon *)&handler, - 0); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O", - handler); - Py_INCREF(handler); /* XXX leak, but needed */ - return _res; -} - -static PyObject *AE_AEInstallSpecialHandler(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword functionClass; -#ifndef AEInstallSpecialHandler - PyMac_PRECHECK(AEInstallSpecialHandler); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &functionClass)) - return NULL; - _err = AEInstallSpecialHandler(functionClass, - upp_GenericEventHandler, - 0); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AE_AERemoveSpecialHandler(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword functionClass; -#ifndef AERemoveSpecialHandler - PyMac_PRECHECK(AERemoveSpecialHandler); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &functionClass)) - return NULL; - _err = AERemoveSpecialHandler(functionClass, - upp_GenericEventHandler, - 0); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AE_AEManagerInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEKeyword keyWord; - long result; -#ifndef AEManagerInfo - PyMac_PRECHECK(AEManagerInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &keyWord)) - return NULL; - _err = AEManagerInfo(keyWord, - &result); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - result); - return _res; -} - -static PyObject *AE_AEObjectInit(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef AEObjectInit - PyMac_PRECHECK(AEObjectInit); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = AEObjectInit(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *AE_AEDisposeToken(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEDesc theToken; -#ifndef AEDisposeToken - PyMac_PRECHECK(AEDisposeToken); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = AEDisposeToken(&theToken); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &theToken); - return _res; -} - -static PyObject *AE_AECallObjectAccessor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DescType desiredClass; - AEDesc containerToken; - DescType containerClass; - DescType keyForm; - AEDesc keyData; - AEDesc token; -#ifndef AECallObjectAccessor - PyMac_PRECHECK(AECallObjectAccessor); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&O&", - PyMac_GetOSType, &desiredClass, - AEDesc_Convert, &containerToken, - PyMac_GetOSType, &containerClass, - PyMac_GetOSType, &keyForm, - AEDesc_Convert, &keyData)) - return NULL; - _err = AECallObjectAccessor(desiredClass, - &containerToken, - containerClass, - keyForm, - &keyData, - &token); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &token); - return _res; -} - -static PyMethodDef AE_methods[] = { - {"AECoercePtr", (PyCFunction)AE_AECoercePtr, 1, - PyDoc_STR("(DescType typeCode, Buffer dataPtr, DescType toType) -> (AEDesc result)")}, - {"AECreateDesc", (PyCFunction)AE_AECreateDesc, 1, - PyDoc_STR("(DescType typeCode, Buffer dataPtr) -> (AEDesc result)")}, - {"AECreateList", (PyCFunction)AE_AECreateList, 1, - PyDoc_STR("(Buffer factoringPtr, Boolean isRecord) -> (AEDescList resultList)")}, - {"AECreateAppleEvent", (PyCFunction)AE_AECreateAppleEvent, 1, - PyDoc_STR("(AEEventClass theAEEventClass, AEEventID theAEEventID, AEAddressDesc target, AEReturnID returnID, AETransactionID transactionID) -> (AppleEvent result)")}, - {"AEReplaceDescData", (PyCFunction)AE_AEReplaceDescData, 1, - PyDoc_STR("(DescType typeCode, Buffer dataPtr) -> (AEDesc theAEDesc)")}, - {"AEProcessAppleEvent", (PyCFunction)AE_AEProcessAppleEvent, 1, - PyDoc_STR("(EventRecord theEventRecord) -> None")}, - {"AEGetInteractionAllowed", (PyCFunction)AE_AEGetInteractionAllowed, 1, - PyDoc_STR("() -> (AEInteractAllowed level)")}, - {"AESetInteractionAllowed", (PyCFunction)AE_AESetInteractionAllowed, 1, - PyDoc_STR("(AEInteractAllowed level) -> None")}, - {"AEInteractWithUser", (PyCFunction)AE_AEInteractWithUser, 1, - PyDoc_STR("(long timeOutInTicks) -> None")}, - {"AEInstallEventHandler", (PyCFunction)AE_AEInstallEventHandler, 1, - PyDoc_STR("(AEEventClass theAEEventClass, AEEventID theAEEventID, EventHandler handler) -> None")}, - {"AERemoveEventHandler", (PyCFunction)AE_AERemoveEventHandler, 1, - PyDoc_STR("(AEEventClass theAEEventClass, AEEventID theAEEventID) -> None")}, - {"AEGetEventHandler", (PyCFunction)AE_AEGetEventHandler, 1, - PyDoc_STR("(AEEventClass theAEEventClass, AEEventID theAEEventID) -> (EventHandler handler)")}, - {"AEInstallSpecialHandler", (PyCFunction)AE_AEInstallSpecialHandler, 1, - PyDoc_STR("(AEKeyword functionClass) -> None")}, - {"AERemoveSpecialHandler", (PyCFunction)AE_AERemoveSpecialHandler, 1, - PyDoc_STR("(AEKeyword functionClass) -> None")}, - {"AEManagerInfo", (PyCFunction)AE_AEManagerInfo, 1, - PyDoc_STR("(AEKeyword keyWord) -> (long result)")}, - {"AEObjectInit", (PyCFunction)AE_AEObjectInit, 1, - PyDoc_STR("() -> None")}, - {"AEDisposeToken", (PyCFunction)AE_AEDisposeToken, 1, - PyDoc_STR("() -> (AEDesc theToken)")}, - {"AECallObjectAccessor", (PyCFunction)AE_AECallObjectAccessor, 1, - PyDoc_STR("(DescType desiredClass, AEDesc containerToken, DescType containerClass, DescType keyForm, AEDesc keyData) -> (AEDesc token)")}, - {NULL, NULL, 0} -}; - - - -static pascal OSErr -GenericEventHandler(const AppleEvent *request, AppleEvent *reply, refcontype refcon) -{ - PyObject *handler = (PyObject *)refcon; - AEDescObject *requestObject, *replyObject; - PyObject *args, *res; - if ((requestObject = (AEDescObject *)AEDesc_New((AppleEvent *)request)) == NULL) { - return -1; - } - if ((replyObject = (AEDescObject *)AEDesc_New(reply)) == NULL) { - Py_DECREF(requestObject); - return -1; - } - if ((args = Py_BuildValue("OO", requestObject, replyObject)) == NULL) { - Py_DECREF(requestObject); - Py_DECREF(replyObject); - return -1; - } - res = PyEval_CallObject(handler, args); - requestObject->ob_itself.descriptorType = 'null'; - requestObject->ob_itself.dataHandle = NULL; - replyObject->ob_itself.descriptorType = 'null'; - replyObject->ob_itself.dataHandle = NULL; - Py_DECREF(args); - if (res == NULL) { - PySys_WriteStderr("Exception in AE event handler function\n"); - PyErr_Print(); - return -1; - } - Py_DECREF(res); - return noErr; -} - -PyObject *AEDesc_NewBorrowed(AEDesc *itself) -{ - PyObject *it; - - it = AEDesc_New(itself); - if (it) - ((AEDescObject *)it)->ob_owned = 0; - return (PyObject *)it; -} - - - -void init_AE(void) -{ - PyObject *m; - PyObject *d; - - upp_AEIdleProc = NewAEIdleUPP(AEIdleProc); - upp_GenericEventHandler = NewAEEventHandlerUPP(GenericEventHandler); - PyMac_INIT_TOOLBOX_OBJECT_NEW(AEDesc *, AEDesc_New); - PyMac_INIT_TOOLBOX_OBJECT_NEW(AEDesc *, AEDesc_NewBorrowed); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(AEDesc, AEDesc_Convert); - - m = Py_InitModule("_AE", AE_methods); - d = PyModule_GetDict(m); - AE_Error = PyMac_GetOSErrException(); - if (AE_Error == NULL || - PyDict_SetItemString(d, "Error", AE_Error) != 0) - return; - AEDesc_Type.ob_type = &PyType_Type; - if (PyType_Ready(&AEDesc_Type) < 0) return; - Py_INCREF(&AEDesc_Type); - PyModule_AddObject(m, "AEDesc", (PyObject *)&AEDesc_Type); - /* Backward-compatible name */ - Py_INCREF(&AEDesc_Type); - PyModule_AddObject(m, "AEDescType", (PyObject *)&AEDesc_Type); -} - -/* ========================= End module _AE ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/ae/aescan.py b/project/jni/python/src/Mac/Modules/ae/aescan.py deleted file mode 100644 index ce19a5e25..000000000 --- a/project/jni/python/src/Mac/Modules/ae/aescan.py +++ /dev/null @@ -1,97 +0,0 @@ -# Scan AppleEvents.h header file, generate aegen.py and AppleEvents.py files. -# Then run aesupport to generate AEmodule.c. -# (Should learn how to tell the compiler to compile it as well.) - -import sys -import MacOS - -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) - -from scantools import Scanner - -def main(): - print "=== Scanning AEDataModel.h, AppleEvents.h, AERegistry.h, AEObjects.h ===" - input = ["AEDataModel.h", "AEInteraction.h", "AppleEvents.h", "AERegistry.h", "AEObjects.h"] - output = "aegen.py" - defsoutput = TOOLBOXDIR + "AppleEvents.py" - scanner = AppleEventsScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done Scanning and Generating, now doing 'import aesupport' ===" - import aesupport - print "=== Done 'import aesupport'. It's up to you to compile AEmodule.c ===" - -class AppleEventsScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "AEFunction" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t[-4:] == "_ptr" and m == "InMode" and \ - t[:-4] in ("AEDesc", "AEAddressDesc", "AEDescList", - "AERecord", "AppleEvent"): - classname = "AEMethod" - listname = "aedescmethods" - return classname, listname - - def makeblacklistnames(self): - return [ - "AEDisposeDesc", -# "AEGetEventHandler", - "AEGetDescData", # Use object.data - "AEGetSpecialHandler", - # Constants with funny definitions - "kAEDontDisposeOnResume", - "kAEUseStandardDispatch", - ] - - def makeblacklisttypes(self): - return [ - "ProcPtr", - "AEArrayType", - "AECoercionHandlerUPP", - "UniversalProcPtr", - "OSLCompareUPP", - "OSLAccessorUPP", - ] - - def makerepairinstructions(self): - return [ - ([("Boolean", "isSysHandler", "InMode")], - [("AlwaysFalse", "*", "*")]), - - ([("void_ptr", "*", "InMode"), ("Size", "*", "InMode")], - [("InBuffer", "*", "*")]), - - ([("EventHandlerProcPtr", "*", "InMode"), ("long", "*", "InMode")], - [("EventHandler", "*", "*")]), - - ([("EventHandlerProcPtr", "*", "OutMode"), ("long", "*", "OutMode")], - [("EventHandler", "*", "*")]), - - ([("AEEventHandlerUPP", "*", "InMode"), ("long", "*", "InMode")], - [("EventHandler", "*", "*")]), - - ([("AEEventHandlerUPP", "*", "OutMode"), ("long", "*", "OutMode")], - [("EventHandler", "*", "*")]), - - ([("void", "*", "OutMode"), ("Size", "*", "InMode"), - ("Size", "*", "OutMode")], - [("VarVarOutBuffer", "*", "InOutMode")]), - - ([("AppleEvent", "theAppleEvent", "OutMode")], - [("AppleEvent_ptr", "*", "InMode")]), - - ([("AEDescList", "theAEDescList", "OutMode")], - [("AEDescList_ptr", "*", "InMode")]), - ] - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/ae/aesupport.py b/project/jni/python/src/Mac/Modules/ae/aesupport.py deleted file mode 100644 index 91c5b82ef..000000000 --- a/project/jni/python/src/Mac/Modules/ae/aesupport.py +++ /dev/null @@ -1,237 +0,0 @@ -# This script will generate the AppleEvents interface for Python. -# It uses the "bgen" package to generate C code. -# It execs the file aegen.py which contain the function definitions -# (aegen.py was generated by aescan.py, scanning the header file). - - -from macsupport import * - - -AEArrayType = Type("AEArrayType", "c") -AESendMode = Type("AESendMode", "l") -AESendPriority = Type("AESendPriority", "h") -AEInteractAllowed = Type("AEInteractAllowed", "b") -AEReturnID = Type("AEReturnID", "h") -AETransactionID = Type("AETransactionID", "l") - - - -AEEventClass = OSTypeType('AEEventClass') -AEEventID = OSTypeType('AEEventID') -AEKeyword = OSTypeType('AEKeyword') -DescType = OSTypeType('DescType') - - -AEDesc = OpaqueType('AEDesc') -AEDesc_ptr = OpaqueType('AEDesc') - -AEAddressDesc = OpaqueType('AEAddressDesc', 'AEDesc') -AEAddressDesc_ptr = OpaqueType('AEAddressDesc', 'AEDesc') - -AEDescList = OpaqueType('AEDescList', 'AEDesc') -AEDescList_ptr = OpaqueType('AEDescList', 'AEDesc') - -AERecord = OpaqueType('AERecord', 'AEDesc') -AERecord_ptr = OpaqueType('AERecord', 'AEDesc') - -AppleEvent = OpaqueType('AppleEvent', 'AEDesc') -AppleEvent_ptr = OpaqueType('AppleEvent', 'AEDesc') - - -class EHType(Type): - def __init__(self, name = 'EventHandler', format = ''): - Type.__init__(self, name, format) - def declare(self, name): - Output("AEEventHandlerUPP %s__proc__ = upp_GenericEventHandler;", name) - Output("PyObject *%s;", name) - def getargsFormat(self): - return "O" - def getargsArgs(self, name): - return "&%s" % name - def passInput(self, name): - return "%s__proc__, (long)%s" % (name, name) - def passOutput(self, name): - return "&%s__proc__, (long *)&%s" % (name, name) - def mkvalueFormat(self): - return "O" - def mkvalueArgs(self, name): - return name - def cleanup(self, name): - Output("Py_INCREF(%s); /* XXX leak, but needed */", name) - -class EHNoRefConType(EHType): - def passInput(self, name): - return "upp_GenericEventHandler" - -EventHandler = EHType() -EventHandlerNoRefCon = EHNoRefConType() - - -IdleProcPtr = FakeType("upp_AEIdleProc") -AEIdleUPP = IdleProcPtr -EventFilterProcPtr = FakeType("(AEFilterUPP)0") -AEFilterUPP = EventFilterProcPtr -NMRecPtr = FakeType("(NMRecPtr)0") -EventHandlerProcPtr = FakeType("upp_GenericEventHandler") -AEEventHandlerUPP = EventHandlerProcPtr -AlwaysFalse = FakeType("0") - - -AEFunction = OSErrWeakLinkFunctionGenerator -AEMethod = OSErrWeakLinkMethodGenerator - - -includestuff = includestuff + """ -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_AEDesc_New(AEDesc *); -extern int _AEDesc_Convert(PyObject *, AEDesc *); - -#define AEDesc_New _AEDesc_New -#define AEDesc_NewBorrowed _AEDesc_NewBorrowed -#define AEDesc_Convert _AEDesc_Convert -#endif - -typedef long refcontype; - -static pascal OSErr GenericEventHandler(const AppleEvent *request, AppleEvent *reply, refcontype refcon); /* Forward */ - -AEEventHandlerUPP upp_GenericEventHandler; - -static pascal Boolean AEIdleProc(EventRecord *theEvent, long *sleepTime, RgnHandle *mouseRgn) -{ - if ( PyOS_InterruptOccurred() ) - return 1; - return 0; -} - -AEIdleUPP upp_AEIdleProc; -""" - -finalstuff = finalstuff + """ -static pascal OSErr -GenericEventHandler(const AppleEvent *request, AppleEvent *reply, refcontype refcon) -{ - PyObject *handler = (PyObject *)refcon; - AEDescObject *requestObject, *replyObject; - PyObject *args, *res; - if ((requestObject = (AEDescObject *)AEDesc_New((AppleEvent *)request)) == NULL) { - return -1; - } - if ((replyObject = (AEDescObject *)AEDesc_New(reply)) == NULL) { - Py_DECREF(requestObject); - return -1; - } - if ((args = Py_BuildValue("OO", requestObject, replyObject)) == NULL) { - Py_DECREF(requestObject); - Py_DECREF(replyObject); - return -1; - } - res = PyEval_CallObject(handler, args); - requestObject->ob_itself.descriptorType = 'null'; - requestObject->ob_itself.dataHandle = NULL; - replyObject->ob_itself.descriptorType = 'null'; - replyObject->ob_itself.dataHandle = NULL; - Py_DECREF(args); - if (res == NULL) { - PySys_WriteStderr("Exception in AE event handler function\\n"); - PyErr_Print(); - return -1; - } - Py_DECREF(res); - return noErr; -} - -PyObject *AEDesc_NewBorrowed(AEDesc *itself) -{ - PyObject *it; - - it = AEDesc_New(itself); - if (it) - ((AEDescObject *)it)->ob_owned = 0; - return (PyObject *)it; -} - -""" - -initstuff = initstuff + """ - upp_AEIdleProc = NewAEIdleUPP(AEIdleProc); - upp_GenericEventHandler = NewAEEventHandlerUPP(GenericEventHandler); - PyMac_INIT_TOOLBOX_OBJECT_NEW(AEDesc *, AEDesc_New); - PyMac_INIT_TOOLBOX_OBJECT_NEW(AEDesc *, AEDesc_NewBorrowed); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(AEDesc, AEDesc_Convert); -""" - -module = MacModule('_AE', 'AE', includestuff, finalstuff, initstuff) - -class AEDescDefinition(PEP253Mixin, GlobalObjectDefinition): - getsetlist = [( - 'type', - 'return PyMac_BuildOSType(self->ob_itself.descriptorType);', - None, - 'Type of this AEDesc' - ), ( - 'data', - """ - PyObject *res; - Size size; - char *ptr; - OSErr err; - - size = AEGetDescDataSize(&self->ob_itself); - if ( (res = PyString_FromStringAndSize(NULL, size)) == NULL ) - return NULL; - if ( (ptr = PyString_AsString(res)) == NULL ) - return NULL; - if ( (err=AEGetDescData(&self->ob_itself, ptr, size)) < 0 ) - return PyMac_Error(err); - return res; - """, - None, - 'The raw data in this AEDesc' - )] - - def __init__(self, name, prefix = None, itselftype = None): - GlobalObjectDefinition.__init__(self, name, prefix or name, itselftype or name) - self.argref = "*" - - def outputStructMembers(self): - GlobalObjectDefinition.outputStructMembers(self) - Output("int ob_owned;") - - def outputInitStructMembers(self): - GlobalObjectDefinition.outputInitStructMembers(self) - Output("it->ob_owned = 1;") - - def outputCleanupStructMembers(self): - Output("if (self->ob_owned) AEDisposeDesc(&self->ob_itself);") - -aedescobject = AEDescDefinition('AEDesc') -module.addobject(aedescobject) - -functions = [] -aedescmethods = [] - -execfile('aegen.py') -##execfile('aedatamodelgen.py') - -# Manual generator -AutoDispose_body = """ -int onoff, old; -if (!PyArg_ParseTuple(_args, "i", &onoff)) - return NULL; -old = _self->ob_owned; -_self->ob_owned = onoff; -_res = Py_BuildValue("i", old); -return _res; -""" -f = ManualGenerator("AutoDispose", AutoDispose_body) -f.docstring = lambda: "(int)->int. Automatically AEDisposeDesc the object on Python object cleanup" -aedescmethods.append(f) - -for f in functions: module.add(f) -for f in aedescmethods: aedescobject.add(f) - -SetOutputFileName('_AEmodule.c') -module.generate() diff --git a/project/jni/python/src/Mac/Modules/ah/_AHmodule.c b/project/jni/python/src/Mac/Modules/ah/_AHmodule.c deleted file mode 100644 index 160a845fe..000000000 --- a/project/jni/python/src/Mac/Modules/ah/_AHmodule.c +++ /dev/null @@ -1,144 +0,0 @@ - -/* =========================== Module _AH =========================== */ - -#include "Python.h" - - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - - -static PyObject *Ah_Error; - -static PyObject *Ah_AHSearch(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef bookname; - CFStringRef query; - if (!PyArg_ParseTuple(_args, "O&O&", - CFStringRefObj_Convert, &bookname, - CFStringRefObj_Convert, &query)) - return NULL; - _err = AHSearch(bookname, - query); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Ah_AHGotoMainTOC(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - AHTOCType toctype; - if (!PyArg_ParseTuple(_args, "h", - &toctype)) - return NULL; - _err = AHGotoMainTOC(toctype); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Ah_AHGotoPage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef bookname; - CFStringRef path; - CFStringRef anchor; - if (!PyArg_ParseTuple(_args, "O&O&O&", - CFStringRefObj_Convert, &bookname, - CFStringRefObj_Convert, &path, - CFStringRefObj_Convert, &anchor)) - return NULL; - _err = AHGotoPage(bookname, - path, - anchor); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Ah_AHLookupAnchor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef bookname; - CFStringRef anchor; - if (!PyArg_ParseTuple(_args, "O&O&", - CFStringRefObj_Convert, &bookname, - CFStringRefObj_Convert, &anchor)) - return NULL; - _err = AHLookupAnchor(bookname, - anchor); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Ah_AHRegisterHelpBook(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FSRef appBundleRef; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFSRef, &appBundleRef)) - return NULL; - _err = AHRegisterHelpBook(&appBundleRef); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef Ah_methods[] = { - {"AHSearch", (PyCFunction)Ah_AHSearch, 1, - PyDoc_STR("(CFStringRef bookname, CFStringRef query) -> None")}, - {"AHGotoMainTOC", (PyCFunction)Ah_AHGotoMainTOC, 1, - PyDoc_STR("(AHTOCType toctype) -> None")}, - {"AHGotoPage", (PyCFunction)Ah_AHGotoPage, 1, - PyDoc_STR("(CFStringRef bookname, CFStringRef path, CFStringRef anchor) -> None")}, - {"AHLookupAnchor", (PyCFunction)Ah_AHLookupAnchor, 1, - PyDoc_STR("(CFStringRef bookname, CFStringRef anchor) -> None")}, - {"AHRegisterHelpBook", (PyCFunction)Ah_AHRegisterHelpBook, 1, - PyDoc_STR("(FSRef appBundleRef) -> None")}, - {NULL, NULL, 0} -}; - - - - -void init_AH(void) -{ - PyObject *m; - PyObject *d; - - - - - m = Py_InitModule("_AH", Ah_methods); - d = PyModule_GetDict(m); - Ah_Error = PyMac_GetOSErrException(); - if (Ah_Error == NULL || - PyDict_SetItemString(d, "Error", Ah_Error) != 0) - return; -} - -/* ========================= End module _AH ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/ah/ahscan.py b/project/jni/python/src/Mac/Modules/ah/ahscan.py deleted file mode 100644 index b99342772..000000000 --- a/project/jni/python/src/Mac/Modules/ah/ahscan.py +++ /dev/null @@ -1,51 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner_OSX - -LONG = "AppleHelp" -SHORT = "ah" -OBJECT = "NOTUSED" - -def main(): - input = LONG + ".h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner_OSX): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - # This is non-functional today - if t == OBJECT and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def makeblacklistnames(self): - return [ - ] - - def makeblacklisttypes(self): - return [ - ] - - def makerepairinstructions(self): - return [ - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/ah/ahsupport.py b/project/jni/python/src/Mac/Modules/ah/ahsupport.py deleted file mode 100644 index c5f24beee..000000000 --- a/project/jni/python/src/Mac/Modules/ah/ahsupport.py +++ /dev/null @@ -1,45 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'AppleHelp.h' # The Apple header file -MODNAME = '_AH' # The name of the module - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Ah' # The prefix for module-wide routines -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects -AHTOCType = Type("AHTOCType", "h") - -includestuff = includestuff + """ -#include - -""" - -# From here on it's basically all boiler plate... - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) - -# Create the generator classes used to populate the lists -Function = OSErrFunctionGenerator - -# Create and populate the lists -functions = [] -execfile(INPUTFILE) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/app/_Appmodule.c b/project/jni/python/src/Mac/Modules/app/_Appmodule.c deleted file mode 100644 index 52d17f530..000000000 --- a/project/jni/python/src/Mac/Modules/app/_Appmodule.c +++ /dev/null @@ -1,1832 +0,0 @@ - -/* ========================== Module _App =========================== */ - -#include "Python.h" - -#ifndef __LP64__ - /* Carbon GUI stuff, not available in 64-bit mode */ - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - - -static int ThemeButtonDrawInfo_Convert(PyObject *v, ThemeButtonDrawInfo *p_itself) -{ - return PyArg_Parse(v, "(iHH)", &p_itself->state, &p_itself->value, &p_itself->adornment); -} - - -static PyObject *App_Error; - -/* ----------------- Object type ThemeDrawingState ------------------ */ - -PyTypeObject ThemeDrawingState_Type; - -#define ThemeDrawingStateObj_Check(x) ((x)->ob_type == &ThemeDrawingState_Type || PyObject_TypeCheck((x), &ThemeDrawingState_Type)) - -typedef struct ThemeDrawingStateObject { - PyObject_HEAD - ThemeDrawingState ob_itself; -} ThemeDrawingStateObject; - -PyObject *ThemeDrawingStateObj_New(ThemeDrawingState itself) -{ - ThemeDrawingStateObject *it; - it = PyObject_NEW(ThemeDrawingStateObject, &ThemeDrawingState_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int ThemeDrawingStateObj_Convert(PyObject *v, ThemeDrawingState *p_itself) -{ - if (!ThemeDrawingStateObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "ThemeDrawingState required"); - return 0; - } - *p_itself = ((ThemeDrawingStateObject *)v)->ob_itself; - return 1; -} - -static void ThemeDrawingStateObj_dealloc(ThemeDrawingStateObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *ThemeDrawingStateObj_SetThemeDrawingState(ThemeDrawingStateObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _rv; - Boolean inDisposeNow; -#ifndef SetThemeDrawingState - PyMac_PRECHECK(SetThemeDrawingState); -#endif - if (!PyArg_ParseTuple(_args, "b", - &inDisposeNow)) - return NULL; - _rv = SetThemeDrawingState(_self->ob_itself, - inDisposeNow); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *ThemeDrawingStateObj_DisposeThemeDrawingState(ThemeDrawingStateObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _rv; -#ifndef DisposeThemeDrawingState - PyMac_PRECHECK(DisposeThemeDrawingState); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = DisposeThemeDrawingState(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyMethodDef ThemeDrawingStateObj_methods[] = { - {"SetThemeDrawingState", (PyCFunction)ThemeDrawingStateObj_SetThemeDrawingState, 1, - PyDoc_STR("(Boolean inDisposeNow) -> (OSStatus _rv)")}, - {"DisposeThemeDrawingState", (PyCFunction)ThemeDrawingStateObj_DisposeThemeDrawingState, 1, - PyDoc_STR("() -> (OSStatus _rv)")}, - {NULL, NULL, 0} -}; - -#define ThemeDrawingStateObj_getsetlist NULL - - -#define ThemeDrawingStateObj_compare NULL - -#define ThemeDrawingStateObj_repr NULL - -#define ThemeDrawingStateObj_hash NULL -#define ThemeDrawingStateObj_tp_init 0 - -#define ThemeDrawingStateObj_tp_alloc PyType_GenericAlloc - -static PyObject *ThemeDrawingStateObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - ThemeDrawingState itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, ThemeDrawingStateObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((ThemeDrawingStateObject *)_self)->ob_itself = itself; - return _self; -} - -#define ThemeDrawingStateObj_tp_free PyObject_Del - - -PyTypeObject ThemeDrawingState_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_App.ThemeDrawingState", /*tp_name*/ - sizeof(ThemeDrawingStateObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) ThemeDrawingStateObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) ThemeDrawingStateObj_compare, /*tp_compare*/ - (reprfunc) ThemeDrawingStateObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) ThemeDrawingStateObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - ThemeDrawingStateObj_methods, /* tp_methods */ - 0, /*tp_members*/ - ThemeDrawingStateObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - ThemeDrawingStateObj_tp_init, /* tp_init */ - ThemeDrawingStateObj_tp_alloc, /* tp_alloc */ - ThemeDrawingStateObj_tp_new, /* tp_new */ - ThemeDrawingStateObj_tp_free, /* tp_free */ -}; - -/* --------------- End object type ThemeDrawingState ---------------- */ - - -static PyObject *App_RegisterAppearanceClient(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef RegisterAppearanceClient - PyMac_PRECHECK(RegisterAppearanceClient); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = RegisterAppearanceClient(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_UnregisterAppearanceClient(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef UnregisterAppearanceClient - PyMac_PRECHECK(UnregisterAppearanceClient); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = UnregisterAppearanceClient(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_SetThemePen(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeBrush inBrush; - SInt16 inDepth; - Boolean inIsColorDevice; -#ifndef SetThemePen - PyMac_PRECHECK(SetThemePen); -#endif - if (!PyArg_ParseTuple(_args, "hhb", - &inBrush, - &inDepth, - &inIsColorDevice)) - return NULL; - _err = SetThemePen(inBrush, - inDepth, - inIsColorDevice); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_SetThemeBackground(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeBrush inBrush; - SInt16 inDepth; - Boolean inIsColorDevice; -#ifndef SetThemeBackground - PyMac_PRECHECK(SetThemeBackground); -#endif - if (!PyArg_ParseTuple(_args, "hhb", - &inBrush, - &inDepth, - &inIsColorDevice)) - return NULL; - _err = SetThemeBackground(inBrush, - inDepth, - inIsColorDevice); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_SetThemeTextColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeTextColor inColor; - SInt16 inDepth; - Boolean inIsColorDevice; -#ifndef SetThemeTextColor - PyMac_PRECHECK(SetThemeTextColor); -#endif - if (!PyArg_ParseTuple(_args, "hhb", - &inColor, - &inDepth, - &inIsColorDevice)) - return NULL; - _err = SetThemeTextColor(inColor, - inDepth, - inIsColorDevice); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_SetThemeWindowBackground(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - ThemeBrush inBrush; - Boolean inUpdate; -#ifndef SetThemeWindowBackground - PyMac_PRECHECK(SetThemeWindowBackground); -#endif - if (!PyArg_ParseTuple(_args, "O&hb", - WinObj_Convert, &inWindow, - &inBrush, - &inUpdate)) - return NULL; - _err = SetThemeWindowBackground(inWindow, - inBrush, - inUpdate); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeWindowHeader(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inRect; - ThemeDrawState inState; -#ifndef DrawThemeWindowHeader - PyMac_PRECHECK(DrawThemeWindowHeader); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetRect, &inRect, - &inState)) - return NULL; - _err = DrawThemeWindowHeader(&inRect, - inState); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeWindowListViewHeader(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inRect; - ThemeDrawState inState; -#ifndef DrawThemeWindowListViewHeader - PyMac_PRECHECK(DrawThemeWindowListViewHeader); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetRect, &inRect, - &inState)) - return NULL; - _err = DrawThemeWindowListViewHeader(&inRect, - inState); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemePlacard(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inRect; - ThemeDrawState inState; -#ifndef DrawThemePlacard - PyMac_PRECHECK(DrawThemePlacard); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetRect, &inRect, - &inState)) - return NULL; - _err = DrawThemePlacard(&inRect, - inState); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeEditTextFrame(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inRect; - ThemeDrawState inState; -#ifndef DrawThemeEditTextFrame - PyMac_PRECHECK(DrawThemeEditTextFrame); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetRect, &inRect, - &inState)) - return NULL; - _err = DrawThemeEditTextFrame(&inRect, - inState); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeListBoxFrame(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inRect; - ThemeDrawState inState; -#ifndef DrawThemeListBoxFrame - PyMac_PRECHECK(DrawThemeListBoxFrame); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetRect, &inRect, - &inState)) - return NULL; - _err = DrawThemeListBoxFrame(&inRect, - inState); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeFocusRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inRect; - Boolean inHasFocus; -#ifndef DrawThemeFocusRect - PyMac_PRECHECK(DrawThemeFocusRect); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - PyMac_GetRect, &inRect, - &inHasFocus)) - return NULL; - _err = DrawThemeFocusRect(&inRect, - inHasFocus); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemePrimaryGroup(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inRect; - ThemeDrawState inState; -#ifndef DrawThemePrimaryGroup - PyMac_PRECHECK(DrawThemePrimaryGroup); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetRect, &inRect, - &inState)) - return NULL; - _err = DrawThemePrimaryGroup(&inRect, - inState); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeSecondaryGroup(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inRect; - ThemeDrawState inState; -#ifndef DrawThemeSecondaryGroup - PyMac_PRECHECK(DrawThemeSecondaryGroup); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetRect, &inRect, - &inState)) - return NULL; - _err = DrawThemeSecondaryGroup(&inRect, - inState); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeSeparator(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inRect; - ThemeDrawState inState; -#ifndef DrawThemeSeparator - PyMac_PRECHECK(DrawThemeSeparator); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetRect, &inRect, - &inState)) - return NULL; - _err = DrawThemeSeparator(&inRect, - inState); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeModelessDialogFrame(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inRect; - ThemeDrawState inState; -#ifndef DrawThemeModelessDialogFrame - PyMac_PRECHECK(DrawThemeModelessDialogFrame); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetRect, &inRect, - &inState)) - return NULL; - _err = DrawThemeModelessDialogFrame(&inRect, - inState); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeGenericWell(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inRect; - ThemeDrawState inState; - Boolean inFillCenter; -#ifndef DrawThemeGenericWell - PyMac_PRECHECK(DrawThemeGenericWell); -#endif - if (!PyArg_ParseTuple(_args, "O&lb", - PyMac_GetRect, &inRect, - &inState, - &inFillCenter)) - return NULL; - _err = DrawThemeGenericWell(&inRect, - inState, - inFillCenter); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeFocusRegion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean inHasFocus; -#ifndef DrawThemeFocusRegion - PyMac_PRECHECK(DrawThemeFocusRegion); -#endif - if (!PyArg_ParseTuple(_args, "b", - &inHasFocus)) - return NULL; - _err = DrawThemeFocusRegion((RgnHandle)0, - inHasFocus); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_IsThemeInColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - SInt16 inDepth; - Boolean inIsColorDevice; -#ifndef IsThemeInColor - PyMac_PRECHECK(IsThemeInColor); -#endif - if (!PyArg_ParseTuple(_args, "hb", - &inDepth, - &inIsColorDevice)) - return NULL; - _rv = IsThemeInColor(inDepth, - inIsColorDevice); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *App_GetThemeAccentColors(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CTabHandle outColors; -#ifndef GetThemeAccentColors - PyMac_PRECHECK(GetThemeAccentColors); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetThemeAccentColors(&outColors); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, outColors); - return _res; -} - -static PyObject *App_DrawThemeMenuBarBackground(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inBounds; - ThemeMenuBarState inState; - UInt32 inAttributes; -#ifndef DrawThemeMenuBarBackground - PyMac_PRECHECK(DrawThemeMenuBarBackground); -#endif - if (!PyArg_ParseTuple(_args, "O&Hl", - PyMac_GetRect, &inBounds, - &inState, - &inAttributes)) - return NULL; - _err = DrawThemeMenuBarBackground(&inBounds, - inState, - inAttributes); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_GetThemeMenuBarHeight(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - SInt16 outHeight; -#ifndef GetThemeMenuBarHeight - PyMac_PRECHECK(GetThemeMenuBarHeight); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetThemeMenuBarHeight(&outHeight); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - outHeight); - return _res; -} - -static PyObject *App_DrawThemeMenuBackground(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inMenuRect; - ThemeMenuType inMenuType; -#ifndef DrawThemeMenuBackground - PyMac_PRECHECK(DrawThemeMenuBackground); -#endif - if (!PyArg_ParseTuple(_args, "O&H", - PyMac_GetRect, &inMenuRect, - &inMenuType)) - return NULL; - _err = DrawThemeMenuBackground(&inMenuRect, - inMenuType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_GetThemeMenuBackgroundRegion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inMenuRect; - ThemeMenuType menuType; -#ifndef GetThemeMenuBackgroundRegion - PyMac_PRECHECK(GetThemeMenuBackgroundRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&H", - PyMac_GetRect, &inMenuRect, - &menuType)) - return NULL; - _err = GetThemeMenuBackgroundRegion(&inMenuRect, - menuType, - (RgnHandle)0); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeMenuSeparator(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inItemRect; -#ifndef DrawThemeMenuSeparator - PyMac_PRECHECK(DrawThemeMenuSeparator); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &inItemRect)) - return NULL; - _err = DrawThemeMenuSeparator(&inItemRect); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_GetThemeMenuSeparatorHeight(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - SInt16 outHeight; -#ifndef GetThemeMenuSeparatorHeight - PyMac_PRECHECK(GetThemeMenuSeparatorHeight); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetThemeMenuSeparatorHeight(&outHeight); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - outHeight); - return _res; -} - -static PyObject *App_GetThemeMenuItemExtra(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeMenuItemType inItemType; - SInt16 outHeight; - SInt16 outWidth; -#ifndef GetThemeMenuItemExtra - PyMac_PRECHECK(GetThemeMenuItemExtra); -#endif - if (!PyArg_ParseTuple(_args, "H", - &inItemType)) - return NULL; - _err = GetThemeMenuItemExtra(inItemType, - &outHeight, - &outWidth); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("hh", - outHeight, - outWidth); - return _res; -} - -static PyObject *App_GetThemeMenuTitleExtra(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - SInt16 outWidth; - Boolean inIsSquished; -#ifndef GetThemeMenuTitleExtra - PyMac_PRECHECK(GetThemeMenuTitleExtra); -#endif - if (!PyArg_ParseTuple(_args, "b", - &inIsSquished)) - return NULL; - _err = GetThemeMenuTitleExtra(&outWidth, - inIsSquished); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - outWidth); - return _res; -} - -static PyObject *App_DrawThemeTabPane(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inRect; - ThemeDrawState inState; -#ifndef DrawThemeTabPane - PyMac_PRECHECK(DrawThemeTabPane); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetRect, &inRect, - &inState)) - return NULL; - _err = DrawThemeTabPane(&inRect, - inState); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_GetThemeTabRegion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inRect; - ThemeTabStyle inStyle; - ThemeTabDirection inDirection; -#ifndef GetThemeTabRegion - PyMac_PRECHECK(GetThemeTabRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&HH", - PyMac_GetRect, &inRect, - &inStyle, - &inDirection)) - return NULL; - _err = GetThemeTabRegion(&inRect, - inStyle, - inDirection, - (RgnHandle)0); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_SetThemeCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeCursor inCursor; -#ifndef SetThemeCursor - PyMac_PRECHECK(SetThemeCursor); -#endif - if (!PyArg_ParseTuple(_args, "l", - &inCursor)) - return NULL; - _err = SetThemeCursor(inCursor); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_SetAnimatedThemeCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeCursor inCursor; - UInt32 inAnimationStep; -#ifndef SetAnimatedThemeCursor - PyMac_PRECHECK(SetAnimatedThemeCursor); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &inCursor, - &inAnimationStep)) - return NULL; - _err = SetAnimatedThemeCursor(inCursor, - inAnimationStep); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_GetThemeScrollBarThumbStyle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeScrollBarThumbStyle outStyle; -#ifndef GetThemeScrollBarThumbStyle - PyMac_PRECHECK(GetThemeScrollBarThumbStyle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetThemeScrollBarThumbStyle(&outStyle); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - outStyle); - return _res; -} - -static PyObject *App_GetThemeScrollBarArrowStyle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeScrollBarArrowStyle outStyle; -#ifndef GetThemeScrollBarArrowStyle - PyMac_PRECHECK(GetThemeScrollBarArrowStyle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetThemeScrollBarArrowStyle(&outStyle); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - outStyle); - return _res; -} - -static PyObject *App_GetThemeCheckBoxStyle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeCheckBoxStyle outStyle; -#ifndef GetThemeCheckBoxStyle - PyMac_PRECHECK(GetThemeCheckBoxStyle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetThemeCheckBoxStyle(&outStyle); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - outStyle); - return _res; -} - -static PyObject *App_UseThemeFont(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeFontID inFontID; - ScriptCode inScript; -#ifndef UseThemeFont - PyMac_PRECHECK(UseThemeFont); -#endif - if (!PyArg_ParseTuple(_args, "Hh", - &inFontID, - &inScript)) - return NULL; - _err = UseThemeFont(inFontID, - inScript); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeTextBox(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef inString; - ThemeFontID inFontID; - ThemeDrawState inState; - Boolean inWrapToWidth; - Rect inBoundingBox; - SInt16 inJust; -#ifndef DrawThemeTextBox - PyMac_PRECHECK(DrawThemeTextBox); -#endif - if (!PyArg_ParseTuple(_args, "O&HlbO&h", - CFStringRefObj_Convert, &inString, - &inFontID, - &inState, - &inWrapToWidth, - PyMac_GetRect, &inBoundingBox, - &inJust)) - return NULL; - _err = DrawThemeTextBox(inString, - inFontID, - inState, - inWrapToWidth, - &inBoundingBox, - inJust, - NULL); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_TruncateThemeText(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFMutableStringRef inString; - ThemeFontID inFontID; - ThemeDrawState inState; - SInt16 inPixelWidthLimit; - TruncCode inTruncWhere; - Boolean outTruncated; -#ifndef TruncateThemeText - PyMac_PRECHECK(TruncateThemeText); -#endif - if (!PyArg_ParseTuple(_args, "O&Hlhh", - CFMutableStringRefObj_Convert, &inString, - &inFontID, - &inState, - &inPixelWidthLimit, - &inTruncWhere)) - return NULL; - _err = TruncateThemeText(inString, - inFontID, - inState, - inPixelWidthLimit, - inTruncWhere, - &outTruncated); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - outTruncated); - return _res; -} - -static PyObject *App_GetThemeTextDimensions(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef inString; - ThemeFontID inFontID; - ThemeDrawState inState; - Boolean inWrapToWidth; - Point ioBounds; - SInt16 outBaseline; -#ifndef GetThemeTextDimensions - PyMac_PRECHECK(GetThemeTextDimensions); -#endif - if (!PyArg_ParseTuple(_args, "O&HlbO&", - CFStringRefObj_Convert, &inString, - &inFontID, - &inState, - &inWrapToWidth, - PyMac_GetPoint, &ioBounds)) - return NULL; - _err = GetThemeTextDimensions(inString, - inFontID, - inState, - inWrapToWidth, - &ioBounds, - &outBaseline); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&h", - PyMac_BuildPoint, ioBounds, - outBaseline); - return _res; -} - -static PyObject *App_GetThemeTextShadowOutset(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeFontID inFontID; - ThemeDrawState inState; - Rect outOutset; -#ifndef GetThemeTextShadowOutset - PyMac_PRECHECK(GetThemeTextShadowOutset); -#endif - if (!PyArg_ParseTuple(_args, "Hl", - &inFontID, - &inState)) - return NULL; - _err = GetThemeTextShadowOutset(inFontID, - inState, - &outOutset); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &outOutset); - return _res; -} - -static PyObject *App_DrawThemeScrollBarArrows(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect bounds; - ThemeTrackEnableState enableState; - ThemeTrackPressState pressState; - Boolean isHoriz; - Rect trackBounds; -#ifndef DrawThemeScrollBarArrows - PyMac_PRECHECK(DrawThemeScrollBarArrows); -#endif - if (!PyArg_ParseTuple(_args, "O&bbb", - PyMac_GetRect, &bounds, - &enableState, - &pressState, - &isHoriz)) - return NULL; - _err = DrawThemeScrollBarArrows(&bounds, - enableState, - pressState, - isHoriz, - &trackBounds); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &trackBounds); - return _res; -} - -static PyObject *App_GetThemeScrollBarTrackRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect bounds; - ThemeTrackEnableState enableState; - ThemeTrackPressState pressState; - Boolean isHoriz; - Rect trackBounds; -#ifndef GetThemeScrollBarTrackRect - PyMac_PRECHECK(GetThemeScrollBarTrackRect); -#endif - if (!PyArg_ParseTuple(_args, "O&bbb", - PyMac_GetRect, &bounds, - &enableState, - &pressState, - &isHoriz)) - return NULL; - _err = GetThemeScrollBarTrackRect(&bounds, - enableState, - pressState, - isHoriz, - &trackBounds); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &trackBounds); - return _res; -} - -static PyObject *App_HitTestThemeScrollBarArrows(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Rect scrollBarBounds; - ThemeTrackEnableState enableState; - ThemeTrackPressState pressState; - Boolean isHoriz; - Point ptHit; - Rect trackBounds; - ControlPartCode partcode; -#ifndef HitTestThemeScrollBarArrows - PyMac_PRECHECK(HitTestThemeScrollBarArrows); -#endif - if (!PyArg_ParseTuple(_args, "O&bbbO&", - PyMac_GetRect, &scrollBarBounds, - &enableState, - &pressState, - &isHoriz, - PyMac_GetPoint, &ptHit)) - return NULL; - _rv = HitTestThemeScrollBarArrows(&scrollBarBounds, - enableState, - pressState, - isHoriz, - ptHit, - &trackBounds, - &partcode); - _res = Py_BuildValue("bO&h", - _rv, - PyMac_BuildRect, &trackBounds, - partcode); - return _res; -} - -static PyObject *App_DrawThemeScrollBarDelimiters(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeWindowType flavor; - Rect inContRect; - ThemeDrawState state; - ThemeWindowAttributes attributes; -#ifndef DrawThemeScrollBarDelimiters - PyMac_PRECHECK(DrawThemeScrollBarDelimiters); -#endif - if (!PyArg_ParseTuple(_args, "HO&ll", - &flavor, - PyMac_GetRect, &inContRect, - &state, - &attributes)) - return NULL; - _err = DrawThemeScrollBarDelimiters(flavor, - &inContRect, - state, - attributes); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeButton(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inBounds; - UInt16 inKind; - ThemeButtonDrawInfo inNewInfo; - ThemeButtonDrawInfo inPrevInfo; - UInt32 inUserData; -#ifndef DrawThemeButton - PyMac_PRECHECK(DrawThemeButton); -#endif - if (!PyArg_ParseTuple(_args, "O&HO&O&l", - PyMac_GetRect, &inBounds, - &inKind, - ThemeButtonDrawInfo_Convert, &inNewInfo, - ThemeButtonDrawInfo_Convert, &inPrevInfo, - &inUserData)) - return NULL; - _err = DrawThemeButton(&inBounds, - inKind, - &inNewInfo, - &inPrevInfo, - NULL, - NULL, - inUserData); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_GetThemeButtonRegion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inBounds; - UInt16 inKind; - ThemeButtonDrawInfo inNewInfo; -#ifndef GetThemeButtonRegion - PyMac_PRECHECK(GetThemeButtonRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&HO&", - PyMac_GetRect, &inBounds, - &inKind, - ThemeButtonDrawInfo_Convert, &inNewInfo)) - return NULL; - _err = GetThemeButtonRegion(&inBounds, - inKind, - &inNewInfo, - (RgnHandle)0); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_GetThemeButtonContentBounds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inBounds; - UInt16 inKind; - ThemeButtonDrawInfo inDrawInfo; - Rect outBounds; -#ifndef GetThemeButtonContentBounds - PyMac_PRECHECK(GetThemeButtonContentBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&HO&", - PyMac_GetRect, &inBounds, - &inKind, - ThemeButtonDrawInfo_Convert, &inDrawInfo)) - return NULL; - _err = GetThemeButtonContentBounds(&inBounds, - inKind, - &inDrawInfo, - &outBounds); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &outBounds); - return _res; -} - -static PyObject *App_GetThemeButtonBackgroundBounds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inBounds; - UInt16 inKind; - ThemeButtonDrawInfo inDrawInfo; - Rect outBounds; -#ifndef GetThemeButtonBackgroundBounds - PyMac_PRECHECK(GetThemeButtonBackgroundBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&HO&", - PyMac_GetRect, &inBounds, - &inKind, - ThemeButtonDrawInfo_Convert, &inDrawInfo)) - return NULL; - _err = GetThemeButtonBackgroundBounds(&inBounds, - inKind, - &inDrawInfo, - &outBounds); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &outBounds); - return _res; -} - -static PyObject *App_PlayThemeSound(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeSoundKind kind; -#ifndef PlayThemeSound - PyMac_PRECHECK(PlayThemeSound); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &kind)) - return NULL; - _err = PlayThemeSound(kind); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_BeginThemeDragSound(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeDragSoundKind kind; -#ifndef BeginThemeDragSound - PyMac_PRECHECK(BeginThemeDragSound); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &kind)) - return NULL; - _err = BeginThemeDragSound(kind); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_EndThemeDragSound(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef EndThemeDragSound - PyMac_PRECHECK(EndThemeDragSound); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = EndThemeDragSound(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeTickMark(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect bounds; - ThemeDrawState state; -#ifndef DrawThemeTickMark - PyMac_PRECHECK(DrawThemeTickMark); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetRect, &bounds, - &state)) - return NULL; - _err = DrawThemeTickMark(&bounds, - state); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeChasingArrows(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect bounds; - UInt32 index; - ThemeDrawState state; - UInt32 eraseData; -#ifndef DrawThemeChasingArrows - PyMac_PRECHECK(DrawThemeChasingArrows); -#endif - if (!PyArg_ParseTuple(_args, "O&lll", - PyMac_GetRect, &bounds, - &index, - &state, - &eraseData)) - return NULL; - _err = DrawThemeChasingArrows(&bounds, - index, - state, - NULL, - eraseData); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemePopupArrow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect bounds; - ThemeArrowOrientation orientation; - ThemePopupArrowSize size; - ThemeDrawState state; - UInt32 eraseData; -#ifndef DrawThemePopupArrow - PyMac_PRECHECK(DrawThemePopupArrow); -#endif - if (!PyArg_ParseTuple(_args, "O&HHll", - PyMac_GetRect, &bounds, - &orientation, - &size, - &state, - &eraseData)) - return NULL; - _err = DrawThemePopupArrow(&bounds, - orientation, - size, - state, - NULL, - eraseData); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeStandaloneGrowBox(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Point origin; - ThemeGrowDirection growDirection; - Boolean isSmall; - ThemeDrawState state; -#ifndef DrawThemeStandaloneGrowBox - PyMac_PRECHECK(DrawThemeStandaloneGrowBox); -#endif - if (!PyArg_ParseTuple(_args, "O&Hbl", - PyMac_GetPoint, &origin, - &growDirection, - &isSmall, - &state)) - return NULL; - _err = DrawThemeStandaloneGrowBox(origin, - growDirection, - isSmall, - state); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_DrawThemeStandaloneNoGrowBox(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Point origin; - ThemeGrowDirection growDirection; - Boolean isSmall; - ThemeDrawState state; -#ifndef DrawThemeStandaloneNoGrowBox - PyMac_PRECHECK(DrawThemeStandaloneNoGrowBox); -#endif - if (!PyArg_ParseTuple(_args, "O&Hbl", - PyMac_GetPoint, &origin, - &growDirection, - &isSmall, - &state)) - return NULL; - _err = DrawThemeStandaloneNoGrowBox(origin, - growDirection, - isSmall, - state); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_GetThemeStandaloneGrowBoxBounds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Point origin; - ThemeGrowDirection growDirection; - Boolean isSmall; - Rect bounds; -#ifndef GetThemeStandaloneGrowBoxBounds - PyMac_PRECHECK(GetThemeStandaloneGrowBoxBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&Hb", - PyMac_GetPoint, &origin, - &growDirection, - &isSmall)) - return NULL; - _err = GetThemeStandaloneGrowBoxBounds(origin, - growDirection, - isSmall, - &bounds); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &bounds); - return _res; -} - -static PyObject *App_NormalizeThemeDrawingState(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef NormalizeThemeDrawingState - PyMac_PRECHECK(NormalizeThemeDrawingState); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = NormalizeThemeDrawingState(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_GetThemeDrawingState(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeDrawingState outState; -#ifndef GetThemeDrawingState - PyMac_PRECHECK(GetThemeDrawingState); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetThemeDrawingState(&outState); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ThemeDrawingStateObj_New, outState); - return _res; -} - -static PyObject *App_ApplyThemeBackground(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeBackgroundKind inKind; - Rect bounds; - ThemeDrawState inState; - SInt16 inDepth; - Boolean inColorDev; -#ifndef ApplyThemeBackground - PyMac_PRECHECK(ApplyThemeBackground); -#endif - if (!PyArg_ParseTuple(_args, "lO&lhb", - &inKind, - PyMac_GetRect, &bounds, - &inState, - &inDepth, - &inColorDev)) - return NULL; - _err = ApplyThemeBackground(inKind, - &bounds, - inState, - inDepth, - inColorDev); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_SetThemeTextColorForWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Boolean isActive; - SInt16 depth; - Boolean isColorDev; -#ifndef SetThemeTextColorForWindow - PyMac_PRECHECK(SetThemeTextColorForWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&bhb", - WinObj_Convert, &window, - &isActive, - &depth, - &isColorDev)) - return NULL; - _err = SetThemeTextColorForWindow(window, - isActive, - depth, - isColorDev); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *App_IsValidAppearanceFileType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - OSType fileType; -#ifndef IsValidAppearanceFileType - PyMac_PRECHECK(IsValidAppearanceFileType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &fileType)) - return NULL; - _rv = IsValidAppearanceFileType(fileType); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *App_GetThemeBrushAsColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeBrush inBrush; - SInt16 inDepth; - Boolean inColorDev; - RGBColor outColor; -#ifndef GetThemeBrushAsColor - PyMac_PRECHECK(GetThemeBrushAsColor); -#endif - if (!PyArg_ParseTuple(_args, "hhb", - &inBrush, - &inDepth, - &inColorDev)) - return NULL; - _err = GetThemeBrushAsColor(inBrush, - inDepth, - inColorDev, - &outColor); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - QdRGB_New, &outColor); - return _res; -} - -static PyObject *App_GetThemeTextColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeTextColor inColor; - SInt16 inDepth; - Boolean inColorDev; - RGBColor outColor; -#ifndef GetThemeTextColor - PyMac_PRECHECK(GetThemeTextColor); -#endif - if (!PyArg_ParseTuple(_args, "hhb", - &inColor, - &inDepth, - &inColorDev)) - return NULL; - _err = GetThemeTextColor(inColor, - inDepth, - inColorDev, - &outColor); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - QdRGB_New, &outColor); - return _res; -} - -static PyObject *App_GetThemeMetric(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ThemeMetric inMetric; - SInt32 outMetric; -#ifndef GetThemeMetric - PyMac_PRECHECK(GetThemeMetric); -#endif - if (!PyArg_ParseTuple(_args, "l", - &inMetric)) - return NULL; - _err = GetThemeMetric(inMetric, - &outMetric); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outMetric); - return _res; -} - -static PyMethodDef App_methods[] = { - {"RegisterAppearanceClient", (PyCFunction)App_RegisterAppearanceClient, 1, - PyDoc_STR("() -> None")}, - {"UnregisterAppearanceClient", (PyCFunction)App_UnregisterAppearanceClient, 1, - PyDoc_STR("() -> None")}, - {"SetThemePen", (PyCFunction)App_SetThemePen, 1, - PyDoc_STR("(ThemeBrush inBrush, SInt16 inDepth, Boolean inIsColorDevice) -> None")}, - {"SetThemeBackground", (PyCFunction)App_SetThemeBackground, 1, - PyDoc_STR("(ThemeBrush inBrush, SInt16 inDepth, Boolean inIsColorDevice) -> None")}, - {"SetThemeTextColor", (PyCFunction)App_SetThemeTextColor, 1, - PyDoc_STR("(ThemeTextColor inColor, SInt16 inDepth, Boolean inIsColorDevice) -> None")}, - {"SetThemeWindowBackground", (PyCFunction)App_SetThemeWindowBackground, 1, - PyDoc_STR("(WindowPtr inWindow, ThemeBrush inBrush, Boolean inUpdate) -> None")}, - {"DrawThemeWindowHeader", (PyCFunction)App_DrawThemeWindowHeader, 1, - PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")}, - {"DrawThemeWindowListViewHeader", (PyCFunction)App_DrawThemeWindowListViewHeader, 1, - PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")}, - {"DrawThemePlacard", (PyCFunction)App_DrawThemePlacard, 1, - PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")}, - {"DrawThemeEditTextFrame", (PyCFunction)App_DrawThemeEditTextFrame, 1, - PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")}, - {"DrawThemeListBoxFrame", (PyCFunction)App_DrawThemeListBoxFrame, 1, - PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")}, - {"DrawThemeFocusRect", (PyCFunction)App_DrawThemeFocusRect, 1, - PyDoc_STR("(Rect inRect, Boolean inHasFocus) -> None")}, - {"DrawThemePrimaryGroup", (PyCFunction)App_DrawThemePrimaryGroup, 1, - PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")}, - {"DrawThemeSecondaryGroup", (PyCFunction)App_DrawThemeSecondaryGroup, 1, - PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")}, - {"DrawThemeSeparator", (PyCFunction)App_DrawThemeSeparator, 1, - PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")}, - {"DrawThemeModelessDialogFrame", (PyCFunction)App_DrawThemeModelessDialogFrame, 1, - PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")}, - {"DrawThemeGenericWell", (PyCFunction)App_DrawThemeGenericWell, 1, - PyDoc_STR("(Rect inRect, ThemeDrawState inState, Boolean inFillCenter) -> None")}, - {"DrawThemeFocusRegion", (PyCFunction)App_DrawThemeFocusRegion, 1, - PyDoc_STR("(Boolean inHasFocus) -> None")}, - {"IsThemeInColor", (PyCFunction)App_IsThemeInColor, 1, - PyDoc_STR("(SInt16 inDepth, Boolean inIsColorDevice) -> (Boolean _rv)")}, - {"GetThemeAccentColors", (PyCFunction)App_GetThemeAccentColors, 1, - PyDoc_STR("() -> (CTabHandle outColors)")}, - {"DrawThemeMenuBarBackground", (PyCFunction)App_DrawThemeMenuBarBackground, 1, - PyDoc_STR("(Rect inBounds, ThemeMenuBarState inState, UInt32 inAttributes) -> None")}, - {"GetThemeMenuBarHeight", (PyCFunction)App_GetThemeMenuBarHeight, 1, - PyDoc_STR("() -> (SInt16 outHeight)")}, - {"DrawThemeMenuBackground", (PyCFunction)App_DrawThemeMenuBackground, 1, - PyDoc_STR("(Rect inMenuRect, ThemeMenuType inMenuType) -> None")}, - {"GetThemeMenuBackgroundRegion", (PyCFunction)App_GetThemeMenuBackgroundRegion, 1, - PyDoc_STR("(Rect inMenuRect, ThemeMenuType menuType) -> None")}, - {"DrawThemeMenuSeparator", (PyCFunction)App_DrawThemeMenuSeparator, 1, - PyDoc_STR("(Rect inItemRect) -> None")}, - {"GetThemeMenuSeparatorHeight", (PyCFunction)App_GetThemeMenuSeparatorHeight, 1, - PyDoc_STR("() -> (SInt16 outHeight)")}, - {"GetThemeMenuItemExtra", (PyCFunction)App_GetThemeMenuItemExtra, 1, - PyDoc_STR("(ThemeMenuItemType inItemType) -> (SInt16 outHeight, SInt16 outWidth)")}, - {"GetThemeMenuTitleExtra", (PyCFunction)App_GetThemeMenuTitleExtra, 1, - PyDoc_STR("(Boolean inIsSquished) -> (SInt16 outWidth)")}, - {"DrawThemeTabPane", (PyCFunction)App_DrawThemeTabPane, 1, - PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")}, - {"GetThemeTabRegion", (PyCFunction)App_GetThemeTabRegion, 1, - PyDoc_STR("(Rect inRect, ThemeTabStyle inStyle, ThemeTabDirection inDirection) -> None")}, - {"SetThemeCursor", (PyCFunction)App_SetThemeCursor, 1, - PyDoc_STR("(ThemeCursor inCursor) -> None")}, - {"SetAnimatedThemeCursor", (PyCFunction)App_SetAnimatedThemeCursor, 1, - PyDoc_STR("(ThemeCursor inCursor, UInt32 inAnimationStep) -> None")}, - {"GetThemeScrollBarThumbStyle", (PyCFunction)App_GetThemeScrollBarThumbStyle, 1, - PyDoc_STR("() -> (ThemeScrollBarThumbStyle outStyle)")}, - {"GetThemeScrollBarArrowStyle", (PyCFunction)App_GetThemeScrollBarArrowStyle, 1, - PyDoc_STR("() -> (ThemeScrollBarArrowStyle outStyle)")}, - {"GetThemeCheckBoxStyle", (PyCFunction)App_GetThemeCheckBoxStyle, 1, - PyDoc_STR("() -> (ThemeCheckBoxStyle outStyle)")}, - {"UseThemeFont", (PyCFunction)App_UseThemeFont, 1, - PyDoc_STR("(ThemeFontID inFontID, ScriptCode inScript) -> None")}, - {"DrawThemeTextBox", (PyCFunction)App_DrawThemeTextBox, 1, - PyDoc_STR("(CFStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, Boolean inWrapToWidth, Rect inBoundingBox, SInt16 inJust) -> None")}, - {"TruncateThemeText", (PyCFunction)App_TruncateThemeText, 1, - PyDoc_STR("(CFMutableStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, SInt16 inPixelWidthLimit, TruncCode inTruncWhere) -> (Boolean outTruncated)")}, - {"GetThemeTextDimensions", (PyCFunction)App_GetThemeTextDimensions, 1, - PyDoc_STR("(CFStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, Boolean inWrapToWidth, Point ioBounds) -> (Point ioBounds, SInt16 outBaseline)")}, - {"GetThemeTextShadowOutset", (PyCFunction)App_GetThemeTextShadowOutset, 1, - PyDoc_STR("(ThemeFontID inFontID, ThemeDrawState inState) -> (Rect outOutset)")}, - {"DrawThemeScrollBarArrows", (PyCFunction)App_DrawThemeScrollBarArrows, 1, - PyDoc_STR("(Rect bounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz) -> (Rect trackBounds)")}, - {"GetThemeScrollBarTrackRect", (PyCFunction)App_GetThemeScrollBarTrackRect, 1, - PyDoc_STR("(Rect bounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz) -> (Rect trackBounds)")}, - {"HitTestThemeScrollBarArrows", (PyCFunction)App_HitTestThemeScrollBarArrows, 1, - PyDoc_STR("(Rect scrollBarBounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz, Point ptHit) -> (Boolean _rv, Rect trackBounds, ControlPartCode partcode)")}, - {"DrawThemeScrollBarDelimiters", (PyCFunction)App_DrawThemeScrollBarDelimiters, 1, - PyDoc_STR("(ThemeWindowType flavor, Rect inContRect, ThemeDrawState state, ThemeWindowAttributes attributes) -> None")}, - {"DrawThemeButton", (PyCFunction)App_DrawThemeButton, 1, - PyDoc_STR("(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inNewInfo, ThemeButtonDrawInfo inPrevInfo, UInt32 inUserData) -> None")}, - {"GetThemeButtonRegion", (PyCFunction)App_GetThemeButtonRegion, 1, - PyDoc_STR("(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inNewInfo) -> None")}, - {"GetThemeButtonContentBounds", (PyCFunction)App_GetThemeButtonContentBounds, 1, - PyDoc_STR("(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inDrawInfo) -> (Rect outBounds)")}, - {"GetThemeButtonBackgroundBounds", (PyCFunction)App_GetThemeButtonBackgroundBounds, 1, - PyDoc_STR("(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inDrawInfo) -> (Rect outBounds)")}, - {"PlayThemeSound", (PyCFunction)App_PlayThemeSound, 1, - PyDoc_STR("(ThemeSoundKind kind) -> None")}, - {"BeginThemeDragSound", (PyCFunction)App_BeginThemeDragSound, 1, - PyDoc_STR("(ThemeDragSoundKind kind) -> None")}, - {"EndThemeDragSound", (PyCFunction)App_EndThemeDragSound, 1, - PyDoc_STR("() -> None")}, - {"DrawThemeTickMark", (PyCFunction)App_DrawThemeTickMark, 1, - PyDoc_STR("(Rect bounds, ThemeDrawState state) -> None")}, - {"DrawThemeChasingArrows", (PyCFunction)App_DrawThemeChasingArrows, 1, - PyDoc_STR("(Rect bounds, UInt32 index, ThemeDrawState state, UInt32 eraseData) -> None")}, - {"DrawThemePopupArrow", (PyCFunction)App_DrawThemePopupArrow, 1, - PyDoc_STR("(Rect bounds, ThemeArrowOrientation orientation, ThemePopupArrowSize size, ThemeDrawState state, UInt32 eraseData) -> None")}, - {"DrawThemeStandaloneGrowBox", (PyCFunction)App_DrawThemeStandaloneGrowBox, 1, - PyDoc_STR("(Point origin, ThemeGrowDirection growDirection, Boolean isSmall, ThemeDrawState state) -> None")}, - {"DrawThemeStandaloneNoGrowBox", (PyCFunction)App_DrawThemeStandaloneNoGrowBox, 1, - PyDoc_STR("(Point origin, ThemeGrowDirection growDirection, Boolean isSmall, ThemeDrawState state) -> None")}, - {"GetThemeStandaloneGrowBoxBounds", (PyCFunction)App_GetThemeStandaloneGrowBoxBounds, 1, - PyDoc_STR("(Point origin, ThemeGrowDirection growDirection, Boolean isSmall) -> (Rect bounds)")}, - {"NormalizeThemeDrawingState", (PyCFunction)App_NormalizeThemeDrawingState, 1, - PyDoc_STR("() -> None")}, - {"GetThemeDrawingState", (PyCFunction)App_GetThemeDrawingState, 1, - PyDoc_STR("() -> (ThemeDrawingState outState)")}, - {"ApplyThemeBackground", (PyCFunction)App_ApplyThemeBackground, 1, - PyDoc_STR("(ThemeBackgroundKind inKind, Rect bounds, ThemeDrawState inState, SInt16 inDepth, Boolean inColorDev) -> None")}, - {"SetThemeTextColorForWindow", (PyCFunction)App_SetThemeTextColorForWindow, 1, - PyDoc_STR("(WindowPtr window, Boolean isActive, SInt16 depth, Boolean isColorDev) -> None")}, - {"IsValidAppearanceFileType", (PyCFunction)App_IsValidAppearanceFileType, 1, - PyDoc_STR("(OSType fileType) -> (Boolean _rv)")}, - {"GetThemeBrushAsColor", (PyCFunction)App_GetThemeBrushAsColor, 1, - PyDoc_STR("(ThemeBrush inBrush, SInt16 inDepth, Boolean inColorDev) -> (RGBColor outColor)")}, - {"GetThemeTextColor", (PyCFunction)App_GetThemeTextColor, 1, - PyDoc_STR("(ThemeTextColor inColor, SInt16 inDepth, Boolean inColorDev) -> (RGBColor outColor)")}, - {"GetThemeMetric", (PyCFunction)App_GetThemeMetric, 1, - PyDoc_STR("(ThemeMetric inMetric) -> (SInt32 outMetric)")}, - {NULL, NULL, 0} -}; - - -#else /* __LP64__ */ - -static PyMethodDef App_methods[] = { - {NULL, NULL, 0} -}; - -#endif /* __LP64__ */ - - -void init_App(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; -#endif /* !__LP64__ */ - - - m = Py_InitModule("_App", App_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - App_Error = PyMac_GetOSErrException(); - if (App_Error == NULL || - PyDict_SetItemString(d, "Error", App_Error) != 0) - return; - ThemeDrawingState_Type.ob_type = &PyType_Type; - if (PyType_Ready(&ThemeDrawingState_Type) < 0) return; - Py_INCREF(&ThemeDrawingState_Type); - PyModule_AddObject(m, "ThemeDrawingState", (PyObject *)&ThemeDrawingState_Type); - /* Backward-compatible name */ - Py_INCREF(&ThemeDrawingState_Type); - PyModule_AddObject(m, "ThemeDrawingStateType", (PyObject *)&ThemeDrawingState_Type); -#endif /* __LP64__ */ -} - -/* ======================== End module _App ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/app/appscan.py b/project/jni/python/src/Mac/Modules/app/appscan.py deleted file mode 100644 index 94eee474c..000000000 --- a/project/jni/python/src/Mac/Modules/app/appscan.py +++ /dev/null @@ -1,80 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner - -LONG = "Appearance" -SHORT = "app" -OBJECT = "ThemeDrawingState" - -def main(): - input = LONG + ".h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - # This is non-functional today - if t == OBJECT and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - - def makeblacklistnames(self): - return [ - "GetThemeFont", # Funny stringbuffer in/out parameter, I think... - # Constants with funny definitions - "appearanceBadBrushIndexErr", - "appearanceProcessRegisteredErr", - "appearanceProcessNotRegisteredErr", - "appearanceBadTextColorIndexErr", - "appearanceThemeHasNoAccents", - "appearanceBadCursorIndexErr", - ] - - def makeblacklisttypes(self): - return [ - "MenuTitleDrawingUPP", - "MenuItemDrawingUPP", - "ThemeIteratorUPP", - "ThemeTabTitleDrawUPP", -# "ThemeEraseUPP", -# "ThemeButtonDrawUPP", - "WindowTitleDrawingUPP", - "ProcessSerialNumber_ptr", # Too much work for now. - "ThemeTrackDrawInfo_ptr", # Too much work -# "ThemeButtonDrawInfo_ptr", # ditto - "ThemeWindowMetrics_ptr", # ditto -# "ThemeDrawingState", # This is an opaque pointer, so it should be simple. Later. - "Collection", # No interface to collection mgr yet. - "BytePtr", # Not yet. - ] - - def makerepairinstructions(self): - return [ - ([("void", 'inContext', "OutMode")], - [("NULL", 'inContext', "InMode")]), - ([("Point", 'ioBounds', "OutMode")], - [("Point", 'ioBounds', "InOutMode")]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/app/appsupport.py b/project/jni/python/src/Mac/Modules/app/appsupport.py deleted file mode 100644 index 177dfd55f..000000000 --- a/project/jni/python/src/Mac/Modules/app/appsupport.py +++ /dev/null @@ -1,133 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'Appearance.h' # The Apple header file -MODNAME = '_App' # The name of the module -OBJECTNAME = 'ThemeDrawingState' # The basic name of the objects used here -KIND = '' # Usually 'Ptr' or 'Handle' - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'App' # The prefix for module-wide routines -OBJECTTYPE = OBJECTNAME + KIND # The C type used to represent them -OBJECTPREFIX = OBJECTNAME + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects -#MenuRef = OpaqueByValueType("MenuRef", "MenuObj") - - -#WindowPeek = OpaqueByValueType("WindowPeek", OBJECTPREFIX) - -RgnHandle = FakeType("(RgnHandle)0") -NULL = FakeType("NULL") - -# XXXX Should be next, but this will break a lot of code... -# RgnHandle = OpaqueByValueType("RgnHandle", "OptResObj") - -#KeyMap = ArrayOutputBufferType("KeyMap") -#MacOSEventKind = Type("MacOSEventKind", "h") # Old-style -#MacOSEventMask = Type("MacOSEventMask", "h") # Old-style -#EventMask = Type("EventMask", "h") -#EventKind = Type("EventKind", "h") -ThemeBrush = Type("ThemeBrush", "h") -ThemeColor = Type("ThemeColor", "h") -ThemeTextColor = Type("ThemeTextColor", "h") -ThemeMenuBarState = Type("ThemeMenuBarState", "H") -ThemeMenuState = Type("ThemeMenuState", "H") -ThemeMenuType = Type("ThemeMenuType", "H") -ThemeMenuItemType = Type("ThemeMenuItemType", "H") -ThemeFontID = Type("ThemeFontID", "H") -ThemeTabStyle = Type("ThemeTabStyle", "H") -ThemeTabDirection = Type("ThemeTabDirection", "H") -ThemeDrawState = Type("ThemeDrawState", "l") -ThemeCursor = Type("ThemeCursor", "l") -ThemeCheckBoxStyle = Type("ThemeCheckBoxStyle", "H") -ThemeScrollBarArrowStyle = Type("ThemeScrollBarArrowStyle", "H") -ThemeScrollBarThumbStyle = Type("ThemeScrollBarThumbStyle", "H") -CTabHandle = OpaqueByValueType("CTabHandle", "ResObj") -ThemeTrackEnableState = Type("ThemeTrackEnableState", "b") -ThemeTrackPressState = Type("ThemeTrackPressState", "b") -ThemeThumbDirection = Type("ThemeThumbDirection", "b") -ThemeTrackAttributes = Type("ThemeTrackAttributes", "H") -ControlPartCode = Type("ControlPartCode", "h") -ThemeWindowAttributes = Type("ThemeWindowAttributes", "l") -ThemeWindowType = Type("ThemeWindowType", "H") -ThemeTitleBarWidget = Type("ThemeTitleBarWidget", "H") -ThemeArrowOrientation = Type("ThemeArrowOrientation", "H") -ThemePopupArrowSize = Type("ThemePopupArrowSize", "H") -ThemeGrowDirection = Type("ThemeGrowDirection", "H") -ThemeSoundKind = OSTypeType("ThemeSoundKind") -ThemeDragSoundKind = OSTypeType("ThemeDragSoundKind") -ThemeBackgroundKind = Type("ThemeBackgroundKind", "l") -ThemeMetric = Type("ThemeMetric", "l") -RGBColor = OpaqueType("RGBColor", "QdRGB") -TruncCode = Type("TruncCode", "h") - - -ThemeButtonKind = UInt16 -ThemeButtonDrawInfo_ptr = OpaqueType("ThemeButtonDrawInfo", "ThemeButtonDrawInfo") -ThemeEraseUPP = FakeType("NULL") -ThemeButtonDrawUPP = FakeType("NULL") - - -includestuff = includestuff + """ -#include - - -int ThemeButtonDrawInfo_Convert(PyObject *v, ThemeButtonDrawInfo *p_itself) -{ - return PyArg_Parse(v, "(iHH)", &p_itself->state, &p_itself->value, &p_itself->adornment); -} - -""" - -class MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - pass -## def outputCheckNewArg(self): -## Output("if (itself == NULL) return PyMac_Error(resNotFound);") -## def outputCheckConvertArg(self): -## OutLbrace("if (DlgObj_Check(v))") -## Output("*p_itself = ((WindowObject *)v)->ob_itself;") -## Output("return 1;") -## OutRbrace() -## Out(""" -## if (v == Py_None) { *p_itself = NULL; return 1; } -## if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; } -## """) - -# From here on it's basically all boiler plate... - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE) -module.addobject(object) - -ThemeDrawingState = OpaqueByValueType("ThemeDrawingState", "ThemeDrawingStateObj") -Method = WeakLinkMethodGenerator - - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -##Method = OSErrWeakLinkMethodGenerator - -# Create and populate the lists -functions = [] -methods = [] -execfile(INPUTFILE) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -for f in methods: object.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/autoGIL.c b/project/jni/python/src/Mac/Modules/autoGIL.c deleted file mode 100644 index af2e6998b..000000000 --- a/project/jni/python/src/Mac/Modules/autoGIL.c +++ /dev/null @@ -1,152 +0,0 @@ -#include "Python.h" -#include - -/* These macros are defined in Python 2.3 but not 2.2 */ -#ifndef PyMODINIT_FUNC -#define PyMODINIT_FUNC void -#endif -#ifndef PyDoc_STRVAR -#define PyDoc_STRVAR(Var,Str) static char Var[] = Str -#endif - - -#undef AUTOGIL_DEBUG - -static PyObject *AutoGILError; - - -static void autoGILCallback(CFRunLoopObserverRef observer, - CFRunLoopActivity activity, - void *info) { - PyThreadState **p_tstate = (PyThreadState **)info; - - switch (activity) { - case kCFRunLoopBeforeWaiting: - /* going to sleep, release GIL */ -#ifdef AUTOGIL_DEBUG - fprintf(stderr, "going to sleep, release GIL\n"); -#endif - *p_tstate = PyEval_SaveThread(); - break; - case kCFRunLoopAfterWaiting: - /* waking up, acquire GIL */ -#ifdef AUTOGIL_DEBUG - fprintf(stderr, "waking up, acquire GIL\n"); -#endif - PyEval_RestoreThread(*p_tstate); - *p_tstate = NULL; - break; - default: - break; - } -} - -static void infoRelease(const void *info) { - /* XXX This should get called when the run loop is deallocated, - but this doesn't seem to happen. So for now: leak. */ - PyMem_Free((void *)info); -} - -static PyObject * -autoGIL_installAutoGIL(PyObject *self) -{ - PyObject *tstate_dict = PyThreadState_GetDict(); - PyObject *v; - CFRunLoopRef rl; - PyThreadState **p_tstate; /* for use in the info field */ - CFRunLoopObserverContext context = {0, NULL, NULL, NULL, NULL}; - CFRunLoopObserverRef observer; - - if (tstate_dict == NULL) - return NULL; - v = PyDict_GetItemString(tstate_dict, "autoGIL.InstalledAutoGIL"); - if (v != NULL) { - /* we've already installed a callback for this thread */ - Py_INCREF(Py_None); - return Py_None; - } - - rl = CFRunLoopGetCurrent(); - if (rl == NULL) { - PyErr_SetString(AutoGILError, - "can't get run loop for current thread"); - return NULL; - } - - p_tstate = PyMem_Malloc(sizeof(PyThreadState *)); - if (p_tstate == NULL) { - PyErr_SetString(PyExc_MemoryError, - "not enough memory to allocate " - "tstate pointer"); - return NULL; - } - *p_tstate = NULL; - context.info = (void *)p_tstate; - context.release = infoRelease; - - observer = CFRunLoopObserverCreate( - NULL, - kCFRunLoopBeforeWaiting | kCFRunLoopAfterWaiting, - 1, 0, autoGILCallback, &context); - if (observer == NULL) { - PyErr_SetString(AutoGILError, - "can't create event loop observer"); - return NULL; - } - CFRunLoopAddObserver(rl, observer, kCFRunLoopDefaultMode); - /* XXX how to check for errors? */ - - /* register that we have installed a callback for this thread */ - if (PyDict_SetItemString(tstate_dict, "autoGIL.InstalledAutoGIL", - Py_None) < 0) - return NULL; - - Py_INCREF(Py_None); - return Py_None; -} - -PyDoc_STRVAR(autoGIL_installAutoGIL_doc, -"installAutoGIL() -> None\n\ -Install an observer callback in the event loop (CFRunLoop) for the\n\ -current thread, that will lock and unlock the Global Interpreter Lock\n\ -(GIL) at appropriate times, allowing other Python threads to run while\n\ -the event loop is idle." -); - -static PyMethodDef autoGIL_methods[] = { - { - "installAutoGIL", - (PyCFunction)autoGIL_installAutoGIL, - METH_NOARGS, - autoGIL_installAutoGIL_doc - }, - { 0, 0, 0, 0 } /* sentinel */ -}; - -PyDoc_STRVAR(autoGIL_docs, -"The autoGIL module provides a function (installAutoGIL) that\n\ -automatically locks and unlocks Python's Global Interpreter Lock\n\ -when running an event loop." -); - -PyMODINIT_FUNC -initautoGIL(void) -{ - PyObject *mod; - - if (PyErr_WarnPy3k("In 3.x, the autoGIL module is removed.", 1) < 0) - return; - - mod = Py_InitModule4("autoGIL", autoGIL_methods, autoGIL_docs, - NULL, PYTHON_API_VERSION); - if (mod == NULL) - return; - AutoGILError = PyErr_NewException("autoGIL.AutoGILError", - PyExc_Exception, NULL); - if (AutoGILError == NULL) - return; - Py_INCREF(AutoGILError); - if (PyModule_AddObject(mod, "AutoGILError", - AutoGILError) < 0) - return; -} diff --git a/project/jni/python/src/Mac/Modules/carbonevt/CarbonEvtscan.py b/project/jni/python/src/Mac/Modules/carbonevt/CarbonEvtscan.py deleted file mode 100644 index 31e2336b1..000000000 --- a/project/jni/python/src/Mac/Modules/carbonevt/CarbonEvtscan.py +++ /dev/null @@ -1,115 +0,0 @@ -# IBCarbonscan.py - -import sys -import MacOS -import sys - -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) - -from scantools import Scanner, Scanner_OSX - -def main(): - print "---Scanning CarbonEvents.h---" - input = ["CarbonEvents.h"] - output = "CarbonEventsgen.py" - defsoutput = TOOLBOXDIR + "CarbonEvents.py" - scanner = CarbonEvents_Scanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "--done scanning, importing--" - import CarbonEvtsupport - print "done" - -RefObjectTypes = ["EventRef", - "EventQueueRef", - "EventLoopRef", - "EventLoopTimerRef", - "EventHandlerRef", - "EventHandlerCallRef", - "EventTargetRef", - "EventHotKeyRef", - ] - -class CarbonEvents_Scanner(Scanner_OSX): - def destination(self, type, name, arglist): - classname = "CarbonEventsFunction" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t in RefObjectTypes and m == "InMode": - if t == "EventHandlerRef": - classname = "EventHandlerRefMethod" - else: - classname = "CarbonEventsMethod" - listname = t + "methods" - #else: - # print "not method" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - self.defsfile.write("false = 0\n") - self.defsfile.write("true = 1\n") - self.defsfile.write("keyAEEventClass = FOUR_CHAR_CODE('evcl')\n") - self.defsfile.write("keyAEEventID = FOUR_CHAR_CODE('evti')\n") - - def makeblacklistnames(self): - return [ - "sHandler", - "MacCreateEvent", -# "TrackMouseLocationWithOptions", -# "TrackMouseLocation", -# "TrackMouseRegion", - "RegisterToolboxObjectClass", - "UnregisterToolboxObjectClass", - "ProcessHICommand", - "GetCFRunLoopFromEventLoop", - - "InvokeEventHandlerUPP", - "InvokeEventComparatorUPP", - "InvokeEventLoopTimerUPP", - "NewEventComparatorUPP", - "NewEventLoopTimerUPP", - "NewEventHandlerUPP", - "DisposeEventComparatorUPP", - "DisposeEventLoopTimerUPP", - "DisposeEventHandlerUPP", - - # Wrote by hand - "InstallEventHandler", - "RemoveEventHandler", - - # Write by hand? - "GetEventParameter", - "FlushSpecificEventsFromQueue", - "FindSpecificEventInQueue", - "InstallEventLoopTimer", - - # Don't do these because they require a CFRelease - "CreateTypeStringWithOSType", - "CopyEvent", - ] - -# def makeblacklisttypes(self): -# return ["EventComparatorUPP", -# "EventLoopTimerUPP", -# #"EventHandlerUPP", -# "EventComparatorProcPtr", -# "EventLoopTimerProcPtr", -# "EventHandlerProcPtr", -# ] - - def makerepairinstructions(self): - return [ - ([("UInt32", 'inSize', "InMode"), ("void_ptr", 'inDataPtr', "InMode")], - [("MyInBuffer", 'inDataPtr', "InMode")]), - ([("Boolean", 'ioWasInRgn', "OutMode")], - [("Boolean", 'ioWasInRgn', "InOutMode")]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/carbonevt/CarbonEvtsupport.py b/project/jni/python/src/Mac/Modules/carbonevt/CarbonEvtsupport.py deleted file mode 100644 index 77d12b629..000000000 --- a/project/jni/python/src/Mac/Modules/carbonevt/CarbonEvtsupport.py +++ /dev/null @@ -1,314 +0,0 @@ -# IBCarbonsupport.py - -from macsupport import * - -from CarbonEvtscan import RefObjectTypes - -# where should this go? macsupport.py? -CFStringRef = OpaqueByValueType('CFStringRef') - -for typ in RefObjectTypes: - execstr = "%(name)s = OpaqueByValueType('%(name)s')" % {"name": typ} - exec execstr - - -if 0: - # these types will have no methods and will merely be opaque blobs - # should write getattr and setattr for them? - - StructObjectTypes = ["EventTypeSpec", - "HIPoint", - "HICommand", - "EventHotKeyID", - ] - - for typ in StructObjectTypes: - execstr = "%(name)s = OpaqueType('%(name)s')" % {"name": typ} - exec execstr - -EventHotKeyID = OpaqueByValueType("EventHotKeyID", "EventHotKeyID") -EventTypeSpec_ptr = OpaqueType("EventTypeSpec", "EventTypeSpec") - -# is this the right type for the void * in GetEventParameter -#void_ptr = FixedInputBufferType(1024) -void_ptr = stringptr -# here are some types that are really other types - -class MyVarInputBufferType(VarInputBufferType): - def passInput(self, name): - return "%s__len__, %s__in__" % (name, name) - -MyInBuffer = MyVarInputBufferType('char', 'long', 'l') # (buf, len) - -EventTime = double -EventTimeout = EventTime -EventTimerInterval = EventTime -EventAttributes = UInt32 -EventParamName = OSType -EventParamType = OSType -EventPriority = SInt16 -EventMask = UInt16 - -EventComparatorUPP = FakeType("(EventComparatorUPP)0") -EventLoopTimerUPP = FakeType("(EventLoopTimerUPP)0") -EventHandlerUPP = FakeType("(EventHandlerUPP)0") -EventHandlerUPP = FakeType("(EventHandlerUPP)0") -EventComparatorProcPtr = FakeType("(EventComparatorProcPtr)0") -EventLoopTimerProcPtr = FakeType("(EventLoopTimerProcPtr)0") -EventHandlerProcPtr = FakeType("(EventHandlerProcPtr)0") - -CarbonEventsFunction = OSErrFunctionGenerator -CarbonEventsMethod = OSErrMethodGenerator - -class EventHandlerRefMethod(OSErrMethodGenerator): - def precheck(self): - OutLbrace('if (_self->ob_itself == NULL)') - Output('PyErr_SetString(CarbonEvents_Error, "Handler has been removed");') - Output('return NULL;') - OutRbrace() - - -RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") -GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj") -MouseTrackingResult = UInt16 - - -includestuff = includestuff + r""" -#include - -extern int CFStringRef_New(CFStringRef *); - -extern int CFStringRef_Convert(PyObject *, CFStringRef *); -extern int CFBundleRef_Convert(PyObject *, CFBundleRef *); - -int EventTargetRef_Convert(PyObject *, EventTargetRef *); -PyObject *EventHandlerCallRef_New(EventHandlerCallRef itself); -PyObject *EventRef_New(EventRef itself); - -/********** EventTypeSpec *******/ -static PyObject* -EventTypeSpec_New(EventTypeSpec *in) -{ - return Py_BuildValue("ll", in->eventClass, in->eventKind); -} - -static int -EventTypeSpec_Convert(PyObject *v, EventTypeSpec *out) -{ - if (PyArg_Parse(v, "(O&l)", - PyMac_GetOSType, &(out->eventClass), - &(out->eventKind))) - return 1; - return NULL; -} - -/********** end EventTypeSpec *******/ - -/********** HIPoint *******/ - -#if 0 /* XXX doesn't compile */ -static PyObject* -HIPoint_New(HIPoint *in) -{ - return Py_BuildValue("ff", in->x, in->y); -} - -static int -HIPoint_Convert(PyObject *v, HIPoint *out) -{ - if (PyArg_ParseTuple(v, "ff", &(out->x), &(out->y))) - return 1; - return NULL; -} -#endif - -/********** end HIPoint *******/ - -/********** EventHotKeyID *******/ - -static PyObject* -EventHotKeyID_New(EventHotKeyID *in) -{ - return Py_BuildValue("ll", in->signature, in->id); -} - -static int -EventHotKeyID_Convert(PyObject *v, EventHotKeyID *out) -{ - if (PyArg_ParseTuple(v, "ll", &out->signature, &out->id)) - return 1; - return NULL; -} - -/********** end EventHotKeyID *******/ - -/******** myEventHandler ***********/ - -static EventHandlerUPP myEventHandlerUPP; - -static pascal OSStatus -myEventHandler(EventHandlerCallRef handlerRef, EventRef event, void *outPyObject) { - PyObject *retValue; - int status; - - retValue = PyObject_CallFunction((PyObject *)outPyObject, "O&O&", - EventHandlerCallRef_New, handlerRef, - EventRef_New, event); - if (retValue == NULL) { - PySys_WriteStderr("Error in event handler callback:\n"); - PyErr_Print(); /* this also clears the error */ - status = noErr; /* complain? how? */ - } else { - if (retValue == Py_None) - status = noErr; - else if (PyInt_Check(retValue)) { - status = PyInt_AsLong(retValue); - } else - status = noErr; /* wrong object type, complain? */ - Py_DECREF(retValue); - } - - return status; -} - -/******** end myEventHandler ***********/ - -""" - -initstuff = initstuff + """ -myEventHandlerUPP = NewEventHandlerUPP(myEventHandler); -""" -module = MacModule('_CarbonEvt', 'CarbonEvents', includestuff, finalstuff, initstuff) - - - - -class EventHandlerRefObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - def outputStructMembers(self): - Output("%s ob_itself;", self.itselftype) - Output("PyObject *ob_callback;") - def outputInitStructMembers(self): - Output("it->ob_itself = %sitself;", self.argref) - Output("it->ob_callback = NULL;") - def outputFreeIt(self, name): - OutLbrace("if (self->ob_itself != NULL)") - Output("RemoveEventHandler(self->ob_itself);") - Output("Py_DECREF(self->ob_callback);") - OutRbrace() - -class MyGlobalObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - pass - -for typ in RefObjectTypes: - if typ == 'EventHandlerRef': - EventHandlerRefobject = EventHandlerRefObjectDefinition('EventHandlerRef') - else: - execstr = typ + 'object = MyGlobalObjectDefinition(typ)' - exec execstr - module.addobject(eval(typ + 'object')) - - -functions = [] -for typ in RefObjectTypes: ## go thru all ObjectTypes as defined in CarbonEventsscan.py - # initialize the lists for carbongen to fill - execstr = typ + 'methods = []' - exec execstr - -execfile('CarbonEventsgen.py') - - - -for f in functions: module.add(f) # add all the functions carboneventsgen put in the list - -for typ in RefObjectTypes: ## go thru all ObjectTypes as defined in CarbonEventsscan.py - methods = eval(typ + 'methods') ## get a reference to the method list from the main namespace - obj = eval(typ + 'object') ## get a reference to the object - for m in methods: obj.add(m) ## add each method in the list to the object - - -removeeventhandler = """ -OSStatus _err; -if (_self->ob_itself == NULL) { - PyErr_SetString(CarbonEvents_Error, "Handler has been removed"); - return NULL; -} -if (!PyArg_ParseTuple(_args, "")) - return NULL; -_err = RemoveEventHandler(_self->ob_itself); -if (_err != noErr) return PyMac_Error(_err); -_self->ob_itself = NULL; -Py_DECREF(_self->ob_callback); -_self->ob_callback = NULL; -Py_INCREF(Py_None); -_res = Py_None; -return _res;""" - -f = ManualGenerator("RemoveEventHandler", removeeventhandler); -f.docstring = lambda: "() -> None" -EventHandlerRefobject.add(f) - - -installeventhandler = """ -EventTypeSpec inSpec; -PyObject *callback; -EventHandlerRef outRef; -OSStatus _err; - -if (!PyArg_ParseTuple(_args, "O&O", EventTypeSpec_Convert, &inSpec, &callback)) - return NULL; - -_err = InstallEventHandler(_self->ob_itself, myEventHandlerUPP, 1, &inSpec, (void *)callback, &outRef); -if (_err != noErr) return PyMac_Error(_err); - -_res = EventHandlerRef_New(outRef); -if (_res != NULL) { - ((EventHandlerRefObject*)_res)->ob_callback = callback; - Py_INCREF(callback); -} -return _res;""" - -f = ManualGenerator("InstallEventHandler", installeventhandler); -f.docstring = lambda: "(EventTypeSpec inSpec, Method callback) -> (EventHandlerRef outRef)" -EventTargetRefobject.add(f) - -# This may not be the best, but at least it lets you get the raw data back into python as a string. You'll have to cut it up yourself and parse the result. - -geteventparameter = """ -UInt32 bufferSize; -EventParamName inName; -EventParamType inType; -OSErr _err; -void * buffer; - -if (!PyArg_ParseTuple(_args, "O&O&", PyMac_GetOSType, &inName, PyMac_GetOSType, &inType)) - return NULL; - -/* Figure out the size by passing a null buffer to GetEventParameter */ -_err = GetEventParameter(_self->ob_itself, inName, inType, NULL, 0, &bufferSize, NULL); - -if (_err != noErr) - return PyMac_Error(_err); -buffer = PyMem_NEW(char, bufferSize); -if (buffer == NULL) - return PyErr_NoMemory(); - -_err = GetEventParameter(_self->ob_itself, inName, inType, NULL, bufferSize, NULL, buffer); - -if (_err != noErr) { - PyMem_DEL(buffer); - return PyMac_Error(_err); -} -_res = Py_BuildValue("s#", buffer, bufferSize); -PyMem_DEL(buffer); -return _res; -""" - -f = ManualGenerator("GetEventParameter", geteventparameter); -f.docstring = lambda: "(EventParamName eventName, EventParamType eventType) -> (String eventParamData)" -EventRefobject.add(f) - -SetOutputFileName('_CarbonEvtmodule.c') -module.generate() - -##import os -##os.system("python setup.py build") diff --git a/project/jni/python/src/Mac/Modules/carbonevt/_CarbonEvtmodule.c b/project/jni/python/src/Mac/Modules/carbonevt/_CarbonEvtmodule.c deleted file mode 100644 index 66e4e27fb..000000000 --- a/project/jni/python/src/Mac/Modules/carbonevt/_CarbonEvtmodule.c +++ /dev/null @@ -1,2231 +0,0 @@ - -/* ======================= Module _CarbonEvt ======================== */ - -#include "Python.h" - -#ifndef __LP64__ - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -extern int CFStringRef_New(CFStringRef *); - -extern int CFStringRef_Convert(PyObject *, CFStringRef *); -extern int CFBundleRef_Convert(PyObject *, CFBundleRef *); - -int EventTargetRef_Convert(PyObject *, EventTargetRef *); -PyObject *EventHandlerCallRef_New(EventHandlerCallRef itself); -PyObject *EventRef_New(EventRef itself); - -/********** EventTypeSpec *******/ -static PyObject* -EventTypeSpec_New(EventTypeSpec *in) -{ - return Py_BuildValue("ll", in->eventClass, in->eventKind); -} - -static int -EventTypeSpec_Convert(PyObject *v, EventTypeSpec *out) -{ - if (PyArg_Parse(v, "(O&l)", - PyMac_GetOSType, &(out->eventClass), - &(out->eventKind))) - return 1; - return 0; -} - -/********** end EventTypeSpec *******/ - -/********** HIPoint *******/ - -#if 0 /* XXX doesn't compile */ -static PyObject* -HIPoint_New(HIPoint *in) -{ - return Py_BuildValue("ff", in->x, in->y); -} - -static int -HIPoint_Convert(PyObject *v, HIPoint *out) -{ - if (PyArg_ParseTuple(v, "ff", &(out->x), &(out->y))) - return 1; - return NULL; -} -#endif - -/********** end HIPoint *******/ - -/********** EventHotKeyID *******/ - -static PyObject* -EventHotKeyID_New(EventHotKeyID *in) -{ - return Py_BuildValue("ll", in->signature, in->id); -} - -static int -EventHotKeyID_Convert(PyObject *v, EventHotKeyID *out) -{ - if (PyArg_ParseTuple(v, "ll", &out->signature, &out->id)) - return 1; - return 0; -} - -/********** end EventHotKeyID *******/ - -/******** myEventHandler ***********/ - -static EventHandlerUPP myEventHandlerUPP; - -static pascal OSStatus -myEventHandler(EventHandlerCallRef handlerRef, EventRef event, void *outPyObject) { - PyObject *retValue; - int status; - - retValue = PyObject_CallFunction((PyObject *)outPyObject, "O&O&", - EventHandlerCallRef_New, handlerRef, - EventRef_New, event); - if (retValue == NULL) { - PySys_WriteStderr("Error in event handler callback:\n"); - PyErr_Print(); /* this also clears the error */ - status = noErr; /* complain? how? */ - } else { - if (retValue == Py_None) - status = noErr; - else if (PyInt_Check(retValue)) { - status = PyInt_AsLong(retValue); - } else - status = noErr; /* wrong object type, complain? */ - Py_DECREF(retValue); - } - - return status; -} - -/******** end myEventHandler ***********/ - - -static PyObject *CarbonEvents_Error; - -/* ---------------------- Object type EventRef ---------------------- */ - -PyTypeObject EventRef_Type; - -#define EventRef_Check(x) ((x)->ob_type == &EventRef_Type || PyObject_TypeCheck((x), &EventRef_Type)) - -typedef struct EventRefObject { - PyObject_HEAD - EventRef ob_itself; -} EventRefObject; - -PyObject *EventRef_New(EventRef itself) -{ - EventRefObject *it; - it = PyObject_NEW(EventRefObject, &EventRef_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int EventRef_Convert(PyObject *v, EventRef *p_itself) -{ - if (!EventRef_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "EventRef required"); - return 0; - } - *p_itself = ((EventRefObject *)v)->ob_itself; - return 1; -} - -static void EventRef_dealloc(EventRefObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *EventRef_RetainEvent(EventRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = RetainEvent(_self->ob_itself); - _res = Py_BuildValue("O&", - EventRef_New, _rv); - return _res; -} - -static PyObject *EventRef_GetEventRetainCount(EventRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt32 _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetEventRetainCount(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *EventRef_ReleaseEvent(EventRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ReleaseEvent(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *EventRef_SetEventParameter(EventRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType inName; - OSType inType; - char *inDataPtr__in__; - long inDataPtr__len__; - int inDataPtr__in_len__; - if (!PyArg_ParseTuple(_args, "O&O&s#", - PyMac_GetOSType, &inName, - PyMac_GetOSType, &inType, - &inDataPtr__in__, &inDataPtr__in_len__)) - return NULL; - inDataPtr__len__ = inDataPtr__in_len__; - _err = SetEventParameter(_self->ob_itself, - inName, - inType, - inDataPtr__len__, inDataPtr__in__); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *EventRef_GetEventClass(EventRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt32 _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetEventClass(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *EventRef_GetEventKind(EventRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt32 _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetEventKind(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *EventRef_GetEventTime(EventRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - double _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetEventTime(_self->ob_itself); - _res = Py_BuildValue("d", - _rv); - return _res; -} - -static PyObject *EventRef_SetEventTime(EventRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - double inTime; - if (!PyArg_ParseTuple(_args, "d", - &inTime)) - return NULL; - _err = SetEventTime(_self->ob_itself, - inTime); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *EventRef_IsUserCancelEventRef(EventRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsUserCancelEventRef(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *EventRef_ConvertEventRefToEventRecord(EventRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - EventRecord outEvent; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = ConvertEventRefToEventRecord(_self->ob_itself, - &outEvent); - _res = Py_BuildValue("bO&", - _rv, - PyMac_BuildEventRecord, &outEvent); - return _res; -} - -static PyObject *EventRef_IsEventInMask(EventRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - UInt16 inMask; - if (!PyArg_ParseTuple(_args, "H", - &inMask)) - return NULL; - _rv = IsEventInMask(_self->ob_itself, - inMask); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *EventRef_SendEventToEventTarget(EventRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - EventTargetRef inTarget; - if (!PyArg_ParseTuple(_args, "O&", - EventTargetRef_Convert, &inTarget)) - return NULL; - _err = SendEventToEventTarget(_self->ob_itself, - inTarget); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *EventRef_GetEventParameter(EventRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - UInt32 bufferSize; - EventParamName inName; - EventParamType inType; - OSErr _err; - void * buffer; - - if (!PyArg_ParseTuple(_args, "O&O&", PyMac_GetOSType, &inName, PyMac_GetOSType, &inType)) - return NULL; - - /* Figure out the size by passing a null buffer to GetEventParameter */ - _err = GetEventParameter(_self->ob_itself, inName, inType, NULL, 0, &bufferSize, NULL); - - if (_err != noErr) - return PyMac_Error(_err); - buffer = PyMem_NEW(char, bufferSize); - if (buffer == NULL) - return PyErr_NoMemory(); - - _err = GetEventParameter(_self->ob_itself, inName, inType, NULL, bufferSize, NULL, buffer); - - if (_err != noErr) { - PyMem_DEL(buffer); - return PyMac_Error(_err); - } - _res = Py_BuildValue("s#", buffer, bufferSize); - PyMem_DEL(buffer); - return _res; - -} - -static PyMethodDef EventRef_methods[] = { - {"RetainEvent", (PyCFunction)EventRef_RetainEvent, 1, - PyDoc_STR("() -> (EventRef _rv)")}, - {"GetEventRetainCount", (PyCFunction)EventRef_GetEventRetainCount, 1, - PyDoc_STR("() -> (UInt32 _rv)")}, - {"ReleaseEvent", (PyCFunction)EventRef_ReleaseEvent, 1, - PyDoc_STR("() -> None")}, - {"SetEventParameter", (PyCFunction)EventRef_SetEventParameter, 1, - PyDoc_STR("(OSType inName, OSType inType, Buffer inDataPtr) -> None")}, - {"GetEventClass", (PyCFunction)EventRef_GetEventClass, 1, - PyDoc_STR("() -> (UInt32 _rv)")}, - {"GetEventKind", (PyCFunction)EventRef_GetEventKind, 1, - PyDoc_STR("() -> (UInt32 _rv)")}, - {"GetEventTime", (PyCFunction)EventRef_GetEventTime, 1, - PyDoc_STR("() -> (double _rv)")}, - {"SetEventTime", (PyCFunction)EventRef_SetEventTime, 1, - PyDoc_STR("(double inTime) -> None")}, - {"IsUserCancelEventRef", (PyCFunction)EventRef_IsUserCancelEventRef, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"ConvertEventRefToEventRecord", (PyCFunction)EventRef_ConvertEventRefToEventRecord, 1, - PyDoc_STR("() -> (Boolean _rv, EventRecord outEvent)")}, - {"IsEventInMask", (PyCFunction)EventRef_IsEventInMask, 1, - PyDoc_STR("(UInt16 inMask) -> (Boolean _rv)")}, - {"SendEventToEventTarget", (PyCFunction)EventRef_SendEventToEventTarget, 1, - PyDoc_STR("(EventTargetRef inTarget) -> None")}, - {"GetEventParameter", (PyCFunction)EventRef_GetEventParameter, 1, - PyDoc_STR("(EventParamName eventName, EventParamType eventType) -> (String eventParamData)")}, - {NULL, NULL, 0} -}; - -#define EventRef_getsetlist NULL - - -#define EventRef_compare NULL - -#define EventRef_repr NULL - -#define EventRef_hash NULL -#define EventRef_tp_init 0 - -#define EventRef_tp_alloc PyType_GenericAlloc - -static PyObject *EventRef_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - EventRef itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, EventRef_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((EventRefObject *)_self)->ob_itself = itself; - return _self; -} - -#define EventRef_tp_free PyObject_Del - - -PyTypeObject EventRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CarbonEvt.EventRef", /*tp_name*/ - sizeof(EventRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) EventRef_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) EventRef_compare, /*tp_compare*/ - (reprfunc) EventRef_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) EventRef_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - EventRef_methods, /* tp_methods */ - 0, /*tp_members*/ - EventRef_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - EventRef_tp_init, /* tp_init */ - EventRef_tp_alloc, /* tp_alloc */ - EventRef_tp_new, /* tp_new */ - EventRef_tp_free, /* tp_free */ -}; - -/* -------------------- End object type EventRef -------------------- */ - - -/* ------------------- Object type EventQueueRef -------------------- */ - -PyTypeObject EventQueueRef_Type; - -#define EventQueueRef_Check(x) ((x)->ob_type == &EventQueueRef_Type || PyObject_TypeCheck((x), &EventQueueRef_Type)) - -typedef struct EventQueueRefObject { - PyObject_HEAD - EventQueueRef ob_itself; -} EventQueueRefObject; - -PyObject *EventQueueRef_New(EventQueueRef itself) -{ - EventQueueRefObject *it; - it = PyObject_NEW(EventQueueRefObject, &EventQueueRef_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int EventQueueRef_Convert(PyObject *v, EventQueueRef *p_itself) -{ - if (!EventQueueRef_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "EventQueueRef required"); - return 0; - } - *p_itself = ((EventQueueRefObject *)v)->ob_itself; - return 1; -} - -static void EventQueueRef_dealloc(EventQueueRefObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *EventQueueRef_PostEventToQueue(EventQueueRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - EventRef inEvent; - SInt16 inPriority; - if (!PyArg_ParseTuple(_args, "O&h", - EventRef_Convert, &inEvent, - &inPriority)) - return NULL; - _err = PostEventToQueue(_self->ob_itself, - inEvent, - inPriority); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *EventQueueRef_FlushEventsMatchingListFromQueue(EventQueueRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 inNumTypes; - EventTypeSpec inList; - if (!PyArg_ParseTuple(_args, "lO&", - &inNumTypes, - EventTypeSpec_Convert, &inList)) - return NULL; - _err = FlushEventsMatchingListFromQueue(_self->ob_itself, - inNumTypes, - &inList); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *EventQueueRef_FlushEventQueue(EventQueueRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = FlushEventQueue(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *EventQueueRef_GetNumEventsInQueue(EventQueueRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt32 _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetNumEventsInQueue(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *EventQueueRef_RemoveEventFromQueue(EventQueueRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - EventRef inEvent; - if (!PyArg_ParseTuple(_args, "O&", - EventRef_Convert, &inEvent)) - return NULL; - _err = RemoveEventFromQueue(_self->ob_itself, - inEvent); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *EventQueueRef_IsEventInQueue(EventQueueRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - EventRef inEvent; - if (!PyArg_ParseTuple(_args, "O&", - EventRef_Convert, &inEvent)) - return NULL; - _rv = IsEventInQueue(_self->ob_itself, - inEvent); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyMethodDef EventQueueRef_methods[] = { - {"PostEventToQueue", (PyCFunction)EventQueueRef_PostEventToQueue, 1, - PyDoc_STR("(EventRef inEvent, SInt16 inPriority) -> None")}, - {"FlushEventsMatchingListFromQueue", (PyCFunction)EventQueueRef_FlushEventsMatchingListFromQueue, 1, - PyDoc_STR("(UInt32 inNumTypes, EventTypeSpec inList) -> None")}, - {"FlushEventQueue", (PyCFunction)EventQueueRef_FlushEventQueue, 1, - PyDoc_STR("() -> None")}, - {"GetNumEventsInQueue", (PyCFunction)EventQueueRef_GetNumEventsInQueue, 1, - PyDoc_STR("() -> (UInt32 _rv)")}, - {"RemoveEventFromQueue", (PyCFunction)EventQueueRef_RemoveEventFromQueue, 1, - PyDoc_STR("(EventRef inEvent) -> None")}, - {"IsEventInQueue", (PyCFunction)EventQueueRef_IsEventInQueue, 1, - PyDoc_STR("(EventRef inEvent) -> (Boolean _rv)")}, - {NULL, NULL, 0} -}; - -#define EventQueueRef_getsetlist NULL - - -#define EventQueueRef_compare NULL - -#define EventQueueRef_repr NULL - -#define EventQueueRef_hash NULL -#define EventQueueRef_tp_init 0 - -#define EventQueueRef_tp_alloc PyType_GenericAlloc - -static PyObject *EventQueueRef_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - EventQueueRef itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, EventQueueRef_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((EventQueueRefObject *)_self)->ob_itself = itself; - return _self; -} - -#define EventQueueRef_tp_free PyObject_Del - - -PyTypeObject EventQueueRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CarbonEvt.EventQueueRef", /*tp_name*/ - sizeof(EventQueueRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) EventQueueRef_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) EventQueueRef_compare, /*tp_compare*/ - (reprfunc) EventQueueRef_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) EventQueueRef_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - EventQueueRef_methods, /* tp_methods */ - 0, /*tp_members*/ - EventQueueRef_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - EventQueueRef_tp_init, /* tp_init */ - EventQueueRef_tp_alloc, /* tp_alloc */ - EventQueueRef_tp_new, /* tp_new */ - EventQueueRef_tp_free, /* tp_free */ -}; - -/* ----------------- End object type EventQueueRef ------------------ */ - - -/* -------------------- Object type EventLoopRef -------------------- */ - -PyTypeObject EventLoopRef_Type; - -#define EventLoopRef_Check(x) ((x)->ob_type == &EventLoopRef_Type || PyObject_TypeCheck((x), &EventLoopRef_Type)) - -typedef struct EventLoopRefObject { - PyObject_HEAD - EventLoopRef ob_itself; -} EventLoopRefObject; - -PyObject *EventLoopRef_New(EventLoopRef itself) -{ - EventLoopRefObject *it; - it = PyObject_NEW(EventLoopRefObject, &EventLoopRef_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int EventLoopRef_Convert(PyObject *v, EventLoopRef *p_itself) -{ - if (!EventLoopRef_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "EventLoopRef required"); - return 0; - } - *p_itself = ((EventLoopRefObject *)v)->ob_itself; - return 1; -} - -static void EventLoopRef_dealloc(EventLoopRefObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *EventLoopRef_QuitEventLoop(EventLoopRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = QuitEventLoop(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef EventLoopRef_methods[] = { - {"QuitEventLoop", (PyCFunction)EventLoopRef_QuitEventLoop, 1, - PyDoc_STR("() -> None")}, - {NULL, NULL, 0} -}; - -#define EventLoopRef_getsetlist NULL - - -#define EventLoopRef_compare NULL - -#define EventLoopRef_repr NULL - -#define EventLoopRef_hash NULL -#define EventLoopRef_tp_init 0 - -#define EventLoopRef_tp_alloc PyType_GenericAlloc - -static PyObject *EventLoopRef_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - EventLoopRef itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, EventLoopRef_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((EventLoopRefObject *)_self)->ob_itself = itself; - return _self; -} - -#define EventLoopRef_tp_free PyObject_Del - - -PyTypeObject EventLoopRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CarbonEvt.EventLoopRef", /*tp_name*/ - sizeof(EventLoopRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) EventLoopRef_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) EventLoopRef_compare, /*tp_compare*/ - (reprfunc) EventLoopRef_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) EventLoopRef_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - EventLoopRef_methods, /* tp_methods */ - 0, /*tp_members*/ - EventLoopRef_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - EventLoopRef_tp_init, /* tp_init */ - EventLoopRef_tp_alloc, /* tp_alloc */ - EventLoopRef_tp_new, /* tp_new */ - EventLoopRef_tp_free, /* tp_free */ -}; - -/* ------------------ End object type EventLoopRef ------------------ */ - - -/* ----------------- Object type EventLoopTimerRef ------------------ */ - -PyTypeObject EventLoopTimerRef_Type; - -#define EventLoopTimerRef_Check(x) ((x)->ob_type == &EventLoopTimerRef_Type || PyObject_TypeCheck((x), &EventLoopTimerRef_Type)) - -typedef struct EventLoopTimerRefObject { - PyObject_HEAD - EventLoopTimerRef ob_itself; -} EventLoopTimerRefObject; - -PyObject *EventLoopTimerRef_New(EventLoopTimerRef itself) -{ - EventLoopTimerRefObject *it; - it = PyObject_NEW(EventLoopTimerRefObject, &EventLoopTimerRef_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int EventLoopTimerRef_Convert(PyObject *v, EventLoopTimerRef *p_itself) -{ - if (!EventLoopTimerRef_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "EventLoopTimerRef required"); - return 0; - } - *p_itself = ((EventLoopTimerRefObject *)v)->ob_itself; - return 1; -} - -static void EventLoopTimerRef_dealloc(EventLoopTimerRefObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *EventLoopTimerRef_RemoveEventLoopTimer(EventLoopTimerRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = RemoveEventLoopTimer(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *EventLoopTimerRef_SetEventLoopTimerNextFireTime(EventLoopTimerRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - double inNextFire; - if (!PyArg_ParseTuple(_args, "d", - &inNextFire)) - return NULL; - _err = SetEventLoopTimerNextFireTime(_self->ob_itself, - inNextFire); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef EventLoopTimerRef_methods[] = { - {"RemoveEventLoopTimer", (PyCFunction)EventLoopTimerRef_RemoveEventLoopTimer, 1, - PyDoc_STR("() -> None")}, - {"SetEventLoopTimerNextFireTime", (PyCFunction)EventLoopTimerRef_SetEventLoopTimerNextFireTime, 1, - PyDoc_STR("(double inNextFire) -> None")}, - {NULL, NULL, 0} -}; - -#define EventLoopTimerRef_getsetlist NULL - - -#define EventLoopTimerRef_compare NULL - -#define EventLoopTimerRef_repr NULL - -#define EventLoopTimerRef_hash NULL -#define EventLoopTimerRef_tp_init 0 - -#define EventLoopTimerRef_tp_alloc PyType_GenericAlloc - -static PyObject *EventLoopTimerRef_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - EventLoopTimerRef itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, EventLoopTimerRef_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((EventLoopTimerRefObject *)_self)->ob_itself = itself; - return _self; -} - -#define EventLoopTimerRef_tp_free PyObject_Del - - -PyTypeObject EventLoopTimerRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CarbonEvt.EventLoopTimerRef", /*tp_name*/ - sizeof(EventLoopTimerRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) EventLoopTimerRef_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) EventLoopTimerRef_compare, /*tp_compare*/ - (reprfunc) EventLoopTimerRef_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) EventLoopTimerRef_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - EventLoopTimerRef_methods, /* tp_methods */ - 0, /*tp_members*/ - EventLoopTimerRef_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - EventLoopTimerRef_tp_init, /* tp_init */ - EventLoopTimerRef_tp_alloc, /* tp_alloc */ - EventLoopTimerRef_tp_new, /* tp_new */ - EventLoopTimerRef_tp_free, /* tp_free */ -}; - -/* --------------- End object type EventLoopTimerRef ---------------- */ - - -/* ------------------ Object type EventHandlerRef ------------------- */ - -PyTypeObject EventHandlerRef_Type; - -#define EventHandlerRef_Check(x) ((x)->ob_type == &EventHandlerRef_Type || PyObject_TypeCheck((x), &EventHandlerRef_Type)) - -typedef struct EventHandlerRefObject { - PyObject_HEAD - EventHandlerRef ob_itself; - PyObject *ob_callback; -} EventHandlerRefObject; - -PyObject *EventHandlerRef_New(EventHandlerRef itself) -{ - EventHandlerRefObject *it; - it = PyObject_NEW(EventHandlerRefObject, &EventHandlerRef_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - it->ob_callback = NULL; - return (PyObject *)it; -} - -int EventHandlerRef_Convert(PyObject *v, EventHandlerRef *p_itself) -{ - if (!EventHandlerRef_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "EventHandlerRef required"); - return 0; - } - *p_itself = ((EventHandlerRefObject *)v)->ob_itself; - return 1; -} - -static void EventHandlerRef_dealloc(EventHandlerRefObject *self) -{ - if (self->ob_itself != NULL) { - RemoveEventHandler(self->ob_itself); - Py_DECREF(self->ob_callback); - } - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *EventHandlerRef_AddEventTypesToHandler(EventHandlerRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 inNumTypes; - EventTypeSpec inList; - if (_self->ob_itself == NULL) { - PyErr_SetString(CarbonEvents_Error, "Handler has been removed"); - return NULL; - } - if (!PyArg_ParseTuple(_args, "lO&", - &inNumTypes, - EventTypeSpec_Convert, &inList)) - return NULL; - _err = AddEventTypesToHandler(_self->ob_itself, - inNumTypes, - &inList); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *EventHandlerRef_RemoveEventTypesFromHandler(EventHandlerRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 inNumTypes; - EventTypeSpec inList; - if (_self->ob_itself == NULL) { - PyErr_SetString(CarbonEvents_Error, "Handler has been removed"); - return NULL; - } - if (!PyArg_ParseTuple(_args, "lO&", - &inNumTypes, - EventTypeSpec_Convert, &inList)) - return NULL; - _err = RemoveEventTypesFromHandler(_self->ob_itself, - inNumTypes, - &inList); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *EventHandlerRef_RemoveEventHandler(EventHandlerRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - OSStatus _err; - if (_self->ob_itself == NULL) { - PyErr_SetString(CarbonEvents_Error, "Handler has been removed"); - return NULL; - } - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = RemoveEventHandler(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - _self->ob_itself = NULL; - Py_DECREF(_self->ob_callback); - _self->ob_callback = NULL; - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef EventHandlerRef_methods[] = { - {"AddEventTypesToHandler", (PyCFunction)EventHandlerRef_AddEventTypesToHandler, 1, - PyDoc_STR("(UInt32 inNumTypes, EventTypeSpec inList) -> None")}, - {"RemoveEventTypesFromHandler", (PyCFunction)EventHandlerRef_RemoveEventTypesFromHandler, 1, - PyDoc_STR("(UInt32 inNumTypes, EventTypeSpec inList) -> None")}, - {"RemoveEventHandler", (PyCFunction)EventHandlerRef_RemoveEventHandler, 1, - PyDoc_STR("() -> None")}, - {NULL, NULL, 0} -}; - -#define EventHandlerRef_getsetlist NULL - - -#define EventHandlerRef_compare NULL - -#define EventHandlerRef_repr NULL - -#define EventHandlerRef_hash NULL -#define EventHandlerRef_tp_init 0 - -#define EventHandlerRef_tp_alloc PyType_GenericAlloc - -static PyObject *EventHandlerRef_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - EventHandlerRef itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, EventHandlerRef_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((EventHandlerRefObject *)_self)->ob_itself = itself; - return _self; -} - -#define EventHandlerRef_tp_free PyObject_Del - - -PyTypeObject EventHandlerRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CarbonEvt.EventHandlerRef", /*tp_name*/ - sizeof(EventHandlerRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) EventHandlerRef_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) EventHandlerRef_compare, /*tp_compare*/ - (reprfunc) EventHandlerRef_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) EventHandlerRef_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - EventHandlerRef_methods, /* tp_methods */ - 0, /*tp_members*/ - EventHandlerRef_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - EventHandlerRef_tp_init, /* tp_init */ - EventHandlerRef_tp_alloc, /* tp_alloc */ - EventHandlerRef_tp_new, /* tp_new */ - EventHandlerRef_tp_free, /* tp_free */ -}; - -/* ---------------- End object type EventHandlerRef ----------------- */ - - -/* ---------------- Object type EventHandlerCallRef ----------------- */ - -PyTypeObject EventHandlerCallRef_Type; - -#define EventHandlerCallRef_Check(x) ((x)->ob_type == &EventHandlerCallRef_Type || PyObject_TypeCheck((x), &EventHandlerCallRef_Type)) - -typedef struct EventHandlerCallRefObject { - PyObject_HEAD - EventHandlerCallRef ob_itself; -} EventHandlerCallRefObject; - -PyObject *EventHandlerCallRef_New(EventHandlerCallRef itself) -{ - EventHandlerCallRefObject *it; - it = PyObject_NEW(EventHandlerCallRefObject, &EventHandlerCallRef_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int EventHandlerCallRef_Convert(PyObject *v, EventHandlerCallRef *p_itself) -{ - if (!EventHandlerCallRef_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "EventHandlerCallRef required"); - return 0; - } - *p_itself = ((EventHandlerCallRefObject *)v)->ob_itself; - return 1; -} - -static void EventHandlerCallRef_dealloc(EventHandlerCallRefObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *EventHandlerCallRef_CallNextEventHandler(EventHandlerCallRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - EventRef inEvent; - if (!PyArg_ParseTuple(_args, "O&", - EventRef_Convert, &inEvent)) - return NULL; - _err = CallNextEventHandler(_self->ob_itself, - inEvent); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef EventHandlerCallRef_methods[] = { - {"CallNextEventHandler", (PyCFunction)EventHandlerCallRef_CallNextEventHandler, 1, - PyDoc_STR("(EventRef inEvent) -> None")}, - {NULL, NULL, 0} -}; - -#define EventHandlerCallRef_getsetlist NULL - - -#define EventHandlerCallRef_compare NULL - -#define EventHandlerCallRef_repr NULL - -#define EventHandlerCallRef_hash NULL -#define EventHandlerCallRef_tp_init 0 - -#define EventHandlerCallRef_tp_alloc PyType_GenericAlloc - -static PyObject *EventHandlerCallRef_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - EventHandlerCallRef itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, EventHandlerCallRef_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((EventHandlerCallRefObject *)_self)->ob_itself = itself; - return _self; -} - -#define EventHandlerCallRef_tp_free PyObject_Del - - -PyTypeObject EventHandlerCallRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CarbonEvt.EventHandlerCallRef", /*tp_name*/ - sizeof(EventHandlerCallRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) EventHandlerCallRef_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) EventHandlerCallRef_compare, /*tp_compare*/ - (reprfunc) EventHandlerCallRef_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) EventHandlerCallRef_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - EventHandlerCallRef_methods, /* tp_methods */ - 0, /*tp_members*/ - EventHandlerCallRef_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - EventHandlerCallRef_tp_init, /* tp_init */ - EventHandlerCallRef_tp_alloc, /* tp_alloc */ - EventHandlerCallRef_tp_new, /* tp_new */ - EventHandlerCallRef_tp_free, /* tp_free */ -}; - -/* -------------- End object type EventHandlerCallRef --------------- */ - - -/* ------------------- Object type EventTargetRef ------------------- */ - -PyTypeObject EventTargetRef_Type; - -#define EventTargetRef_Check(x) ((x)->ob_type == &EventTargetRef_Type || PyObject_TypeCheck((x), &EventTargetRef_Type)) - -typedef struct EventTargetRefObject { - PyObject_HEAD - EventTargetRef ob_itself; -} EventTargetRefObject; - -PyObject *EventTargetRef_New(EventTargetRef itself) -{ - EventTargetRefObject *it; - it = PyObject_NEW(EventTargetRefObject, &EventTargetRef_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int EventTargetRef_Convert(PyObject *v, EventTargetRef *p_itself) -{ - if (!EventTargetRef_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "EventTargetRef required"); - return 0; - } - *p_itself = ((EventTargetRefObject *)v)->ob_itself; - return 1; -} - -static void EventTargetRef_dealloc(EventTargetRefObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *EventTargetRef_InstallStandardEventHandler(EventTargetRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = InstallStandardEventHandler(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *EventTargetRef_InstallEventHandler(EventTargetRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - EventTypeSpec inSpec; - PyObject *callback; - EventHandlerRef outRef; - OSStatus _err; - - if (!PyArg_ParseTuple(_args, "O&O", EventTypeSpec_Convert, &inSpec, &callback)) - return NULL; - - _err = InstallEventHandler(_self->ob_itself, myEventHandlerUPP, 1, &inSpec, (void *)callback, &outRef); - if (_err != noErr) return PyMac_Error(_err); - - _res = EventHandlerRef_New(outRef); - if (_res != NULL) { - ((EventHandlerRefObject*)_res)->ob_callback = callback; - Py_INCREF(callback); - } - return _res; -} - -static PyMethodDef EventTargetRef_methods[] = { - {"InstallStandardEventHandler", (PyCFunction)EventTargetRef_InstallStandardEventHandler, 1, - PyDoc_STR("() -> None")}, - {"InstallEventHandler", (PyCFunction)EventTargetRef_InstallEventHandler, 1, - PyDoc_STR("(EventTypeSpec inSpec, Method callback) -> (EventHandlerRef outRef)")}, - {NULL, NULL, 0} -}; - -#define EventTargetRef_getsetlist NULL - - -#define EventTargetRef_compare NULL - -#define EventTargetRef_repr NULL - -#define EventTargetRef_hash NULL -#define EventTargetRef_tp_init 0 - -#define EventTargetRef_tp_alloc PyType_GenericAlloc - -static PyObject *EventTargetRef_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - EventTargetRef itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, EventTargetRef_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((EventTargetRefObject *)_self)->ob_itself = itself; - return _self; -} - -#define EventTargetRef_tp_free PyObject_Del - - -PyTypeObject EventTargetRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CarbonEvt.EventTargetRef", /*tp_name*/ - sizeof(EventTargetRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) EventTargetRef_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) EventTargetRef_compare, /*tp_compare*/ - (reprfunc) EventTargetRef_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) EventTargetRef_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - EventTargetRef_methods, /* tp_methods */ - 0, /*tp_members*/ - EventTargetRef_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - EventTargetRef_tp_init, /* tp_init */ - EventTargetRef_tp_alloc, /* tp_alloc */ - EventTargetRef_tp_new, /* tp_new */ - EventTargetRef_tp_free, /* tp_free */ -}; - -/* ----------------- End object type EventTargetRef ----------------- */ - - -/* ------------------- Object type EventHotKeyRef ------------------- */ - -PyTypeObject EventHotKeyRef_Type; - -#define EventHotKeyRef_Check(x) ((x)->ob_type == &EventHotKeyRef_Type || PyObject_TypeCheck((x), &EventHotKeyRef_Type)) - -typedef struct EventHotKeyRefObject { - PyObject_HEAD - EventHotKeyRef ob_itself; -} EventHotKeyRefObject; - -PyObject *EventHotKeyRef_New(EventHotKeyRef itself) -{ - EventHotKeyRefObject *it; - it = PyObject_NEW(EventHotKeyRefObject, &EventHotKeyRef_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int EventHotKeyRef_Convert(PyObject *v, EventHotKeyRef *p_itself) -{ - if (!EventHotKeyRef_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "EventHotKeyRef required"); - return 0; - } - *p_itself = ((EventHotKeyRefObject *)v)->ob_itself; - return 1; -} - -static void EventHotKeyRef_dealloc(EventHotKeyRefObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *EventHotKeyRef_UnregisterEventHotKey(EventHotKeyRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = UnregisterEventHotKey(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef EventHotKeyRef_methods[] = { - {"UnregisterEventHotKey", (PyCFunction)EventHotKeyRef_UnregisterEventHotKey, 1, - PyDoc_STR("() -> None")}, - {NULL, NULL, 0} -}; - -#define EventHotKeyRef_getsetlist NULL - - -#define EventHotKeyRef_compare NULL - -#define EventHotKeyRef_repr NULL - -#define EventHotKeyRef_hash NULL -#define EventHotKeyRef_tp_init 0 - -#define EventHotKeyRef_tp_alloc PyType_GenericAlloc - -static PyObject *EventHotKeyRef_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - EventHotKeyRef itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, EventHotKeyRef_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((EventHotKeyRefObject *)_self)->ob_itself = itself; - return _self; -} - -#define EventHotKeyRef_tp_free PyObject_Del - - -PyTypeObject EventHotKeyRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CarbonEvt.EventHotKeyRef", /*tp_name*/ - sizeof(EventHotKeyRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) EventHotKeyRef_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) EventHotKeyRef_compare, /*tp_compare*/ - (reprfunc) EventHotKeyRef_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) EventHotKeyRef_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - EventHotKeyRef_methods, /* tp_methods */ - 0, /*tp_members*/ - EventHotKeyRef_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - EventHotKeyRef_tp_init, /* tp_init */ - EventHotKeyRef_tp_alloc, /* tp_alloc */ - EventHotKeyRef_tp_new, /* tp_new */ - EventHotKeyRef_tp_free, /* tp_free */ -}; - -/* ----------------- End object type EventHotKeyRef ----------------- */ - - -static PyObject *CarbonEvents_GetCurrentEventLoop(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventLoopRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetCurrentEventLoop(); - _res = Py_BuildValue("O&", - EventLoopRef_New, _rv); - return _res; -} - -static PyObject *CarbonEvents_GetMainEventLoop(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventLoopRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMainEventLoop(); - _res = Py_BuildValue("O&", - EventLoopRef_New, _rv); - return _res; -} - -static PyObject *CarbonEvents_RunCurrentEventLoop(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - double inTimeout; - if (!PyArg_ParseTuple(_args, "d", - &inTimeout)) - return NULL; - _err = RunCurrentEventLoop(inTimeout); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CarbonEvents_ReceiveNextEvent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 inNumTypes; - EventTypeSpec inList; - double inTimeout; - Boolean inPullEvent; - EventRef outEvent; - if (!PyArg_ParseTuple(_args, "lO&db", - &inNumTypes, - EventTypeSpec_Convert, &inList, - &inTimeout, - &inPullEvent)) - return NULL; - _err = ReceiveNextEvent(inNumTypes, - &inList, - inTimeout, - inPullEvent, - &outEvent); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - EventRef_New, outEvent); - return _res; -} - -static PyObject *CarbonEvents_GetCurrentEventQueue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventQueueRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetCurrentEventQueue(); - _res = Py_BuildValue("O&", - EventQueueRef_New, _rv); - return _res; -} - -static PyObject *CarbonEvents_GetMainEventQueue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventQueueRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMainEventQueue(); - _res = Py_BuildValue("O&", - EventQueueRef_New, _rv); - return _res; -} - -static PyObject *CarbonEvents_GetCurrentEventTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - double _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetCurrentEventTime(); - _res = Py_BuildValue("d", - _rv); - return _res; -} - -static PyObject *CarbonEvents_TrackMouseLocation(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - GrafPtr inPort; - Point outPt; - UInt16 outResult; - if (!PyArg_ParseTuple(_args, "O&", - GrafObj_Convert, &inPort)) - return NULL; - _err = TrackMouseLocation(inPort, - &outPt, - &outResult); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&H", - PyMac_BuildPoint, outPt, - outResult); - return _res; -} - -static PyObject *CarbonEvents_TrackMouseLocationWithOptions(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - GrafPtr inPort; - OptionBits inOptions; - double inTimeout; - Point outPt; - UInt32 outModifiers; - UInt16 outResult; - if (!PyArg_ParseTuple(_args, "O&ld", - GrafObj_Convert, &inPort, - &inOptions, - &inTimeout)) - return NULL; - _err = TrackMouseLocationWithOptions(inPort, - inOptions, - inTimeout, - &outPt, - &outModifiers, - &outResult); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&lH", - PyMac_BuildPoint, outPt, - outModifiers, - outResult); - return _res; -} - -static PyObject *CarbonEvents_TrackMouseRegion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - GrafPtr inPort; - RgnHandle inRegion; - Boolean ioWasInRgn; - UInt16 outResult; - if (!PyArg_ParseTuple(_args, "O&O&b", - GrafObj_Convert, &inPort, - ResObj_Convert, &inRegion, - &ioWasInRgn)) - return NULL; - _err = TrackMouseRegion(inPort, - inRegion, - &ioWasInRgn, - &outResult); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("bH", - ioWasInRgn, - outResult); - return _res; -} - -static PyObject *CarbonEvents_GetLastUserEventTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - double _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetLastUserEventTime(); - _res = Py_BuildValue("d", - _rv); - return _res; -} - -static PyObject *CarbonEvents_IsMouseCoalescingEnabled(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsMouseCoalescingEnabled(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *CarbonEvents_SetMouseCoalescingEnabled(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean inNewState; - Boolean outOldState; - if (!PyArg_ParseTuple(_args, "b", - &inNewState)) - return NULL; - _err = SetMouseCoalescingEnabled(inNewState, - &outOldState); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - outOldState); - return _res; -} - -static PyObject *CarbonEvents_GetWindowEventTarget(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventTargetRef _rv; - WindowPtr inWindow; - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _rv = GetWindowEventTarget(inWindow); - _res = Py_BuildValue("O&", - EventTargetRef_New, _rv); - return _res; -} - -static PyObject *CarbonEvents_GetControlEventTarget(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventTargetRef _rv; - ControlHandle inControl; - if (!PyArg_ParseTuple(_args, "O&", - CtlObj_Convert, &inControl)) - return NULL; - _rv = GetControlEventTarget(inControl); - _res = Py_BuildValue("O&", - EventTargetRef_New, _rv); - return _res; -} - -static PyObject *CarbonEvents_GetMenuEventTarget(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventTargetRef _rv; - MenuHandle inMenu; - if (!PyArg_ParseTuple(_args, "O&", - MenuObj_Convert, &inMenu)) - return NULL; - _rv = GetMenuEventTarget(inMenu); - _res = Py_BuildValue("O&", - EventTargetRef_New, _rv); - return _res; -} - -static PyObject *CarbonEvents_GetApplicationEventTarget(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventTargetRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetApplicationEventTarget(); - _res = Py_BuildValue("O&", - EventTargetRef_New, _rv); - return _res; -} - -static PyObject *CarbonEvents_GetUserFocusEventTarget(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventTargetRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetUserFocusEventTarget(); - _res = Py_BuildValue("O&", - EventTargetRef_New, _rv); - return _res; -} - -static PyObject *CarbonEvents_GetEventDispatcherTarget(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventTargetRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetEventDispatcherTarget(); - _res = Py_BuildValue("O&", - EventTargetRef_New, _rv); - return _res; -} - -static PyObject *CarbonEvents_RunApplicationEventLoop(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - RunApplicationEventLoop(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CarbonEvents_QuitApplicationEventLoop(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - QuitApplicationEventLoop(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CarbonEvents_RunAppModalLoopForWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = RunAppModalLoopForWindow(inWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CarbonEvents_QuitAppModalLoopForWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = QuitAppModalLoopForWindow(inWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CarbonEvents_BeginAppModalStateForWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = BeginAppModalStateForWindow(inWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CarbonEvents_EndAppModalStateForWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = EndAppModalStateForWindow(inWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CarbonEvents_SetUserFocusWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = SetUserFocusWindow(inWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CarbonEvents_GetUserFocusWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetUserFocusWindow(); - _res = Py_BuildValue("O&", - WinObj_New, _rv); - return _res; -} - -static PyObject *CarbonEvents_SetWindowDefaultButton(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - ControlHandle inControl; - if (!PyArg_ParseTuple(_args, "O&O&", - WinObj_Convert, &inWindow, - CtlObj_Convert, &inControl)) - return NULL; - _err = SetWindowDefaultButton(inWindow, - inControl); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CarbonEvents_SetWindowCancelButton(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - ControlHandle inControl; - if (!PyArg_ParseTuple(_args, "O&O&", - WinObj_Convert, &inWindow, - CtlObj_Convert, &inControl)) - return NULL; - _err = SetWindowCancelButton(inWindow, - inControl); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CarbonEvents_GetWindowDefaultButton(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - ControlHandle outControl; - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = GetWindowDefaultButton(inWindow, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *CarbonEvents_GetWindowCancelButton(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - ControlHandle outControl; - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = GetWindowCancelButton(inWindow, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *CarbonEvents_RegisterEventHotKey(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 inHotKeyCode; - UInt32 inHotKeyModifiers; - EventHotKeyID inHotKeyID; - EventTargetRef inTarget; - OptionBits inOptions; - EventHotKeyRef outRef; - if (!PyArg_ParseTuple(_args, "llO&O&l", - &inHotKeyCode, - &inHotKeyModifiers, - EventHotKeyID_Convert, &inHotKeyID, - EventTargetRef_Convert, &inTarget, - &inOptions)) - return NULL; - _err = RegisterEventHotKey(inHotKeyCode, - inHotKeyModifiers, - inHotKeyID, - inTarget, - inOptions, - &outRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - EventHotKeyRef_New, outRef); - return _res; -} - -static PyMethodDef CarbonEvents_methods[] = { - {"GetCurrentEventLoop", (PyCFunction)CarbonEvents_GetCurrentEventLoop, 1, - PyDoc_STR("() -> (EventLoopRef _rv)")}, - {"GetMainEventLoop", (PyCFunction)CarbonEvents_GetMainEventLoop, 1, - PyDoc_STR("() -> (EventLoopRef _rv)")}, - {"RunCurrentEventLoop", (PyCFunction)CarbonEvents_RunCurrentEventLoop, 1, - PyDoc_STR("(double inTimeout) -> None")}, - {"ReceiveNextEvent", (PyCFunction)CarbonEvents_ReceiveNextEvent, 1, - PyDoc_STR("(UInt32 inNumTypes, EventTypeSpec inList, double inTimeout, Boolean inPullEvent) -> (EventRef outEvent)")}, - {"GetCurrentEventQueue", (PyCFunction)CarbonEvents_GetCurrentEventQueue, 1, - PyDoc_STR("() -> (EventQueueRef _rv)")}, - {"GetMainEventQueue", (PyCFunction)CarbonEvents_GetMainEventQueue, 1, - PyDoc_STR("() -> (EventQueueRef _rv)")}, - {"GetCurrentEventTime", (PyCFunction)CarbonEvents_GetCurrentEventTime, 1, - PyDoc_STR("() -> (double _rv)")}, - {"TrackMouseLocation", (PyCFunction)CarbonEvents_TrackMouseLocation, 1, - PyDoc_STR("(GrafPtr inPort) -> (Point outPt, UInt16 outResult)")}, - {"TrackMouseLocationWithOptions", (PyCFunction)CarbonEvents_TrackMouseLocationWithOptions, 1, - PyDoc_STR("(GrafPtr inPort, OptionBits inOptions, double inTimeout) -> (Point outPt, UInt32 outModifiers, UInt16 outResult)")}, - {"TrackMouseRegion", (PyCFunction)CarbonEvents_TrackMouseRegion, 1, - PyDoc_STR("(GrafPtr inPort, RgnHandle inRegion, Boolean ioWasInRgn) -> (Boolean ioWasInRgn, UInt16 outResult)")}, - {"GetLastUserEventTime", (PyCFunction)CarbonEvents_GetLastUserEventTime, 1, - PyDoc_STR("() -> (double _rv)")}, - {"IsMouseCoalescingEnabled", (PyCFunction)CarbonEvents_IsMouseCoalescingEnabled, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"SetMouseCoalescingEnabled", (PyCFunction)CarbonEvents_SetMouseCoalescingEnabled, 1, - PyDoc_STR("(Boolean inNewState) -> (Boolean outOldState)")}, - {"GetWindowEventTarget", (PyCFunction)CarbonEvents_GetWindowEventTarget, 1, - PyDoc_STR("(WindowPtr inWindow) -> (EventTargetRef _rv)")}, - {"GetControlEventTarget", (PyCFunction)CarbonEvents_GetControlEventTarget, 1, - PyDoc_STR("(ControlHandle inControl) -> (EventTargetRef _rv)")}, - {"GetMenuEventTarget", (PyCFunction)CarbonEvents_GetMenuEventTarget, 1, - PyDoc_STR("(MenuHandle inMenu) -> (EventTargetRef _rv)")}, - {"GetApplicationEventTarget", (PyCFunction)CarbonEvents_GetApplicationEventTarget, 1, - PyDoc_STR("() -> (EventTargetRef _rv)")}, - {"GetUserFocusEventTarget", (PyCFunction)CarbonEvents_GetUserFocusEventTarget, 1, - PyDoc_STR("() -> (EventTargetRef _rv)")}, - {"GetEventDispatcherTarget", (PyCFunction)CarbonEvents_GetEventDispatcherTarget, 1, - PyDoc_STR("() -> (EventTargetRef _rv)")}, - {"RunApplicationEventLoop", (PyCFunction)CarbonEvents_RunApplicationEventLoop, 1, - PyDoc_STR("() -> None")}, - {"QuitApplicationEventLoop", (PyCFunction)CarbonEvents_QuitApplicationEventLoop, 1, - PyDoc_STR("() -> None")}, - {"RunAppModalLoopForWindow", (PyCFunction)CarbonEvents_RunAppModalLoopForWindow, 1, - PyDoc_STR("(WindowPtr inWindow) -> None")}, - {"QuitAppModalLoopForWindow", (PyCFunction)CarbonEvents_QuitAppModalLoopForWindow, 1, - PyDoc_STR("(WindowPtr inWindow) -> None")}, - {"BeginAppModalStateForWindow", (PyCFunction)CarbonEvents_BeginAppModalStateForWindow, 1, - PyDoc_STR("(WindowPtr inWindow) -> None")}, - {"EndAppModalStateForWindow", (PyCFunction)CarbonEvents_EndAppModalStateForWindow, 1, - PyDoc_STR("(WindowPtr inWindow) -> None")}, - {"SetUserFocusWindow", (PyCFunction)CarbonEvents_SetUserFocusWindow, 1, - PyDoc_STR("(WindowPtr inWindow) -> None")}, - {"GetUserFocusWindow", (PyCFunction)CarbonEvents_GetUserFocusWindow, 1, - PyDoc_STR("() -> (WindowPtr _rv)")}, - {"SetWindowDefaultButton", (PyCFunction)CarbonEvents_SetWindowDefaultButton, 1, - PyDoc_STR("(WindowPtr inWindow, ControlHandle inControl) -> None")}, - {"SetWindowCancelButton", (PyCFunction)CarbonEvents_SetWindowCancelButton, 1, - PyDoc_STR("(WindowPtr inWindow, ControlHandle inControl) -> None")}, - {"GetWindowDefaultButton", (PyCFunction)CarbonEvents_GetWindowDefaultButton, 1, - PyDoc_STR("(WindowPtr inWindow) -> (ControlHandle outControl)")}, - {"GetWindowCancelButton", (PyCFunction)CarbonEvents_GetWindowCancelButton, 1, - PyDoc_STR("(WindowPtr inWindow) -> (ControlHandle outControl)")}, - {"RegisterEventHotKey", (PyCFunction)CarbonEvents_RegisterEventHotKey, 1, - PyDoc_STR("(UInt32 inHotKeyCode, UInt32 inHotKeyModifiers, EventHotKeyID inHotKeyID, EventTargetRef inTarget, OptionBits inOptions) -> (EventHotKeyRef outRef)")}, - {NULL, NULL, 0} -}; - -#else /* __LP64__ */ - -static PyMethodDef CarbonEvents_methods[] = { - {NULL, NULL, 0} -}; - -#endif /* __LP64__ */ - - - -void init_CarbonEvt(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; -#endif /* !__LP64__ */ - - - m = Py_InitModule("_CarbonEvt", CarbonEvents_methods); - -#ifndef __LP64__ - myEventHandlerUPP = NewEventHandlerUPP(myEventHandler); - d = PyModule_GetDict(m); - CarbonEvents_Error = PyMac_GetOSErrException(); - if (CarbonEvents_Error == NULL || - PyDict_SetItemString(d, "Error", CarbonEvents_Error) != 0) - return; - EventRef_Type.ob_type = &PyType_Type; - if (PyType_Ready(&EventRef_Type) < 0) return; - Py_INCREF(&EventRef_Type); - PyModule_AddObject(m, "EventRef", (PyObject *)&EventRef_Type); - /* Backward-compatible name */ - Py_INCREF(&EventRef_Type); - PyModule_AddObject(m, "EventRefType", (PyObject *)&EventRef_Type); - EventQueueRef_Type.ob_type = &PyType_Type; - if (PyType_Ready(&EventQueueRef_Type) < 0) return; - Py_INCREF(&EventQueueRef_Type); - PyModule_AddObject(m, "EventQueueRef", (PyObject *)&EventQueueRef_Type); - /* Backward-compatible name */ - Py_INCREF(&EventQueueRef_Type); - PyModule_AddObject(m, "EventQueueRefType", (PyObject *)&EventQueueRef_Type); - EventLoopRef_Type.ob_type = &PyType_Type; - if (PyType_Ready(&EventLoopRef_Type) < 0) return; - Py_INCREF(&EventLoopRef_Type); - PyModule_AddObject(m, "EventLoopRef", (PyObject *)&EventLoopRef_Type); - /* Backward-compatible name */ - Py_INCREF(&EventLoopRef_Type); - PyModule_AddObject(m, "EventLoopRefType", (PyObject *)&EventLoopRef_Type); - EventLoopTimerRef_Type.ob_type = &PyType_Type; - if (PyType_Ready(&EventLoopTimerRef_Type) < 0) return; - Py_INCREF(&EventLoopTimerRef_Type); - PyModule_AddObject(m, "EventLoopTimerRef", (PyObject *)&EventLoopTimerRef_Type); - /* Backward-compatible name */ - Py_INCREF(&EventLoopTimerRef_Type); - PyModule_AddObject(m, "EventLoopTimerRefType", (PyObject *)&EventLoopTimerRef_Type); - EventHandlerRef_Type.ob_type = &PyType_Type; - if (PyType_Ready(&EventHandlerRef_Type) < 0) return; - Py_INCREF(&EventHandlerRef_Type); - PyModule_AddObject(m, "EventHandlerRef", (PyObject *)&EventHandlerRef_Type); - /* Backward-compatible name */ - Py_INCREF(&EventHandlerRef_Type); - PyModule_AddObject(m, "EventHandlerRefType", (PyObject *)&EventHandlerRef_Type); - EventHandlerCallRef_Type.ob_type = &PyType_Type; - if (PyType_Ready(&EventHandlerCallRef_Type) < 0) return; - Py_INCREF(&EventHandlerCallRef_Type); - PyModule_AddObject(m, "EventHandlerCallRef", (PyObject *)&EventHandlerCallRef_Type); - /* Backward-compatible name */ - Py_INCREF(&EventHandlerCallRef_Type); - PyModule_AddObject(m, "EventHandlerCallRefType", (PyObject *)&EventHandlerCallRef_Type); - EventTargetRef_Type.ob_type = &PyType_Type; - if (PyType_Ready(&EventTargetRef_Type) < 0) return; - Py_INCREF(&EventTargetRef_Type); - PyModule_AddObject(m, "EventTargetRef", (PyObject *)&EventTargetRef_Type); - /* Backward-compatible name */ - Py_INCREF(&EventTargetRef_Type); - PyModule_AddObject(m, "EventTargetRefType", (PyObject *)&EventTargetRef_Type); - EventHotKeyRef_Type.ob_type = &PyType_Type; - if (PyType_Ready(&EventHotKeyRef_Type) < 0) return; - Py_INCREF(&EventHotKeyRef_Type); - PyModule_AddObject(m, "EventHotKeyRef", (PyObject *)&EventHotKeyRef_Type); - /* Backward-compatible name */ - Py_INCREF(&EventHotKeyRef_Type); - PyModule_AddObject(m, "EventHotKeyRefType", (PyObject *)&EventHotKeyRef_Type); -#endif /* !__LP64__ */ -} - -/* ===================== End module _CarbonEvt ====================== */ - diff --git a/project/jni/python/src/Mac/Modules/cf/_CFmodule.c b/project/jni/python/src/Mac/Modules/cf/_CFmodule.c deleted file mode 100644 index 0904ae100..000000000 --- a/project/jni/python/src/Mac/Modules/cf/_CFmodule.c +++ /dev/null @@ -1,4996 +0,0 @@ - -/* =========================== Module _CF =========================== */ - -#include "Python.h" - - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -#include "pycfbridge.h" - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_CFObj_New(CFTypeRef); -extern int _CFObj_Convert(PyObject *, CFTypeRef *); -#define CFObj_New _CFObj_New -#define CFObj_Convert _CFObj_Convert - -extern PyObject *_CFTypeRefObj_New(CFTypeRef); -extern int _CFTypeRefObj_Convert(PyObject *, CFTypeRef *); -#define CFTypeRefObj_New _CFTypeRefObj_New -#define CFTypeRefObj_Convert _CFTypeRefObj_Convert - -extern PyObject *_CFStringRefObj_New(CFStringRef); -extern int _CFStringRefObj_Convert(PyObject *, CFStringRef *); -#define CFStringRefObj_New _CFStringRefObj_New -#define CFStringRefObj_Convert _CFStringRefObj_Convert - -extern PyObject *_CFMutableStringRefObj_New(CFMutableStringRef); -extern int _CFMutableStringRefObj_Convert(PyObject *, CFMutableStringRef *); -#define CFMutableStringRefObj_New _CFMutableStringRefObj_New -#define CFMutableStringRefObj_Convert _CFMutableStringRefObj_Convert - -extern PyObject *_CFArrayRefObj_New(CFArrayRef); -extern int _CFArrayRefObj_Convert(PyObject *, CFArrayRef *); -#define CFArrayRefObj_New _CFArrayRefObj_New -#define CFArrayRefObj_Convert _CFArrayRefObj_Convert - -extern PyObject *_CFMutableArrayRefObj_New(CFMutableArrayRef); -extern int _CFMutableArrayRefObj_Convert(PyObject *, CFMutableArrayRef *); -#define CFMutableArrayRefObj_New _CFMutableArrayRefObj_New -#define CFMutableArrayRefObj_Convert _CFMutableArrayRefObj_Convert - -extern PyObject *_CFDataRefObj_New(CFDataRef); -extern int _CFDataRefObj_Convert(PyObject *, CFDataRef *); -#define CFDataRefObj_New _CFDataRefObj_New -#define CFDataRefObj_Convert _CFDataRefObj_Convert - -extern PyObject *_CFMutableDataRefObj_New(CFMutableDataRef); -extern int _CFMutableDataRefObj_Convert(PyObject *, CFMutableDataRef *); -#define CFMutableDataRefObj_New _CFMutableDataRefObj_New -#define CFMutableDataRefObj_Convert _CFMutableDataRefObj_Convert - -extern PyObject *_CFDictionaryRefObj_New(CFDictionaryRef); -extern int _CFDictionaryRefObj_Convert(PyObject *, CFDictionaryRef *); -#define CFDictionaryRefObj_New _CFDictionaryRefObj_New -#define CFDictionaryRefObj_Convert _CFDictionaryRefObj_Convert - -extern PyObject *_CFMutableDictionaryRefObj_New(CFMutableDictionaryRef); -extern int _CFMutableDictionaryRefObj_Convert(PyObject *, CFMutableDictionaryRef *); -#define CFMutableDictionaryRefObj_New _CFMutableDictionaryRefObj_New -#define CFMutableDictionaryRefObj_Convert _CFMutableDictionaryRefObj_Convert - -extern PyObject *_CFURLRefObj_New(CFURLRef); -extern int _CFURLRefObj_Convert(PyObject *, CFURLRef *); -extern int _OptionalCFURLRefObj_Convert(PyObject *, CFURLRef *); -#define CFURLRefObj_New _CFURLRefObj_New -#define CFURLRefObj_Convert _CFURLRefObj_Convert -#define OptionalCFURLRefObj_Convert _OptionalCFURLRefObj_Convert -#endif - -/* -** Parse/generate CFRange records -*/ -PyObject *CFRange_New(CFRange *itself) -{ - - return Py_BuildValue("ll", (long)itself->location, (long)itself->length); -} - -int -CFRange_Convert(PyObject *v, CFRange *p_itself) -{ - long location, length; - - if( !PyArg_ParseTuple(v, "ll", &location, &length) ) - return 0; - p_itself->location = (CFIndex)location; - p_itself->length = (CFIndex)length; - return 1; -} - -/* Optional CFURL argument or None (passed as NULL) */ -int -OptionalCFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself) -{ - if ( v == Py_None ) { - p_itself = NULL; - return 1; - } - return CFURLRefObj_Convert(v, p_itself); -} - -static PyObject *CF_Error; - -/* --------------------- Object type CFTypeRef ---------------------- */ - -PyTypeObject CFTypeRef_Type; - -#define CFTypeRefObj_Check(x) ((x)->ob_type == &CFTypeRef_Type || PyObject_TypeCheck((x), &CFTypeRef_Type)) - -typedef struct CFTypeRefObject { - PyObject_HEAD - CFTypeRef ob_itself; - void (*ob_freeit)(CFTypeRef ptr); -} CFTypeRefObject; - -PyObject *CFTypeRefObj_New(CFTypeRef itself) -{ - CFTypeRefObject *it; - if (itself == NULL) - { - PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); - return NULL; - } - it = PyObject_NEW(CFTypeRefObject, &CFTypeRef_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - it->ob_freeit = CFRelease; - return (PyObject *)it; -} - -int CFTypeRefObj_Convert(PyObject *v, CFTypeRef *p_itself) -{ - - if (v == Py_None) { *p_itself = NULL; return 1; } - /* Check for other CF objects here */ - - if (!CFTypeRefObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "CFTypeRef required"); - return 0; - } - *p_itself = ((CFTypeRefObject *)v)->ob_itself; - return 1; -} - -static void CFTypeRefObj_dealloc(CFTypeRefObject *self) -{ - if (self->ob_freeit && self->ob_itself) - { - self->ob_freeit((CFTypeRef)self->ob_itself); - self->ob_itself = NULL; - } - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *CFTypeRefObj_CFGetTypeID(CFTypeRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFTypeID _rv; -#ifndef CFGetTypeID - PyMac_PRECHECK(CFGetTypeID); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFGetTypeID(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFTypeRefObj_CFRetain(CFTypeRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFTypeRef _rv; -#ifndef CFRetain - PyMac_PRECHECK(CFRetain); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFRetain(_self->ob_itself); - _res = Py_BuildValue("O&", - CFTypeRefObj_New, _rv); - return _res; -} - -static PyObject *CFTypeRefObj_CFRelease(CFTypeRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef CFRelease - PyMac_PRECHECK(CFRelease); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CFRelease(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFTypeRefObj_CFGetRetainCount(CFTypeRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex _rv; -#ifndef CFGetRetainCount - PyMac_PRECHECK(CFGetRetainCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFGetRetainCount(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFTypeRefObj_CFEqual(CFTypeRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - CFTypeRef cf2; -#ifndef CFEqual - PyMac_PRECHECK(CFEqual); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFTypeRefObj_Convert, &cf2)) - return NULL; - _rv = CFEqual(_self->ob_itself, - cf2); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFTypeRefObj_CFHash(CFTypeRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFHashCode _rv; -#ifndef CFHash - PyMac_PRECHECK(CFHash); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFHash(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFTypeRefObj_CFCopyDescription(CFTypeRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; -#ifndef CFCopyDescription - PyMac_PRECHECK(CFCopyDescription); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFCopyDescription(_self->ob_itself); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFTypeRefObj_CFPropertyListCreateXMLData(CFTypeRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFDataRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFPropertyListCreateXMLData((CFAllocatorRef)NULL, - _self->ob_itself); - _res = Py_BuildValue("O&", - CFDataRefObj_New, _rv); - return _res; -} - -static PyObject *CFTypeRefObj_CFPropertyListCreateDeepCopy(CFTypeRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFTypeRef _rv; - CFOptionFlags mutabilityOption; - if (!PyArg_ParseTuple(_args, "l", - &mutabilityOption)) - return NULL; - _rv = CFPropertyListCreateDeepCopy((CFAllocatorRef)NULL, - _self->ob_itself, - mutabilityOption); - _res = Py_BuildValue("O&", - CFTypeRefObj_New, _rv); - return _res; -} - -static PyObject *CFTypeRefObj_CFShow(CFTypeRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef CFShow - PyMac_PRECHECK(CFShow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CFShow(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFTypeRefObj_CFPropertyListCreateFromXMLData(CFTypeRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - CFTypeRef _rv; - CFOptionFlags mutabilityOption; - CFStringRef errorString; - if (!PyArg_ParseTuple(_args, "l", - &mutabilityOption)) - return NULL; - _rv = CFPropertyListCreateFromXMLData((CFAllocatorRef)NULL, - _self->ob_itself, - mutabilityOption, - &errorString); - if (errorString) - CFRelease(errorString); - if (_rv == NULL) { - PyErr_SetString(PyExc_RuntimeError, "Parse error in XML data"); - return NULL; - } - _res = Py_BuildValue("O&", - CFTypeRefObj_New, _rv); - return _res; - -} - -static PyObject *CFTypeRefObj_toPython(CFTypeRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - _res = PyCF_CF2Python(_self->ob_itself); - return _res; - -} - -static PyMethodDef CFTypeRefObj_methods[] = { - {"CFGetTypeID", (PyCFunction)CFTypeRefObj_CFGetTypeID, 1, - PyDoc_STR("() -> (CFTypeID _rv)")}, - {"CFRetain", (PyCFunction)CFTypeRefObj_CFRetain, 1, - PyDoc_STR("() -> (CFTypeRef _rv)")}, - {"CFRelease", (PyCFunction)CFTypeRefObj_CFRelease, 1, - PyDoc_STR("() -> None")}, - {"CFGetRetainCount", (PyCFunction)CFTypeRefObj_CFGetRetainCount, 1, - PyDoc_STR("() -> (CFIndex _rv)")}, - {"CFEqual", (PyCFunction)CFTypeRefObj_CFEqual, 1, - PyDoc_STR("(CFTypeRef cf2) -> (Boolean _rv)")}, - {"CFHash", (PyCFunction)CFTypeRefObj_CFHash, 1, - PyDoc_STR("() -> (CFHashCode _rv)")}, - {"CFCopyDescription", (PyCFunction)CFTypeRefObj_CFCopyDescription, 1, - PyDoc_STR("() -> (CFStringRef _rv)")}, - {"CFPropertyListCreateXMLData", (PyCFunction)CFTypeRefObj_CFPropertyListCreateXMLData, 1, - PyDoc_STR("() -> (CFDataRef _rv)")}, - {"CFPropertyListCreateDeepCopy", (PyCFunction)CFTypeRefObj_CFPropertyListCreateDeepCopy, 1, - PyDoc_STR("(CFOptionFlags mutabilityOption) -> (CFTypeRef _rv)")}, - {"CFShow", (PyCFunction)CFTypeRefObj_CFShow, 1, - PyDoc_STR("() -> None")}, - {"CFPropertyListCreateFromXMLData", (PyCFunction)CFTypeRefObj_CFPropertyListCreateFromXMLData, 1, - PyDoc_STR("(CFOptionFlags mutabilityOption) -> (CFTypeRefObj)")}, - {"toPython", (PyCFunction)CFTypeRefObj_toPython, 1, - PyDoc_STR("() -> (python_object)")}, - {NULL, NULL, 0} -}; - -#define CFTypeRefObj_getsetlist NULL - - -static int CFTypeRefObj_compare(CFTypeRefObject *self, CFTypeRefObject *other) -{ - /* XXXX Or should we use CFEqual?? */ - if ( self->ob_itself > other->ob_itself ) return 1; - if ( self->ob_itself < other->ob_itself ) return -1; - return 0; -} - -static PyObject * CFTypeRefObj_repr(CFTypeRefObject *self) -{ - char buf[100]; - sprintf(buf, "", (int)CFGetTypeID(self->ob_itself), (unsigned)self, (unsigned)self->ob_itself); - return PyString_FromString(buf); -} - -static int CFTypeRefObj_hash(CFTypeRefObject *self) -{ - /* XXXX Or should we use CFHash?? */ - return (int)self->ob_itself; -} -static int CFTypeRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - CFTypeRef itself; - char *kw[] = {"itself", 0}; - - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) - { - ((CFTypeRefObject *)_self)->ob_itself = itself; - return 0; - } - return -1; -} - -#define CFTypeRefObj_tp_alloc PyType_GenericAlloc - -static PyObject *CFTypeRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((CFTypeRefObject *)self)->ob_itself = NULL; - ((CFTypeRefObject *)self)->ob_freeit = CFRelease; - return self; -} - -#define CFTypeRefObj_tp_free PyObject_Del - - -PyTypeObject CFTypeRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CF.CFTypeRef", /*tp_name*/ - sizeof(CFTypeRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CFTypeRefObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CFTypeRefObj_compare, /*tp_compare*/ - (reprfunc) CFTypeRefObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CFTypeRefObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CFTypeRefObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CFTypeRefObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CFTypeRefObj_tp_init, /* tp_init */ - CFTypeRefObj_tp_alloc, /* tp_alloc */ - CFTypeRefObj_tp_new, /* tp_new */ - CFTypeRefObj_tp_free, /* tp_free */ -}; - -/* ------------------- End object type CFTypeRef -------------------- */ - - -/* --------------------- Object type CFArrayRef --------------------- */ - -PyTypeObject CFArrayRef_Type; - -#define CFArrayRefObj_Check(x) ((x)->ob_type == &CFArrayRef_Type || PyObject_TypeCheck((x), &CFArrayRef_Type)) - -typedef struct CFArrayRefObject { - PyObject_HEAD - CFArrayRef ob_itself; - void (*ob_freeit)(CFTypeRef ptr); -} CFArrayRefObject; - -PyObject *CFArrayRefObj_New(CFArrayRef itself) -{ - CFArrayRefObject *it; - if (itself == NULL) - { - PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); - return NULL; - } - it = PyObject_NEW(CFArrayRefObject, &CFArrayRef_Type); - if (it == NULL) return NULL; - /* XXXX Should we tp_init or tp_new our basetype? */ - it->ob_itself = itself; - it->ob_freeit = CFRelease; - return (PyObject *)it; -} - -int CFArrayRefObj_Convert(PyObject *v, CFArrayRef *p_itself) -{ - - if (v == Py_None) { *p_itself = NULL; return 1; } - /* Check for other CF objects here */ - - if (!CFArrayRefObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "CFArrayRef required"); - return 0; - } - *p_itself = ((CFArrayRefObject *)v)->ob_itself; - return 1; -} - -static void CFArrayRefObj_dealloc(CFArrayRefObject *self) -{ - if (self->ob_freeit && self->ob_itself) - { - self->ob_freeit((CFTypeRef)self->ob_itself); - self->ob_itself = NULL; - } - CFTypeRef_Type.tp_dealloc((PyObject *)self); -} - -static PyObject *CFArrayRefObj_CFArrayCreateCopy(CFArrayRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFArrayRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFArrayCreateCopy((CFAllocatorRef)NULL, - _self->ob_itself); - _res = Py_BuildValue("O&", - CFArrayRefObj_New, _rv); - return _res; -} - -static PyObject *CFArrayRefObj_CFArrayGetCount(CFArrayRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex _rv; -#ifndef CFArrayGetCount - PyMac_PRECHECK(CFArrayGetCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFArrayGetCount(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFArrayRefObj_CFStringCreateByCombiningStrings(CFArrayRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - CFStringRef separatorString; - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &separatorString)) - return NULL; - _rv = CFStringCreateByCombiningStrings((CFAllocatorRef)NULL, - _self->ob_itself, - separatorString); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyMethodDef CFArrayRefObj_methods[] = { - {"CFArrayCreateCopy", (PyCFunction)CFArrayRefObj_CFArrayCreateCopy, 1, - PyDoc_STR("() -> (CFArrayRef _rv)")}, - {"CFArrayGetCount", (PyCFunction)CFArrayRefObj_CFArrayGetCount, 1, - PyDoc_STR("() -> (CFIndex _rv)")}, - {"CFStringCreateByCombiningStrings", (PyCFunction)CFArrayRefObj_CFStringCreateByCombiningStrings, 1, - PyDoc_STR("(CFStringRef separatorString) -> (CFStringRef _rv)")}, - {NULL, NULL, 0} -}; - -#define CFArrayRefObj_getsetlist NULL - - -static int CFArrayRefObj_compare(CFArrayRefObject *self, CFArrayRefObject *other) -{ - /* XXXX Or should we use CFEqual?? */ - if ( self->ob_itself > other->ob_itself ) return 1; - if ( self->ob_itself < other->ob_itself ) return -1; - return 0; -} - -static PyObject * CFArrayRefObj_repr(CFArrayRefObject *self) -{ - char buf[100]; - sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); - return PyString_FromString(buf); -} - -static int CFArrayRefObj_hash(CFArrayRefObject *self) -{ - /* XXXX Or should we use CFHash?? */ - return (int)self->ob_itself; -} -static int CFArrayRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - CFArrayRef itself; - char *kw[] = {"itself", 0}; - - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFArrayRefObj_Convert, &itself)) - { - ((CFArrayRefObject *)_self)->ob_itself = itself; - return 0; - } - - /* Any CFTypeRef descendent is allowed as initializer too */ - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) - { - ((CFArrayRefObject *)_self)->ob_itself = itself; - return 0; - } - return -1; -} - -#define CFArrayRefObj_tp_alloc PyType_GenericAlloc - -static PyObject *CFArrayRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((CFArrayRefObject *)self)->ob_itself = NULL; - ((CFArrayRefObject *)self)->ob_freeit = CFRelease; - return self; -} - -#define CFArrayRefObj_tp_free PyObject_Del - - -PyTypeObject CFArrayRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CF.CFArrayRef", /*tp_name*/ - sizeof(CFArrayRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CFArrayRefObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CFArrayRefObj_compare, /*tp_compare*/ - (reprfunc) CFArrayRefObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CFArrayRefObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CFArrayRefObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CFArrayRefObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CFArrayRefObj_tp_init, /* tp_init */ - CFArrayRefObj_tp_alloc, /* tp_alloc */ - CFArrayRefObj_tp_new, /* tp_new */ - CFArrayRefObj_tp_free, /* tp_free */ -}; - -/* ------------------- End object type CFArrayRef ------------------- */ - - -/* ----------------- Object type CFMutableArrayRef ------------------ */ - -PyTypeObject CFMutableArrayRef_Type; - -#define CFMutableArrayRefObj_Check(x) ((x)->ob_type == &CFMutableArrayRef_Type || PyObject_TypeCheck((x), &CFMutableArrayRef_Type)) - -typedef struct CFMutableArrayRefObject { - PyObject_HEAD - CFMutableArrayRef ob_itself; - void (*ob_freeit)(CFTypeRef ptr); -} CFMutableArrayRefObject; - -PyObject *CFMutableArrayRefObj_New(CFMutableArrayRef itself) -{ - CFMutableArrayRefObject *it; - if (itself == NULL) - { - PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); - return NULL; - } - it = PyObject_NEW(CFMutableArrayRefObject, &CFMutableArrayRef_Type); - if (it == NULL) return NULL; - /* XXXX Should we tp_init or tp_new our basetype? */ - it->ob_itself = itself; - it->ob_freeit = CFRelease; - return (PyObject *)it; -} - -int CFMutableArrayRefObj_Convert(PyObject *v, CFMutableArrayRef *p_itself) -{ - - if (v == Py_None) { *p_itself = NULL; return 1; } - /* Check for other CF objects here */ - - if (!CFMutableArrayRefObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "CFMutableArrayRef required"); - return 0; - } - *p_itself = ((CFMutableArrayRefObject *)v)->ob_itself; - return 1; -} - -static void CFMutableArrayRefObj_dealloc(CFMutableArrayRefObject *self) -{ - if (self->ob_freeit && self->ob_itself) - { - self->ob_freeit((CFTypeRef)self->ob_itself); - self->ob_itself = NULL; - } - CFArrayRef_Type.tp_dealloc((PyObject *)self); -} - -static PyObject *CFMutableArrayRefObj_CFArrayRemoveValueAtIndex(CFMutableArrayRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex idx; -#ifndef CFArrayRemoveValueAtIndex - PyMac_PRECHECK(CFArrayRemoveValueAtIndex); -#endif - if (!PyArg_ParseTuple(_args, "l", - &idx)) - return NULL; - CFArrayRemoveValueAtIndex(_self->ob_itself, - idx); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableArrayRefObj_CFArrayRemoveAllValues(CFMutableArrayRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef CFArrayRemoveAllValues - PyMac_PRECHECK(CFArrayRemoveAllValues); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CFArrayRemoveAllValues(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableArrayRefObj_CFArrayExchangeValuesAtIndices(CFMutableArrayRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex idx1; - CFIndex idx2; -#ifndef CFArrayExchangeValuesAtIndices - PyMac_PRECHECK(CFArrayExchangeValuesAtIndices); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &idx1, - &idx2)) - return NULL; - CFArrayExchangeValuesAtIndices(_self->ob_itself, - idx1, - idx2); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableArrayRefObj_CFArrayAppendArray(CFMutableArrayRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFArrayRef otherArray; - CFRange otherRange; -#ifndef CFArrayAppendArray - PyMac_PRECHECK(CFArrayAppendArray); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CFArrayRefObj_Convert, &otherArray, - CFRange_Convert, &otherRange)) - return NULL; - CFArrayAppendArray(_self->ob_itself, - otherArray, - otherRange); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef CFMutableArrayRefObj_methods[] = { - {"CFArrayRemoveValueAtIndex", (PyCFunction)CFMutableArrayRefObj_CFArrayRemoveValueAtIndex, 1, - PyDoc_STR("(CFIndex idx) -> None")}, - {"CFArrayRemoveAllValues", (PyCFunction)CFMutableArrayRefObj_CFArrayRemoveAllValues, 1, - PyDoc_STR("() -> None")}, - {"CFArrayExchangeValuesAtIndices", (PyCFunction)CFMutableArrayRefObj_CFArrayExchangeValuesAtIndices, 1, - PyDoc_STR("(CFIndex idx1, CFIndex idx2) -> None")}, - {"CFArrayAppendArray", (PyCFunction)CFMutableArrayRefObj_CFArrayAppendArray, 1, - PyDoc_STR("(CFArrayRef otherArray, CFRange otherRange) -> None")}, - {NULL, NULL, 0} -}; - -#define CFMutableArrayRefObj_getsetlist NULL - - -static int CFMutableArrayRefObj_compare(CFMutableArrayRefObject *self, CFMutableArrayRefObject *other) -{ - /* XXXX Or should we use CFEqual?? */ - if ( self->ob_itself > other->ob_itself ) return 1; - if ( self->ob_itself < other->ob_itself ) return -1; - return 0; -} - -static PyObject * CFMutableArrayRefObj_repr(CFMutableArrayRefObject *self) -{ - char buf[100]; - sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); - return PyString_FromString(buf); -} - -static int CFMutableArrayRefObj_hash(CFMutableArrayRefObject *self) -{ - /* XXXX Or should we use CFHash?? */ - return (int)self->ob_itself; -} -static int CFMutableArrayRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - CFMutableArrayRef itself; - char *kw[] = {"itself", 0}; - - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableArrayRefObj_Convert, &itself)) - { - ((CFMutableArrayRefObject *)_self)->ob_itself = itself; - return 0; - } - - /* Any CFTypeRef descendent is allowed as initializer too */ - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) - { - ((CFMutableArrayRefObject *)_self)->ob_itself = itself; - return 0; - } - return -1; -} - -#define CFMutableArrayRefObj_tp_alloc PyType_GenericAlloc - -static PyObject *CFMutableArrayRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((CFMutableArrayRefObject *)self)->ob_itself = NULL; - ((CFMutableArrayRefObject *)self)->ob_freeit = CFRelease; - return self; -} - -#define CFMutableArrayRefObj_tp_free PyObject_Del - - -PyTypeObject CFMutableArrayRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CF.CFMutableArrayRef", /*tp_name*/ - sizeof(CFMutableArrayRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CFMutableArrayRefObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CFMutableArrayRefObj_compare, /*tp_compare*/ - (reprfunc) CFMutableArrayRefObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CFMutableArrayRefObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CFMutableArrayRefObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CFMutableArrayRefObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CFMutableArrayRefObj_tp_init, /* tp_init */ - CFMutableArrayRefObj_tp_alloc, /* tp_alloc */ - CFMutableArrayRefObj_tp_new, /* tp_new */ - CFMutableArrayRefObj_tp_free, /* tp_free */ -}; - -/* --------------- End object type CFMutableArrayRef ---------------- */ - - -/* ------------------ Object type CFDictionaryRef ------------------- */ - -PyTypeObject CFDictionaryRef_Type; - -#define CFDictionaryRefObj_Check(x) ((x)->ob_type == &CFDictionaryRef_Type || PyObject_TypeCheck((x), &CFDictionaryRef_Type)) - -typedef struct CFDictionaryRefObject { - PyObject_HEAD - CFDictionaryRef ob_itself; - void (*ob_freeit)(CFTypeRef ptr); -} CFDictionaryRefObject; - -PyObject *CFDictionaryRefObj_New(CFDictionaryRef itself) -{ - CFDictionaryRefObject *it; - if (itself == NULL) - { - PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); - return NULL; - } - it = PyObject_NEW(CFDictionaryRefObject, &CFDictionaryRef_Type); - if (it == NULL) return NULL; - /* XXXX Should we tp_init or tp_new our basetype? */ - it->ob_itself = itself; - it->ob_freeit = CFRelease; - return (PyObject *)it; -} - -int CFDictionaryRefObj_Convert(PyObject *v, CFDictionaryRef *p_itself) -{ - - if (v == Py_None) { *p_itself = NULL; return 1; } - /* Check for other CF objects here */ - - if (!CFDictionaryRefObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "CFDictionaryRef required"); - return 0; - } - *p_itself = ((CFDictionaryRefObject *)v)->ob_itself; - return 1; -} - -static void CFDictionaryRefObj_dealloc(CFDictionaryRefObject *self) -{ - if (self->ob_freeit && self->ob_itself) - { - self->ob_freeit((CFTypeRef)self->ob_itself); - self->ob_itself = NULL; - } - CFTypeRef_Type.tp_dealloc((PyObject *)self); -} - -static PyObject *CFDictionaryRefObj_CFDictionaryCreateCopy(CFDictionaryRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFDictionaryRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFDictionaryCreateCopy((CFAllocatorRef)NULL, - _self->ob_itself); - _res = Py_BuildValue("O&", - CFDictionaryRefObj_New, _rv); - return _res; -} - -static PyObject *CFDictionaryRefObj_CFDictionaryGetCount(CFDictionaryRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex _rv; -#ifndef CFDictionaryGetCount - PyMac_PRECHECK(CFDictionaryGetCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFDictionaryGetCount(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyMethodDef CFDictionaryRefObj_methods[] = { - {"CFDictionaryCreateCopy", (PyCFunction)CFDictionaryRefObj_CFDictionaryCreateCopy, 1, - PyDoc_STR("() -> (CFDictionaryRef _rv)")}, - {"CFDictionaryGetCount", (PyCFunction)CFDictionaryRefObj_CFDictionaryGetCount, 1, - PyDoc_STR("() -> (CFIndex _rv)")}, - {NULL, NULL, 0} -}; - -#define CFDictionaryRefObj_getsetlist NULL - - -static int CFDictionaryRefObj_compare(CFDictionaryRefObject *self, CFDictionaryRefObject *other) -{ - /* XXXX Or should we use CFEqual?? */ - if ( self->ob_itself > other->ob_itself ) return 1; - if ( self->ob_itself < other->ob_itself ) return -1; - return 0; -} - -static PyObject * CFDictionaryRefObj_repr(CFDictionaryRefObject *self) -{ - char buf[100]; - sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); - return PyString_FromString(buf); -} - -static int CFDictionaryRefObj_hash(CFDictionaryRefObject *self) -{ - /* XXXX Or should we use CFHash?? */ - return (int)self->ob_itself; -} -static int CFDictionaryRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - CFDictionaryRef itself; - char *kw[] = {"itself", 0}; - - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFDictionaryRefObj_Convert, &itself)) - { - ((CFDictionaryRefObject *)_self)->ob_itself = itself; - return 0; - } - - /* Any CFTypeRef descendent is allowed as initializer too */ - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) - { - ((CFDictionaryRefObject *)_self)->ob_itself = itself; - return 0; - } - return -1; -} - -#define CFDictionaryRefObj_tp_alloc PyType_GenericAlloc - -static PyObject *CFDictionaryRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((CFDictionaryRefObject *)self)->ob_itself = NULL; - ((CFDictionaryRefObject *)self)->ob_freeit = CFRelease; - return self; -} - -#define CFDictionaryRefObj_tp_free PyObject_Del - - -PyTypeObject CFDictionaryRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CF.CFDictionaryRef", /*tp_name*/ - sizeof(CFDictionaryRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CFDictionaryRefObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CFDictionaryRefObj_compare, /*tp_compare*/ - (reprfunc) CFDictionaryRefObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CFDictionaryRefObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CFDictionaryRefObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CFDictionaryRefObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CFDictionaryRefObj_tp_init, /* tp_init */ - CFDictionaryRefObj_tp_alloc, /* tp_alloc */ - CFDictionaryRefObj_tp_new, /* tp_new */ - CFDictionaryRefObj_tp_free, /* tp_free */ -}; - -/* ---------------- End object type CFDictionaryRef ----------------- */ - - -/* --------------- Object type CFMutableDictionaryRef --------------- */ - -PyTypeObject CFMutableDictionaryRef_Type; - -#define CFMutableDictionaryRefObj_Check(x) ((x)->ob_type == &CFMutableDictionaryRef_Type || PyObject_TypeCheck((x), &CFMutableDictionaryRef_Type)) - -typedef struct CFMutableDictionaryRefObject { - PyObject_HEAD - CFMutableDictionaryRef ob_itself; - void (*ob_freeit)(CFTypeRef ptr); -} CFMutableDictionaryRefObject; - -PyObject *CFMutableDictionaryRefObj_New(CFMutableDictionaryRef itself) -{ - CFMutableDictionaryRefObject *it; - if (itself == NULL) - { - PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); - return NULL; - } - it = PyObject_NEW(CFMutableDictionaryRefObject, &CFMutableDictionaryRef_Type); - if (it == NULL) return NULL; - /* XXXX Should we tp_init or tp_new our basetype? */ - it->ob_itself = itself; - it->ob_freeit = CFRelease; - return (PyObject *)it; -} - -int CFMutableDictionaryRefObj_Convert(PyObject *v, CFMutableDictionaryRef *p_itself) -{ - - if (v == Py_None) { *p_itself = NULL; return 1; } - /* Check for other CF objects here */ - - if (!CFMutableDictionaryRefObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "CFMutableDictionaryRef required"); - return 0; - } - *p_itself = ((CFMutableDictionaryRefObject *)v)->ob_itself; - return 1; -} - -static void CFMutableDictionaryRefObj_dealloc(CFMutableDictionaryRefObject *self) -{ - if (self->ob_freeit && self->ob_itself) - { - self->ob_freeit((CFTypeRef)self->ob_itself); - self->ob_itself = NULL; - } - CFDictionaryRef_Type.tp_dealloc((PyObject *)self); -} - -static PyObject *CFMutableDictionaryRefObj_CFDictionaryRemoveAllValues(CFMutableDictionaryRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef CFDictionaryRemoveAllValues - PyMac_PRECHECK(CFDictionaryRemoveAllValues); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CFDictionaryRemoveAllValues(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef CFMutableDictionaryRefObj_methods[] = { - {"CFDictionaryRemoveAllValues", (PyCFunction)CFMutableDictionaryRefObj_CFDictionaryRemoveAllValues, 1, - PyDoc_STR("() -> None")}, - {NULL, NULL, 0} -}; - -#define CFMutableDictionaryRefObj_getsetlist NULL - - -static int CFMutableDictionaryRefObj_compare(CFMutableDictionaryRefObject *self, CFMutableDictionaryRefObject *other) -{ - /* XXXX Or should we use CFEqual?? */ - if ( self->ob_itself > other->ob_itself ) return 1; - if ( self->ob_itself < other->ob_itself ) return -1; - return 0; -} - -static PyObject * CFMutableDictionaryRefObj_repr(CFMutableDictionaryRefObject *self) -{ - char buf[100]; - sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); - return PyString_FromString(buf); -} - -static int CFMutableDictionaryRefObj_hash(CFMutableDictionaryRefObject *self) -{ - /* XXXX Or should we use CFHash?? */ - return (int)self->ob_itself; -} -static int CFMutableDictionaryRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - CFMutableDictionaryRef itself; - char *kw[] = {"itself", 0}; - - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableDictionaryRefObj_Convert, &itself)) - { - ((CFMutableDictionaryRefObject *)_self)->ob_itself = itself; - return 0; - } - - /* Any CFTypeRef descendent is allowed as initializer too */ - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) - { - ((CFMutableDictionaryRefObject *)_self)->ob_itself = itself; - return 0; - } - return -1; -} - -#define CFMutableDictionaryRefObj_tp_alloc PyType_GenericAlloc - -static PyObject *CFMutableDictionaryRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((CFMutableDictionaryRefObject *)self)->ob_itself = NULL; - ((CFMutableDictionaryRefObject *)self)->ob_freeit = CFRelease; - return self; -} - -#define CFMutableDictionaryRefObj_tp_free PyObject_Del - - -PyTypeObject CFMutableDictionaryRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CF.CFMutableDictionaryRef", /*tp_name*/ - sizeof(CFMutableDictionaryRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CFMutableDictionaryRefObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CFMutableDictionaryRefObj_compare, /*tp_compare*/ - (reprfunc) CFMutableDictionaryRefObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CFMutableDictionaryRefObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CFMutableDictionaryRefObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CFMutableDictionaryRefObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CFMutableDictionaryRefObj_tp_init, /* tp_init */ - CFMutableDictionaryRefObj_tp_alloc, /* tp_alloc */ - CFMutableDictionaryRefObj_tp_new, /* tp_new */ - CFMutableDictionaryRefObj_tp_free, /* tp_free */ -}; - -/* ------------- End object type CFMutableDictionaryRef ------------- */ - - -/* --------------------- Object type CFDataRef ---------------------- */ - -PyTypeObject CFDataRef_Type; - -#define CFDataRefObj_Check(x) ((x)->ob_type == &CFDataRef_Type || PyObject_TypeCheck((x), &CFDataRef_Type)) - -typedef struct CFDataRefObject { - PyObject_HEAD - CFDataRef ob_itself; - void (*ob_freeit)(CFTypeRef ptr); -} CFDataRefObject; - -PyObject *CFDataRefObj_New(CFDataRef itself) -{ - CFDataRefObject *it; - if (itself == NULL) - { - PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); - return NULL; - } - it = PyObject_NEW(CFDataRefObject, &CFDataRef_Type); - if (it == NULL) return NULL; - /* XXXX Should we tp_init or tp_new our basetype? */ - it->ob_itself = itself; - it->ob_freeit = CFRelease; - return (PyObject *)it; -} - -int CFDataRefObj_Convert(PyObject *v, CFDataRef *p_itself) -{ - - if (v == Py_None) { *p_itself = NULL; return 1; } - if (PyString_Check(v)) { - char *cStr; - Py_ssize_t cLen; - if( PyString_AsStringAndSize(v, &cStr, &cLen) < 0 ) return 0; - *p_itself = CFDataCreate((CFAllocatorRef)NULL, (unsigned char *)cStr, cLen); - return 1; - } - - if (!CFDataRefObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "CFDataRef required"); - return 0; - } - *p_itself = ((CFDataRefObject *)v)->ob_itself; - return 1; -} - -static void CFDataRefObj_dealloc(CFDataRefObject *self) -{ - if (self->ob_freeit && self->ob_itself) - { - self->ob_freeit((CFTypeRef)self->ob_itself); - self->ob_itself = NULL; - } - CFTypeRef_Type.tp_dealloc((PyObject *)self); -} - -static PyObject *CFDataRefObj_CFDataCreateCopy(CFDataRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFDataRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFDataCreateCopy((CFAllocatorRef)NULL, - _self->ob_itself); - _res = Py_BuildValue("O&", - CFDataRefObj_New, _rv); - return _res; -} - -static PyObject *CFDataRefObj_CFDataGetLength(CFDataRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex _rv; -#ifndef CFDataGetLength - PyMac_PRECHECK(CFDataGetLength); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFDataGetLength(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFDataRefObj_CFStringCreateFromExternalRepresentation(CFDataRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - CFStringEncoding encoding; - if (!PyArg_ParseTuple(_args, "l", - &encoding)) - return NULL; - _rv = CFStringCreateFromExternalRepresentation((CFAllocatorRef)NULL, - _self->ob_itself, - encoding); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFDataRefObj_CFDataGetData(CFDataRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - int size = CFDataGetLength(_self->ob_itself); - char *data = (char *)CFDataGetBytePtr(_self->ob_itself); - - _res = (PyObject *)PyString_FromStringAndSize(data, size); - return _res; - -} - -static PyMethodDef CFDataRefObj_methods[] = { - {"CFDataCreateCopy", (PyCFunction)CFDataRefObj_CFDataCreateCopy, 1, - PyDoc_STR("() -> (CFDataRef _rv)")}, - {"CFDataGetLength", (PyCFunction)CFDataRefObj_CFDataGetLength, 1, - PyDoc_STR("() -> (CFIndex _rv)")}, - {"CFStringCreateFromExternalRepresentation", (PyCFunction)CFDataRefObj_CFStringCreateFromExternalRepresentation, 1, - PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")}, - {"CFDataGetData", (PyCFunction)CFDataRefObj_CFDataGetData, 1, - PyDoc_STR("() -> (string _rv)")}, - {NULL, NULL, 0} -}; - -#define CFDataRefObj_getsetlist NULL - - -static int CFDataRefObj_compare(CFDataRefObject *self, CFDataRefObject *other) -{ - /* XXXX Or should we use CFEqual?? */ - if ( self->ob_itself > other->ob_itself ) return 1; - if ( self->ob_itself < other->ob_itself ) return -1; - return 0; -} - -static PyObject * CFDataRefObj_repr(CFDataRefObject *self) -{ - char buf[100]; - sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); - return PyString_FromString(buf); -} - -static int CFDataRefObj_hash(CFDataRefObject *self) -{ - /* XXXX Or should we use CFHash?? */ - return (int)self->ob_itself; -} -static int CFDataRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - CFDataRef itself; - char *kw[] = {"itself", 0}; - - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFDataRefObj_Convert, &itself)) - { - ((CFDataRefObject *)_self)->ob_itself = itself; - return 0; - } - - /* Any CFTypeRef descendent is allowed as initializer too */ - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) - { - ((CFDataRefObject *)_self)->ob_itself = itself; - return 0; - } - return -1; -} - -#define CFDataRefObj_tp_alloc PyType_GenericAlloc - -static PyObject *CFDataRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((CFDataRefObject *)self)->ob_itself = NULL; - ((CFDataRefObject *)self)->ob_freeit = CFRelease; - return self; -} - -#define CFDataRefObj_tp_free PyObject_Del - - -PyTypeObject CFDataRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CF.CFDataRef", /*tp_name*/ - sizeof(CFDataRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CFDataRefObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CFDataRefObj_compare, /*tp_compare*/ - (reprfunc) CFDataRefObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CFDataRefObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CFDataRefObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CFDataRefObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CFDataRefObj_tp_init, /* tp_init */ - CFDataRefObj_tp_alloc, /* tp_alloc */ - CFDataRefObj_tp_new, /* tp_new */ - CFDataRefObj_tp_free, /* tp_free */ -}; - -/* ------------------- End object type CFDataRef -------------------- */ - - -/* ------------------ Object type CFMutableDataRef ------------------ */ - -PyTypeObject CFMutableDataRef_Type; - -#define CFMutableDataRefObj_Check(x) ((x)->ob_type == &CFMutableDataRef_Type || PyObject_TypeCheck((x), &CFMutableDataRef_Type)) - -typedef struct CFMutableDataRefObject { - PyObject_HEAD - CFMutableDataRef ob_itself; - void (*ob_freeit)(CFTypeRef ptr); -} CFMutableDataRefObject; - -PyObject *CFMutableDataRefObj_New(CFMutableDataRef itself) -{ - CFMutableDataRefObject *it; - if (itself == NULL) - { - PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); - return NULL; - } - it = PyObject_NEW(CFMutableDataRefObject, &CFMutableDataRef_Type); - if (it == NULL) return NULL; - /* XXXX Should we tp_init or tp_new our basetype? */ - it->ob_itself = itself; - it->ob_freeit = CFRelease; - return (PyObject *)it; -} - -int CFMutableDataRefObj_Convert(PyObject *v, CFMutableDataRef *p_itself) -{ - - if (v == Py_None) { *p_itself = NULL; return 1; } - /* Check for other CF objects here */ - - if (!CFMutableDataRefObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "CFMutableDataRef required"); - return 0; - } - *p_itself = ((CFMutableDataRefObject *)v)->ob_itself; - return 1; -} - -static void CFMutableDataRefObj_dealloc(CFMutableDataRefObject *self) -{ - if (self->ob_freeit && self->ob_itself) - { - self->ob_freeit((CFTypeRef)self->ob_itself); - self->ob_itself = NULL; - } - CFDataRef_Type.tp_dealloc((PyObject *)self); -} - -static PyObject *CFMutableDataRefObj_CFDataSetLength(CFMutableDataRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex length; -#ifndef CFDataSetLength - PyMac_PRECHECK(CFDataSetLength); -#endif - if (!PyArg_ParseTuple(_args, "l", - &length)) - return NULL; - CFDataSetLength(_self->ob_itself, - length); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableDataRefObj_CFDataIncreaseLength(CFMutableDataRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex extraLength; -#ifndef CFDataIncreaseLength - PyMac_PRECHECK(CFDataIncreaseLength); -#endif - if (!PyArg_ParseTuple(_args, "l", - &extraLength)) - return NULL; - CFDataIncreaseLength(_self->ob_itself, - extraLength); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableDataRefObj_CFDataAppendBytes(CFMutableDataRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - unsigned char *bytes__in__; - long bytes__len__; - int bytes__in_len__; -#ifndef CFDataAppendBytes - PyMac_PRECHECK(CFDataAppendBytes); -#endif - if (!PyArg_ParseTuple(_args, "s#", - &bytes__in__, &bytes__in_len__)) - return NULL; - bytes__len__ = bytes__in_len__; - CFDataAppendBytes(_self->ob_itself, - bytes__in__, bytes__len__); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableDataRefObj_CFDataReplaceBytes(CFMutableDataRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFRange range; - unsigned char *newBytes__in__; - long newBytes__len__; - int newBytes__in_len__; -#ifndef CFDataReplaceBytes - PyMac_PRECHECK(CFDataReplaceBytes); -#endif - if (!PyArg_ParseTuple(_args, "O&s#", - CFRange_Convert, &range, - &newBytes__in__, &newBytes__in_len__)) - return NULL; - newBytes__len__ = newBytes__in_len__; - CFDataReplaceBytes(_self->ob_itself, - range, - newBytes__in__, newBytes__len__); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableDataRefObj_CFDataDeleteBytes(CFMutableDataRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFRange range; -#ifndef CFDataDeleteBytes - PyMac_PRECHECK(CFDataDeleteBytes); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFRange_Convert, &range)) - return NULL; - CFDataDeleteBytes(_self->ob_itself, - range); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef CFMutableDataRefObj_methods[] = { - {"CFDataSetLength", (PyCFunction)CFMutableDataRefObj_CFDataSetLength, 1, - PyDoc_STR("(CFIndex length) -> None")}, - {"CFDataIncreaseLength", (PyCFunction)CFMutableDataRefObj_CFDataIncreaseLength, 1, - PyDoc_STR("(CFIndex extraLength) -> None")}, - {"CFDataAppendBytes", (PyCFunction)CFMutableDataRefObj_CFDataAppendBytes, 1, - PyDoc_STR("(Buffer bytes) -> None")}, - {"CFDataReplaceBytes", (PyCFunction)CFMutableDataRefObj_CFDataReplaceBytes, 1, - PyDoc_STR("(CFRange range, Buffer newBytes) -> None")}, - {"CFDataDeleteBytes", (PyCFunction)CFMutableDataRefObj_CFDataDeleteBytes, 1, - PyDoc_STR("(CFRange range) -> None")}, - {NULL, NULL, 0} -}; - -#define CFMutableDataRefObj_getsetlist NULL - - -static int CFMutableDataRefObj_compare(CFMutableDataRefObject *self, CFMutableDataRefObject *other) -{ - /* XXXX Or should we use CFEqual?? */ - if ( self->ob_itself > other->ob_itself ) return 1; - if ( self->ob_itself < other->ob_itself ) return -1; - return 0; -} - -static PyObject * CFMutableDataRefObj_repr(CFMutableDataRefObject *self) -{ - char buf[100]; - sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); - return PyString_FromString(buf); -} - -static int CFMutableDataRefObj_hash(CFMutableDataRefObject *self) -{ - /* XXXX Or should we use CFHash?? */ - return (int)self->ob_itself; -} -static int CFMutableDataRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - CFMutableDataRef itself; - char *kw[] = {"itself", 0}; - - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableDataRefObj_Convert, &itself)) - { - ((CFMutableDataRefObject *)_self)->ob_itself = itself; - return 0; - } - - /* Any CFTypeRef descendent is allowed as initializer too */ - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) - { - ((CFMutableDataRefObject *)_self)->ob_itself = itself; - return 0; - } - return -1; -} - -#define CFMutableDataRefObj_tp_alloc PyType_GenericAlloc - -static PyObject *CFMutableDataRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((CFMutableDataRefObject *)self)->ob_itself = NULL; - ((CFMutableDataRefObject *)self)->ob_freeit = CFRelease; - return self; -} - -#define CFMutableDataRefObj_tp_free PyObject_Del - - -PyTypeObject CFMutableDataRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CF.CFMutableDataRef", /*tp_name*/ - sizeof(CFMutableDataRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CFMutableDataRefObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CFMutableDataRefObj_compare, /*tp_compare*/ - (reprfunc) CFMutableDataRefObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CFMutableDataRefObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CFMutableDataRefObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CFMutableDataRefObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CFMutableDataRefObj_tp_init, /* tp_init */ - CFMutableDataRefObj_tp_alloc, /* tp_alloc */ - CFMutableDataRefObj_tp_new, /* tp_new */ - CFMutableDataRefObj_tp_free, /* tp_free */ -}; - -/* ---------------- End object type CFMutableDataRef ---------------- */ - - -/* -------------------- Object type CFStringRef --------------------- */ - -PyTypeObject CFStringRef_Type; - -#define CFStringRefObj_Check(x) ((x)->ob_type == &CFStringRef_Type || PyObject_TypeCheck((x), &CFStringRef_Type)) - -typedef struct CFStringRefObject { - PyObject_HEAD - CFStringRef ob_itself; - void (*ob_freeit)(CFTypeRef ptr); -} CFStringRefObject; - -PyObject *CFStringRefObj_New(CFStringRef itself) -{ - CFStringRefObject *it; - if (itself == NULL) - { - PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); - return NULL; - } - it = PyObject_NEW(CFStringRefObject, &CFStringRef_Type); - if (it == NULL) return NULL; - /* XXXX Should we tp_init or tp_new our basetype? */ - it->ob_itself = itself; - it->ob_freeit = CFRelease; - return (PyObject *)it; -} - -int CFStringRefObj_Convert(PyObject *v, CFStringRef *p_itself) -{ - - if (v == Py_None) { *p_itself = NULL; return 1; } - if (PyString_Check(v)) { - char *cStr; - if (!PyArg_Parse(v, "es", "ascii", &cStr)) - return 0; - *p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII); - PyMem_Free(cStr); - return 1; - } - if (PyUnicode_Check(v)) { - /* We use the CF types here, if Python was configured differently that will give an error */ - CFIndex size = PyUnicode_GetSize(v); - UniChar *unichars = PyUnicode_AsUnicode(v); - if (!unichars) return 0; - *p_itself = CFStringCreateWithCharacters((CFAllocatorRef)NULL, unichars, size); - return 1; - } - - - if (!CFStringRefObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "CFStringRef required"); - return 0; - } - *p_itself = ((CFStringRefObject *)v)->ob_itself; - return 1; -} - -static void CFStringRefObj_dealloc(CFStringRefObject *self) -{ - if (self->ob_freeit && self->ob_itself) - { - self->ob_freeit((CFTypeRef)self->ob_itself); - self->ob_itself = NULL; - } - CFTypeRef_Type.tp_dealloc((PyObject *)self); -} - -static PyObject *CFStringRefObj_CFStringCreateWithSubstring(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - CFRange range; - if (!PyArg_ParseTuple(_args, "O&", - CFRange_Convert, &range)) - return NULL; - _rv = CFStringCreateWithSubstring((CFAllocatorRef)NULL, - _self->ob_itself, - range); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringCreateCopy(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFStringCreateCopy((CFAllocatorRef)NULL, - _self->ob_itself); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringGetLength(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex _rv; -#ifndef CFStringGetLength - PyMac_PRECHECK(CFStringGetLength); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFStringGetLength(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringGetBytes(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex _rv; - CFRange range; - CFStringEncoding encoding; - UInt8 lossByte; - Boolean isExternalRepresentation; - UInt8 buffer; - CFIndex maxBufLen; - CFIndex usedBufLen; -#ifndef CFStringGetBytes - PyMac_PRECHECK(CFStringGetBytes); -#endif - if (!PyArg_ParseTuple(_args, "O&lbll", - CFRange_Convert, &range, - &encoding, - &lossByte, - &isExternalRepresentation, - &maxBufLen)) - return NULL; - _rv = CFStringGetBytes(_self->ob_itself, - range, - encoding, - lossByte, - isExternalRepresentation, - &buffer, - maxBufLen, - &usedBufLen); - _res = Py_BuildValue("lbl", - _rv, - buffer, - usedBufLen); - return _res; -} - -static PyObject *CFStringRefObj_CFStringCreateExternalRepresentation(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFDataRef _rv; - CFStringEncoding encoding; - UInt8 lossByte; - if (!PyArg_ParseTuple(_args, "lb", - &encoding, - &lossByte)) - return NULL; - _rv = CFStringCreateExternalRepresentation((CFAllocatorRef)NULL, - _self->ob_itself, - encoding, - lossByte); - _res = Py_BuildValue("O&", - CFDataRefObj_New, _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringGetSmallestEncoding(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringEncoding _rv; -#ifndef CFStringGetSmallestEncoding - PyMac_PRECHECK(CFStringGetSmallestEncoding); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFStringGetSmallestEncoding(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringGetFastestEncoding(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringEncoding _rv; -#ifndef CFStringGetFastestEncoding - PyMac_PRECHECK(CFStringGetFastestEncoding); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFStringGetFastestEncoding(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringCompareWithOptions(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFComparisonResult _rv; - CFStringRef theString2; - CFRange rangeToCompare; - CFOptionFlags compareOptions; -#ifndef CFStringCompareWithOptions - PyMac_PRECHECK(CFStringCompareWithOptions); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - CFStringRefObj_Convert, &theString2, - CFRange_Convert, &rangeToCompare, - &compareOptions)) - return NULL; - _rv = CFStringCompareWithOptions(_self->ob_itself, - theString2, - rangeToCompare, - compareOptions); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringCompare(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFComparisonResult _rv; - CFStringRef theString2; - CFOptionFlags compareOptions; -#ifndef CFStringCompare - PyMac_PRECHECK(CFStringCompare); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CFStringRefObj_Convert, &theString2, - &compareOptions)) - return NULL; - _rv = CFStringCompare(_self->ob_itself, - theString2, - compareOptions); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringFindWithOptions(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - CFStringRef stringToFind; - CFRange rangeToSearch; - CFOptionFlags searchOptions; - CFRange result; -#ifndef CFStringFindWithOptions - PyMac_PRECHECK(CFStringFindWithOptions); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - CFStringRefObj_Convert, &stringToFind, - CFRange_Convert, &rangeToSearch, - &searchOptions)) - return NULL; - _rv = CFStringFindWithOptions(_self->ob_itself, - stringToFind, - rangeToSearch, - searchOptions, - &result); - _res = Py_BuildValue("lO&", - _rv, - CFRange_New, result); - return _res; -} - -static PyObject *CFStringRefObj_CFStringCreateArrayWithFindResults(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFArrayRef _rv; - CFStringRef stringToFind; - CFRange rangeToSearch; - CFOptionFlags compareOptions; - if (!PyArg_ParseTuple(_args, "O&O&l", - CFStringRefObj_Convert, &stringToFind, - CFRange_Convert, &rangeToSearch, - &compareOptions)) - return NULL; - _rv = CFStringCreateArrayWithFindResults((CFAllocatorRef)NULL, - _self->ob_itself, - stringToFind, - rangeToSearch, - compareOptions); - _res = Py_BuildValue("O&", - CFArrayRefObj_New, _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringFind(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFRange _rv; - CFStringRef stringToFind; - CFOptionFlags compareOptions; -#ifndef CFStringFind - PyMac_PRECHECK(CFStringFind); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CFStringRefObj_Convert, &stringToFind, - &compareOptions)) - return NULL; - _rv = CFStringFind(_self->ob_itself, - stringToFind, - compareOptions); - _res = Py_BuildValue("O&", - CFRange_New, _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringHasPrefix(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - CFStringRef prefix; -#ifndef CFStringHasPrefix - PyMac_PRECHECK(CFStringHasPrefix); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &prefix)) - return NULL; - _rv = CFStringHasPrefix(_self->ob_itself, - prefix); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringHasSuffix(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - CFStringRef suffix; -#ifndef CFStringHasSuffix - PyMac_PRECHECK(CFStringHasSuffix); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &suffix)) - return NULL; - _rv = CFStringHasSuffix(_self->ob_itself, - suffix); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringGetLineBounds(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFRange range; - CFIndex lineBeginIndex; - CFIndex lineEndIndex; - CFIndex contentsEndIndex; -#ifndef CFStringGetLineBounds - PyMac_PRECHECK(CFStringGetLineBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFRange_Convert, &range)) - return NULL; - CFStringGetLineBounds(_self->ob_itself, - range, - &lineBeginIndex, - &lineEndIndex, - &contentsEndIndex); - _res = Py_BuildValue("lll", - lineBeginIndex, - lineEndIndex, - contentsEndIndex); - return _res; -} - -static PyObject *CFStringRefObj_CFStringCreateArrayBySeparatingStrings(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFArrayRef _rv; - CFStringRef separatorString; - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &separatorString)) - return NULL; - _rv = CFStringCreateArrayBySeparatingStrings((CFAllocatorRef)NULL, - _self->ob_itself, - separatorString); - _res = Py_BuildValue("O&", - CFArrayRefObj_New, _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringGetIntValue(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 _rv; -#ifndef CFStringGetIntValue - PyMac_PRECHECK(CFStringGetIntValue); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFStringGetIntValue(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringGetDoubleValue(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - double _rv; -#ifndef CFStringGetDoubleValue - PyMac_PRECHECK(CFStringGetDoubleValue); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFStringGetDoubleValue(_self->ob_itself); - _res = Py_BuildValue("d", - _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringConvertIANACharSetNameToEncoding(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringEncoding _rv; -#ifndef CFStringConvertIANACharSetNameToEncoding - PyMac_PRECHECK(CFStringConvertIANACharSetNameToEncoding); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFStringConvertIANACharSetNameToEncoding(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFShowStr(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef CFShowStr - PyMac_PRECHECK(CFShowStr); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CFShowStr(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFStringRefObj_CFURLCreateWithString(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFURLRef _rv; - CFURLRef baseURL; - if (!PyArg_ParseTuple(_args, "O&", - OptionalCFURLRefObj_Convert, &baseURL)) - return NULL; - _rv = CFURLCreateWithString((CFAllocatorRef)NULL, - _self->ob_itself, - baseURL); - _res = Py_BuildValue("O&", - CFURLRefObj_New, _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFURLCreateWithFileSystemPath(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFURLRef _rv; - CFURLPathStyle pathStyle; - Boolean isDirectory; - if (!PyArg_ParseTuple(_args, "ll", - &pathStyle, - &isDirectory)) - return NULL; - _rv = CFURLCreateWithFileSystemPath((CFAllocatorRef)NULL, - _self->ob_itself, - pathStyle, - isDirectory); - _res = Py_BuildValue("O&", - CFURLRefObj_New, _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFURLCreateWithFileSystemPathRelativeToBase(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFURLRef _rv; - CFURLPathStyle pathStyle; - Boolean isDirectory; - CFURLRef baseURL; - if (!PyArg_ParseTuple(_args, "llO&", - &pathStyle, - &isDirectory, - OptionalCFURLRefObj_Convert, &baseURL)) - return NULL; - _rv = CFURLCreateWithFileSystemPathRelativeToBase((CFAllocatorRef)NULL, - _self->ob_itself, - pathStyle, - isDirectory, - baseURL); - _res = Py_BuildValue("O&", - CFURLRefObj_New, _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFURLCreateStringByReplacingPercentEscapes(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - CFStringRef charactersToLeaveEscaped; - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &charactersToLeaveEscaped)) - return NULL; - _rv = CFURLCreateStringByReplacingPercentEscapes((CFAllocatorRef)NULL, - _self->ob_itself, - charactersToLeaveEscaped); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFURLCreateStringByAddingPercentEscapes(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - CFStringRef charactersToLeaveUnescaped; - CFStringRef legalURLCharactersToBeEscaped; - CFStringEncoding encoding; - if (!PyArg_ParseTuple(_args, "O&O&l", - CFStringRefObj_Convert, &charactersToLeaveUnescaped, - CFStringRefObj_Convert, &legalURLCharactersToBeEscaped, - &encoding)) - return NULL; - _rv = CFURLCreateStringByAddingPercentEscapes((CFAllocatorRef)NULL, - _self->ob_itself, - charactersToLeaveUnescaped, - legalURLCharactersToBeEscaped, - encoding); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFStringRefObj_CFStringGetString(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - int size = CFStringGetLength(_self->ob_itself)+1; - char *data = malloc(size); - - if( data == NULL ) return PyErr_NoMemory(); - if ( CFStringGetCString(_self->ob_itself, data, size, 0) ) { - _res = (PyObject *)PyString_FromString(data); - } else { - PyErr_SetString(PyExc_RuntimeError, "CFStringGetCString could not fit the string"); - _res = NULL; - } - free(data); - return _res; - -} - -static PyObject *CFStringRefObj_CFStringGetUnicode(CFStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - int size = CFStringGetLength(_self->ob_itself)+1; - Py_UNICODE *data = malloc(size*sizeof(Py_UNICODE)); - CFRange range; - - range.location = 0; - range.length = size; - if( data == NULL ) return PyErr_NoMemory(); - CFStringGetCharacters(_self->ob_itself, range, data); - _res = (PyObject *)PyUnicode_FromUnicode(data, size-1); - free(data); - return _res; - -} - -static PyMethodDef CFStringRefObj_methods[] = { - {"CFStringCreateWithSubstring", (PyCFunction)CFStringRefObj_CFStringCreateWithSubstring, 1, - PyDoc_STR("(CFRange range) -> (CFStringRef _rv)")}, - {"CFStringCreateCopy", (PyCFunction)CFStringRefObj_CFStringCreateCopy, 1, - PyDoc_STR("() -> (CFStringRef _rv)")}, - {"CFStringGetLength", (PyCFunction)CFStringRefObj_CFStringGetLength, 1, - PyDoc_STR("() -> (CFIndex _rv)")}, - {"CFStringGetBytes", (PyCFunction)CFStringRefObj_CFStringGetBytes, 1, - PyDoc_STR("(CFRange range, CFStringEncoding encoding, UInt8 lossByte, Boolean isExternalRepresentation, CFIndex maxBufLen) -> (CFIndex _rv, UInt8 buffer, CFIndex usedBufLen)")}, - {"CFStringCreateExternalRepresentation", (PyCFunction)CFStringRefObj_CFStringCreateExternalRepresentation, 1, - PyDoc_STR("(CFStringEncoding encoding, UInt8 lossByte) -> (CFDataRef _rv)")}, - {"CFStringGetSmallestEncoding", (PyCFunction)CFStringRefObj_CFStringGetSmallestEncoding, 1, - PyDoc_STR("() -> (CFStringEncoding _rv)")}, - {"CFStringGetFastestEncoding", (PyCFunction)CFStringRefObj_CFStringGetFastestEncoding, 1, - PyDoc_STR("() -> (CFStringEncoding _rv)")}, - {"CFStringCompareWithOptions", (PyCFunction)CFStringRefObj_CFStringCompareWithOptions, 1, - PyDoc_STR("(CFStringRef theString2, CFRange rangeToCompare, CFOptionFlags compareOptions) -> (CFComparisonResult _rv)")}, - {"CFStringCompare", (PyCFunction)CFStringRefObj_CFStringCompare, 1, - PyDoc_STR("(CFStringRef theString2, CFOptionFlags compareOptions) -> (CFComparisonResult _rv)")}, - {"CFStringFindWithOptions", (PyCFunction)CFStringRefObj_CFStringFindWithOptions, 1, - PyDoc_STR("(CFStringRef stringToFind, CFRange rangeToSearch, CFOptionFlags searchOptions) -> (Boolean _rv, CFRange result)")}, - {"CFStringCreateArrayWithFindResults", (PyCFunction)CFStringRefObj_CFStringCreateArrayWithFindResults, 1, - PyDoc_STR("(CFStringRef stringToFind, CFRange rangeToSearch, CFOptionFlags compareOptions) -> (CFArrayRef _rv)")}, - {"CFStringFind", (PyCFunction)CFStringRefObj_CFStringFind, 1, - PyDoc_STR("(CFStringRef stringToFind, CFOptionFlags compareOptions) -> (CFRange _rv)")}, - {"CFStringHasPrefix", (PyCFunction)CFStringRefObj_CFStringHasPrefix, 1, - PyDoc_STR("(CFStringRef prefix) -> (Boolean _rv)")}, - {"CFStringHasSuffix", (PyCFunction)CFStringRefObj_CFStringHasSuffix, 1, - PyDoc_STR("(CFStringRef suffix) -> (Boolean _rv)")}, - {"CFStringGetLineBounds", (PyCFunction)CFStringRefObj_CFStringGetLineBounds, 1, - PyDoc_STR("(CFRange range) -> (CFIndex lineBeginIndex, CFIndex lineEndIndex, CFIndex contentsEndIndex)")}, - {"CFStringCreateArrayBySeparatingStrings", (PyCFunction)CFStringRefObj_CFStringCreateArrayBySeparatingStrings, 1, - PyDoc_STR("(CFStringRef separatorString) -> (CFArrayRef _rv)")}, - {"CFStringGetIntValue", (PyCFunction)CFStringRefObj_CFStringGetIntValue, 1, - PyDoc_STR("() -> (SInt32 _rv)")}, - {"CFStringGetDoubleValue", (PyCFunction)CFStringRefObj_CFStringGetDoubleValue, 1, - PyDoc_STR("() -> (double _rv)")}, - {"CFStringConvertIANACharSetNameToEncoding", (PyCFunction)CFStringRefObj_CFStringConvertIANACharSetNameToEncoding, 1, - PyDoc_STR("() -> (CFStringEncoding _rv)")}, - {"CFShowStr", (PyCFunction)CFStringRefObj_CFShowStr, 1, - PyDoc_STR("() -> None")}, - {"CFURLCreateWithString", (PyCFunction)CFStringRefObj_CFURLCreateWithString, 1, - PyDoc_STR("(CFURLRef baseURL) -> (CFURLRef _rv)")}, - {"CFURLCreateWithFileSystemPath", (PyCFunction)CFStringRefObj_CFURLCreateWithFileSystemPath, 1, - PyDoc_STR("(CFURLPathStyle pathStyle, Boolean isDirectory) -> (CFURLRef _rv)")}, - {"CFURLCreateWithFileSystemPathRelativeToBase", (PyCFunction)CFStringRefObj_CFURLCreateWithFileSystemPathRelativeToBase, 1, - PyDoc_STR("(CFURLPathStyle pathStyle, Boolean isDirectory, CFURLRef baseURL) -> (CFURLRef _rv)")}, - {"CFURLCreateStringByReplacingPercentEscapes", (PyCFunction)CFStringRefObj_CFURLCreateStringByReplacingPercentEscapes, 1, - PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")}, - {"CFURLCreateStringByAddingPercentEscapes", (PyCFunction)CFStringRefObj_CFURLCreateStringByAddingPercentEscapes, 1, - PyDoc_STR("(CFStringRef charactersToLeaveUnescaped, CFStringRef legalURLCharactersToBeEscaped, CFStringEncoding encoding) -> (CFStringRef _rv)")}, - {"CFStringGetString", (PyCFunction)CFStringRefObj_CFStringGetString, 1, - PyDoc_STR("() -> (string _rv)")}, - {"CFStringGetUnicode", (PyCFunction)CFStringRefObj_CFStringGetUnicode, 1, - PyDoc_STR("() -> (unicode _rv)")}, - {NULL, NULL, 0} -}; - -#define CFStringRefObj_getsetlist NULL - - -static int CFStringRefObj_compare(CFStringRefObject *self, CFStringRefObject *other) -{ - /* XXXX Or should we use CFEqual?? */ - if ( self->ob_itself > other->ob_itself ) return 1; - if ( self->ob_itself < other->ob_itself ) return -1; - return 0; -} - -static PyObject * CFStringRefObj_repr(CFStringRefObject *self) -{ - char buf[100]; - sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); - return PyString_FromString(buf); -} - -static int CFStringRefObj_hash(CFStringRefObject *self) -{ - /* XXXX Or should we use CFHash?? */ - return (int)self->ob_itself; -} -static int CFStringRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - CFStringRef itself; - char *kw[] = {"itself", 0}; - - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFStringRefObj_Convert, &itself)) - { - ((CFStringRefObject *)_self)->ob_itself = itself; - return 0; - } - - /* Any CFTypeRef descendent is allowed as initializer too */ - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) - { - ((CFStringRefObject *)_self)->ob_itself = itself; - return 0; - } - return -1; -} - -#define CFStringRefObj_tp_alloc PyType_GenericAlloc - -static PyObject *CFStringRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((CFStringRefObject *)self)->ob_itself = NULL; - ((CFStringRefObject *)self)->ob_freeit = CFRelease; - return self; -} - -#define CFStringRefObj_tp_free PyObject_Del - - -PyTypeObject CFStringRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CF.CFStringRef", /*tp_name*/ - sizeof(CFStringRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CFStringRefObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CFStringRefObj_compare, /*tp_compare*/ - (reprfunc) CFStringRefObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CFStringRefObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CFStringRefObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CFStringRefObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CFStringRefObj_tp_init, /* tp_init */ - CFStringRefObj_tp_alloc, /* tp_alloc */ - CFStringRefObj_tp_new, /* tp_new */ - CFStringRefObj_tp_free, /* tp_free */ -}; - -/* ------------------ End object type CFStringRef ------------------- */ - - -/* ----------------- Object type CFMutableStringRef ----------------- */ - -PyTypeObject CFMutableStringRef_Type; - -#define CFMutableStringRefObj_Check(x) ((x)->ob_type == &CFMutableStringRef_Type || PyObject_TypeCheck((x), &CFMutableStringRef_Type)) - -typedef struct CFMutableStringRefObject { - PyObject_HEAD - CFMutableStringRef ob_itself; - void (*ob_freeit)(CFTypeRef ptr); -} CFMutableStringRefObject; - -PyObject *CFMutableStringRefObj_New(CFMutableStringRef itself) -{ - CFMutableStringRefObject *it; - if (itself == NULL) - { - PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); - return NULL; - } - it = PyObject_NEW(CFMutableStringRefObject, &CFMutableStringRef_Type); - if (it == NULL) return NULL; - /* XXXX Should we tp_init or tp_new our basetype? */ - it->ob_itself = itself; - it->ob_freeit = CFRelease; - return (PyObject *)it; -} - -int CFMutableStringRefObj_Convert(PyObject *v, CFMutableStringRef *p_itself) -{ - - if (v == Py_None) { *p_itself = NULL; return 1; } - /* Check for other CF objects here */ - - if (!CFMutableStringRefObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "CFMutableStringRef required"); - return 0; - } - *p_itself = ((CFMutableStringRefObject *)v)->ob_itself; - return 1; -} - -static void CFMutableStringRefObj_dealloc(CFMutableStringRefObject *self) -{ - if (self->ob_freeit && self->ob_itself) - { - self->ob_freeit((CFTypeRef)self->ob_itself); - self->ob_itself = NULL; - } - CFStringRef_Type.tp_dealloc((PyObject *)self); -} - -static PyObject *CFMutableStringRefObj_CFStringAppend(CFMutableStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef appendedString; -#ifndef CFStringAppend - PyMac_PRECHECK(CFStringAppend); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &appendedString)) - return NULL; - CFStringAppend(_self->ob_itself, - appendedString); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableStringRefObj_CFStringAppendCharacters(CFMutableStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UniChar *chars__in__; - UniCharCount chars__len__; - int chars__in_len__; -#ifndef CFStringAppendCharacters - PyMac_PRECHECK(CFStringAppendCharacters); -#endif - if (!PyArg_ParseTuple(_args, "u#", - &chars__in__, &chars__in_len__)) - return NULL; - chars__len__ = chars__in_len__; - CFStringAppendCharacters(_self->ob_itself, - chars__in__, chars__len__); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableStringRefObj_CFStringAppendPascalString(CFMutableStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Str255 pStr; - CFStringEncoding encoding; -#ifndef CFStringAppendPascalString - PyMac_PRECHECK(CFStringAppendPascalString); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetStr255, pStr, - &encoding)) - return NULL; - CFStringAppendPascalString(_self->ob_itself, - pStr, - encoding); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableStringRefObj_CFStringAppendCString(CFMutableStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - char* cStr; - CFStringEncoding encoding; -#ifndef CFStringAppendCString - PyMac_PRECHECK(CFStringAppendCString); -#endif - if (!PyArg_ParseTuple(_args, "sl", - &cStr, - &encoding)) - return NULL; - CFStringAppendCString(_self->ob_itself, - cStr, - encoding); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableStringRefObj_CFStringInsert(CFMutableStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex idx; - CFStringRef insertedStr; -#ifndef CFStringInsert - PyMac_PRECHECK(CFStringInsert); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &idx, - CFStringRefObj_Convert, &insertedStr)) - return NULL; - CFStringInsert(_self->ob_itself, - idx, - insertedStr); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableStringRefObj_CFStringDelete(CFMutableStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFRange range; -#ifndef CFStringDelete - PyMac_PRECHECK(CFStringDelete); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFRange_Convert, &range)) - return NULL; - CFStringDelete(_self->ob_itself, - range); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableStringRefObj_CFStringReplace(CFMutableStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFRange range; - CFStringRef replacement; -#ifndef CFStringReplace - PyMac_PRECHECK(CFStringReplace); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CFRange_Convert, &range, - CFStringRefObj_Convert, &replacement)) - return NULL; - CFStringReplace(_self->ob_itself, - range, - replacement); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableStringRefObj_CFStringReplaceAll(CFMutableStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef replacement; -#ifndef CFStringReplaceAll - PyMac_PRECHECK(CFStringReplaceAll); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &replacement)) - return NULL; - CFStringReplaceAll(_self->ob_itself, - replacement); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableStringRefObj_CFStringPad(CFMutableStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef padString; - CFIndex length; - CFIndex indexIntoPad; -#ifndef CFStringPad - PyMac_PRECHECK(CFStringPad); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CFStringRefObj_Convert, &padString, - &length, - &indexIntoPad)) - return NULL; - CFStringPad(_self->ob_itself, - padString, - length, - indexIntoPad); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableStringRefObj_CFStringTrim(CFMutableStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef trimString; -#ifndef CFStringTrim - PyMac_PRECHECK(CFStringTrim); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &trimString)) - return NULL; - CFStringTrim(_self->ob_itself, - trimString); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CFMutableStringRefObj_CFStringTrimWhitespace(CFMutableStringRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef CFStringTrimWhitespace - PyMac_PRECHECK(CFStringTrimWhitespace); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CFStringTrimWhitespace(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef CFMutableStringRefObj_methods[] = { - {"CFStringAppend", (PyCFunction)CFMutableStringRefObj_CFStringAppend, 1, - PyDoc_STR("(CFStringRef appendedString) -> None")}, - {"CFStringAppendCharacters", (PyCFunction)CFMutableStringRefObj_CFStringAppendCharacters, 1, - PyDoc_STR("(Buffer chars) -> None")}, - {"CFStringAppendPascalString", (PyCFunction)CFMutableStringRefObj_CFStringAppendPascalString, 1, - PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> None")}, - {"CFStringAppendCString", (PyCFunction)CFMutableStringRefObj_CFStringAppendCString, 1, - PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> None")}, - {"CFStringInsert", (PyCFunction)CFMutableStringRefObj_CFStringInsert, 1, - PyDoc_STR("(CFIndex idx, CFStringRef insertedStr) -> None")}, - {"CFStringDelete", (PyCFunction)CFMutableStringRefObj_CFStringDelete, 1, - PyDoc_STR("(CFRange range) -> None")}, - {"CFStringReplace", (PyCFunction)CFMutableStringRefObj_CFStringReplace, 1, - PyDoc_STR("(CFRange range, CFStringRef replacement) -> None")}, - {"CFStringReplaceAll", (PyCFunction)CFMutableStringRefObj_CFStringReplaceAll, 1, - PyDoc_STR("(CFStringRef replacement) -> None")}, - {"CFStringPad", (PyCFunction)CFMutableStringRefObj_CFStringPad, 1, - PyDoc_STR("(CFStringRef padString, CFIndex length, CFIndex indexIntoPad) -> None")}, - {"CFStringTrim", (PyCFunction)CFMutableStringRefObj_CFStringTrim, 1, - PyDoc_STR("(CFStringRef trimString) -> None")}, - {"CFStringTrimWhitespace", (PyCFunction)CFMutableStringRefObj_CFStringTrimWhitespace, 1, - PyDoc_STR("() -> None")}, - {NULL, NULL, 0} -}; - -#define CFMutableStringRefObj_getsetlist NULL - - -static int CFMutableStringRefObj_compare(CFMutableStringRefObject *self, CFMutableStringRefObject *other) -{ - /* XXXX Or should we use CFEqual?? */ - if ( self->ob_itself > other->ob_itself ) return 1; - if ( self->ob_itself < other->ob_itself ) return -1; - return 0; -} - -static PyObject * CFMutableStringRefObj_repr(CFMutableStringRefObject *self) -{ - char buf[100]; - sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); - return PyString_FromString(buf); -} - -static int CFMutableStringRefObj_hash(CFMutableStringRefObject *self) -{ - /* XXXX Or should we use CFHash?? */ - return (int)self->ob_itself; -} -static int CFMutableStringRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - CFMutableStringRef itself; - char *kw[] = {"itself", 0}; - - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableStringRefObj_Convert, &itself)) - { - ((CFMutableStringRefObject *)_self)->ob_itself = itself; - return 0; - } - - /* Any CFTypeRef descendent is allowed as initializer too */ - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) - { - ((CFMutableStringRefObject *)_self)->ob_itself = itself; - return 0; - } - return -1; -} - -#define CFMutableStringRefObj_tp_alloc PyType_GenericAlloc - -static PyObject *CFMutableStringRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((CFMutableStringRefObject *)self)->ob_itself = NULL; - ((CFMutableStringRefObject *)self)->ob_freeit = CFRelease; - return self; -} - -#define CFMutableStringRefObj_tp_free PyObject_Del - - -PyTypeObject CFMutableStringRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CF.CFMutableStringRef", /*tp_name*/ - sizeof(CFMutableStringRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CFMutableStringRefObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CFMutableStringRefObj_compare, /*tp_compare*/ - (reprfunc) CFMutableStringRefObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CFMutableStringRefObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CFMutableStringRefObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CFMutableStringRefObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CFMutableStringRefObj_tp_init, /* tp_init */ - CFMutableStringRefObj_tp_alloc, /* tp_alloc */ - CFMutableStringRefObj_tp_new, /* tp_new */ - CFMutableStringRefObj_tp_free, /* tp_free */ -}; - -/* --------------- End object type CFMutableStringRef --------------- */ - - -/* ---------------------- Object type CFURLRef ---------------------- */ - -PyTypeObject CFURLRef_Type; - -#define CFURLRefObj_Check(x) ((x)->ob_type == &CFURLRef_Type || PyObject_TypeCheck((x), &CFURLRef_Type)) - -typedef struct CFURLRefObject { - PyObject_HEAD - CFURLRef ob_itself; - void (*ob_freeit)(CFTypeRef ptr); -} CFURLRefObject; - -PyObject *CFURLRefObj_New(CFURLRef itself) -{ - CFURLRefObject *it; - if (itself == NULL) - { - PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); - return NULL; - } - it = PyObject_NEW(CFURLRefObject, &CFURLRef_Type); - if (it == NULL) return NULL; - /* XXXX Should we tp_init or tp_new our basetype? */ - it->ob_itself = itself; - it->ob_freeit = CFRelease; - return (PyObject *)it; -} - -int CFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself) -{ - - if (v == Py_None) { *p_itself = NULL; return 1; } - /* Check for other CF objects here */ - - if (!CFURLRefObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "CFURLRef required"); - return 0; - } - *p_itself = ((CFURLRefObject *)v)->ob_itself; - return 1; -} - -static void CFURLRefObj_dealloc(CFURLRefObject *self) -{ - if (self->ob_freeit && self->ob_itself) - { - self->ob_freeit((CFTypeRef)self->ob_itself); - self->ob_itself = NULL; - } - CFTypeRef_Type.tp_dealloc((PyObject *)self); -} - -static PyObject *CFURLRefObj_CFURLCreateData(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFDataRef _rv; - CFStringEncoding encoding; - Boolean escapeWhitespace; - if (!PyArg_ParseTuple(_args, "ll", - &encoding, - &escapeWhitespace)) - return NULL; - _rv = CFURLCreateData((CFAllocatorRef)NULL, - _self->ob_itself, - encoding, - escapeWhitespace); - _res = Py_BuildValue("O&", - CFDataRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLGetFileSystemRepresentation(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Boolean resolveAgainstBase; - UInt8 buffer; - CFIndex maxBufLen; -#ifndef CFURLGetFileSystemRepresentation - PyMac_PRECHECK(CFURLGetFileSystemRepresentation); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &resolveAgainstBase, - &maxBufLen)) - return NULL; - _rv = CFURLGetFileSystemRepresentation(_self->ob_itself, - resolveAgainstBase, - &buffer, - maxBufLen); - _res = Py_BuildValue("lb", - _rv, - buffer); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyAbsoluteURL(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFURLRef _rv; -#ifndef CFURLCopyAbsoluteURL - PyMac_PRECHECK(CFURLCopyAbsoluteURL); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCopyAbsoluteURL(_self->ob_itself); - _res = Py_BuildValue("O&", - CFURLRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLGetString(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; -#ifndef CFURLGetString - PyMac_PRECHECK(CFURLGetString); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLGetString(_self->ob_itself); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLGetBaseURL(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFURLRef _rv; -#ifndef CFURLGetBaseURL - PyMac_PRECHECK(CFURLGetBaseURL); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLGetBaseURL(_self->ob_itself); - _res = Py_BuildValue("O&", - CFURLRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCanBeDecomposed(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef CFURLCanBeDecomposed - PyMac_PRECHECK(CFURLCanBeDecomposed); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCanBeDecomposed(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyScheme(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; -#ifndef CFURLCopyScheme - PyMac_PRECHECK(CFURLCopyScheme); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCopyScheme(_self->ob_itself); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyNetLocation(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; -#ifndef CFURLCopyNetLocation - PyMac_PRECHECK(CFURLCopyNetLocation); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCopyNetLocation(_self->ob_itself); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyPath(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; -#ifndef CFURLCopyPath - PyMac_PRECHECK(CFURLCopyPath); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCopyPath(_self->ob_itself); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyStrictPath(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - Boolean isAbsolute; -#ifndef CFURLCopyStrictPath - PyMac_PRECHECK(CFURLCopyStrictPath); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCopyStrictPath(_self->ob_itself, - &isAbsolute); - _res = Py_BuildValue("O&l", - CFStringRefObj_New, _rv, - isAbsolute); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyFileSystemPath(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - CFURLPathStyle pathStyle; -#ifndef CFURLCopyFileSystemPath - PyMac_PRECHECK(CFURLCopyFileSystemPath); -#endif - if (!PyArg_ParseTuple(_args, "l", - &pathStyle)) - return NULL; - _rv = CFURLCopyFileSystemPath(_self->ob_itself, - pathStyle); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLHasDirectoryPath(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef CFURLHasDirectoryPath - PyMac_PRECHECK(CFURLHasDirectoryPath); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLHasDirectoryPath(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyResourceSpecifier(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; -#ifndef CFURLCopyResourceSpecifier - PyMac_PRECHECK(CFURLCopyResourceSpecifier); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCopyResourceSpecifier(_self->ob_itself); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyHostName(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; -#ifndef CFURLCopyHostName - PyMac_PRECHECK(CFURLCopyHostName); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCopyHostName(_self->ob_itself); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLGetPortNumber(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 _rv; -#ifndef CFURLGetPortNumber - PyMac_PRECHECK(CFURLGetPortNumber); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLGetPortNumber(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyUserName(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; -#ifndef CFURLCopyUserName - PyMac_PRECHECK(CFURLCopyUserName); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCopyUserName(_self->ob_itself); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyPassword(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; -#ifndef CFURLCopyPassword - PyMac_PRECHECK(CFURLCopyPassword); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCopyPassword(_self->ob_itself); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyParameterString(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - CFStringRef charactersToLeaveEscaped; -#ifndef CFURLCopyParameterString - PyMac_PRECHECK(CFURLCopyParameterString); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &charactersToLeaveEscaped)) - return NULL; - _rv = CFURLCopyParameterString(_self->ob_itself, - charactersToLeaveEscaped); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyQueryString(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - CFStringRef charactersToLeaveEscaped; -#ifndef CFURLCopyQueryString - PyMac_PRECHECK(CFURLCopyQueryString); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &charactersToLeaveEscaped)) - return NULL; - _rv = CFURLCopyQueryString(_self->ob_itself, - charactersToLeaveEscaped); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyFragment(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - CFStringRef charactersToLeaveEscaped; -#ifndef CFURLCopyFragment - PyMac_PRECHECK(CFURLCopyFragment); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &charactersToLeaveEscaped)) - return NULL; - _rv = CFURLCopyFragment(_self->ob_itself, - charactersToLeaveEscaped); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyLastPathComponent(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; -#ifndef CFURLCopyLastPathComponent - PyMac_PRECHECK(CFURLCopyLastPathComponent); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCopyLastPathComponent(_self->ob_itself); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCopyPathExtension(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; -#ifndef CFURLCopyPathExtension - PyMac_PRECHECK(CFURLCopyPathExtension); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCopyPathExtension(_self->ob_itself); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCreateCopyAppendingPathComponent(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFURLRef _rv; - CFStringRef pathComponent; - Boolean isDirectory; - if (!PyArg_ParseTuple(_args, "O&l", - CFStringRefObj_Convert, &pathComponent, - &isDirectory)) - return NULL; - _rv = CFURLCreateCopyAppendingPathComponent((CFAllocatorRef)NULL, - _self->ob_itself, - pathComponent, - isDirectory); - _res = Py_BuildValue("O&", - CFURLRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCreateCopyDeletingLastPathComponent(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFURLRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCreateCopyDeletingLastPathComponent((CFAllocatorRef)NULL, - _self->ob_itself); - _res = Py_BuildValue("O&", - CFURLRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCreateCopyAppendingPathExtension(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFURLRef _rv; - CFStringRef extension; - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &extension)) - return NULL; - _rv = CFURLCreateCopyAppendingPathExtension((CFAllocatorRef)NULL, - _self->ob_itself, - extension); - _res = Py_BuildValue("O&", - CFURLRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLCreateCopyDeletingPathExtension(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFURLRef _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLCreateCopyDeletingPathExtension((CFAllocatorRef)NULL, - _self->ob_itself); - _res = Py_BuildValue("O&", - CFURLRefObj_New, _rv); - return _res; -} - -static PyObject *CFURLRefObj_CFURLGetFSRef(CFURLRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - FSRef fsRef; -#ifndef CFURLGetFSRef - PyMac_PRECHECK(CFURLGetFSRef); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLGetFSRef(_self->ob_itself, - &fsRef); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildFSRef, &fsRef); - return _res; -} - -static PyMethodDef CFURLRefObj_methods[] = { - {"CFURLCreateData", (PyCFunction)CFURLRefObj_CFURLCreateData, 1, - PyDoc_STR("(CFStringEncoding encoding, Boolean escapeWhitespace) -> (CFDataRef _rv)")}, - {"CFURLGetFileSystemRepresentation", (PyCFunction)CFURLRefObj_CFURLGetFileSystemRepresentation, 1, - PyDoc_STR("(Boolean resolveAgainstBase, CFIndex maxBufLen) -> (Boolean _rv, UInt8 buffer)")}, - {"CFURLCopyAbsoluteURL", (PyCFunction)CFURLRefObj_CFURLCopyAbsoluteURL, 1, - PyDoc_STR("() -> (CFURLRef _rv)")}, - {"CFURLGetString", (PyCFunction)CFURLRefObj_CFURLGetString, 1, - PyDoc_STR("() -> (CFStringRef _rv)")}, - {"CFURLGetBaseURL", (PyCFunction)CFURLRefObj_CFURLGetBaseURL, 1, - PyDoc_STR("() -> (CFURLRef _rv)")}, - {"CFURLCanBeDecomposed", (PyCFunction)CFURLRefObj_CFURLCanBeDecomposed, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"CFURLCopyScheme", (PyCFunction)CFURLRefObj_CFURLCopyScheme, 1, - PyDoc_STR("() -> (CFStringRef _rv)")}, - {"CFURLCopyNetLocation", (PyCFunction)CFURLRefObj_CFURLCopyNetLocation, 1, - PyDoc_STR("() -> (CFStringRef _rv)")}, - {"CFURLCopyPath", (PyCFunction)CFURLRefObj_CFURLCopyPath, 1, - PyDoc_STR("() -> (CFStringRef _rv)")}, - {"CFURLCopyStrictPath", (PyCFunction)CFURLRefObj_CFURLCopyStrictPath, 1, - PyDoc_STR("() -> (CFStringRef _rv, Boolean isAbsolute)")}, - {"CFURLCopyFileSystemPath", (PyCFunction)CFURLRefObj_CFURLCopyFileSystemPath, 1, - PyDoc_STR("(CFURLPathStyle pathStyle) -> (CFStringRef _rv)")}, - {"CFURLHasDirectoryPath", (PyCFunction)CFURLRefObj_CFURLHasDirectoryPath, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"CFURLCopyResourceSpecifier", (PyCFunction)CFURLRefObj_CFURLCopyResourceSpecifier, 1, - PyDoc_STR("() -> (CFStringRef _rv)")}, - {"CFURLCopyHostName", (PyCFunction)CFURLRefObj_CFURLCopyHostName, 1, - PyDoc_STR("() -> (CFStringRef _rv)")}, - {"CFURLGetPortNumber", (PyCFunction)CFURLRefObj_CFURLGetPortNumber, 1, - PyDoc_STR("() -> (SInt32 _rv)")}, - {"CFURLCopyUserName", (PyCFunction)CFURLRefObj_CFURLCopyUserName, 1, - PyDoc_STR("() -> (CFStringRef _rv)")}, - {"CFURLCopyPassword", (PyCFunction)CFURLRefObj_CFURLCopyPassword, 1, - PyDoc_STR("() -> (CFStringRef _rv)")}, - {"CFURLCopyParameterString", (PyCFunction)CFURLRefObj_CFURLCopyParameterString, 1, - PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")}, - {"CFURLCopyQueryString", (PyCFunction)CFURLRefObj_CFURLCopyQueryString, 1, - PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")}, - {"CFURLCopyFragment", (PyCFunction)CFURLRefObj_CFURLCopyFragment, 1, - PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")}, - {"CFURLCopyLastPathComponent", (PyCFunction)CFURLRefObj_CFURLCopyLastPathComponent, 1, - PyDoc_STR("() -> (CFStringRef _rv)")}, - {"CFURLCopyPathExtension", (PyCFunction)CFURLRefObj_CFURLCopyPathExtension, 1, - PyDoc_STR("() -> (CFStringRef _rv)")}, - {"CFURLCreateCopyAppendingPathComponent", (PyCFunction)CFURLRefObj_CFURLCreateCopyAppendingPathComponent, 1, - PyDoc_STR("(CFStringRef pathComponent, Boolean isDirectory) -> (CFURLRef _rv)")}, - {"CFURLCreateCopyDeletingLastPathComponent", (PyCFunction)CFURLRefObj_CFURLCreateCopyDeletingLastPathComponent, 1, - PyDoc_STR("() -> (CFURLRef _rv)")}, - {"CFURLCreateCopyAppendingPathExtension", (PyCFunction)CFURLRefObj_CFURLCreateCopyAppendingPathExtension, 1, - PyDoc_STR("(CFStringRef extension) -> (CFURLRef _rv)")}, - {"CFURLCreateCopyDeletingPathExtension", (PyCFunction)CFURLRefObj_CFURLCreateCopyDeletingPathExtension, 1, - PyDoc_STR("() -> (CFURLRef _rv)")}, - {"CFURLGetFSRef", (PyCFunction)CFURLRefObj_CFURLGetFSRef, 1, - PyDoc_STR("() -> (Boolean _rv, FSRef fsRef)")}, - {NULL, NULL, 0} -}; - -#define CFURLRefObj_getsetlist NULL - - -static int CFURLRefObj_compare(CFURLRefObject *self, CFURLRefObject *other) -{ - /* XXXX Or should we use CFEqual?? */ - if ( self->ob_itself > other->ob_itself ) return 1; - if ( self->ob_itself < other->ob_itself ) return -1; - return 0; -} - -static PyObject * CFURLRefObj_repr(CFURLRefObject *self) -{ - char buf[100]; - sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); - return PyString_FromString(buf); -} - -static int CFURLRefObj_hash(CFURLRefObject *self) -{ - /* XXXX Or should we use CFHash?? */ - return (int)self->ob_itself; -} -static int CFURLRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - CFURLRef itself; - char *kw[] = {"itself", 0}; - - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFURLRefObj_Convert, &itself)) - { - ((CFURLRefObject *)_self)->ob_itself = itself; - return 0; - } - - /* Any CFTypeRef descendent is allowed as initializer too */ - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) - { - ((CFURLRefObject *)_self)->ob_itself = itself; - return 0; - } - return -1; -} - -#define CFURLRefObj_tp_alloc PyType_GenericAlloc - -static PyObject *CFURLRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((CFURLRefObject *)self)->ob_itself = NULL; - ((CFURLRefObject *)self)->ob_freeit = CFRelease; - return self; -} - -#define CFURLRefObj_tp_free PyObject_Del - - -PyTypeObject CFURLRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CF.CFURLRef", /*tp_name*/ - sizeof(CFURLRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CFURLRefObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CFURLRefObj_compare, /*tp_compare*/ - (reprfunc) CFURLRefObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CFURLRefObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CFURLRefObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CFURLRefObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CFURLRefObj_tp_init, /* tp_init */ - CFURLRefObj_tp_alloc, /* tp_alloc */ - CFURLRefObj_tp_new, /* tp_new */ - CFURLRefObj_tp_free, /* tp_free */ -}; - -/* -------------------- End object type CFURLRef -------------------- */ - - -static PyObject *CF___CFRangeMake(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFRange _rv; - CFIndex loc; - CFIndex len; -#ifndef __CFRangeMake - PyMac_PRECHECK(__CFRangeMake); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &loc, - &len)) - return NULL; - _rv = __CFRangeMake(loc, - len); - _res = Py_BuildValue("O&", - CFRange_New, _rv); - return _res; -} - -static PyObject *CF_CFAllocatorGetTypeID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFTypeID _rv; -#ifndef CFAllocatorGetTypeID - PyMac_PRECHECK(CFAllocatorGetTypeID); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFAllocatorGetTypeID(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFAllocatorGetPreferredSizeForSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex _rv; - CFIndex size; - CFOptionFlags hint; -#ifndef CFAllocatorGetPreferredSizeForSize - PyMac_PRECHECK(CFAllocatorGetPreferredSizeForSize); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &size, - &hint)) - return NULL; - _rv = CFAllocatorGetPreferredSizeForSize((CFAllocatorRef)NULL, - size, - hint); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFCopyTypeIDDescription(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - CFTypeID type_id; -#ifndef CFCopyTypeIDDescription - PyMac_PRECHECK(CFCopyTypeIDDescription); -#endif - if (!PyArg_ParseTuple(_args, "l", - &type_id)) - return NULL; - _rv = CFCopyTypeIDDescription(type_id); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFArrayGetTypeID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFTypeID _rv; -#ifndef CFArrayGetTypeID - PyMac_PRECHECK(CFArrayGetTypeID); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFArrayGetTypeID(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFArrayCreateMutable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFMutableArrayRef _rv; - CFIndex capacity; -#ifndef CFArrayCreateMutable - PyMac_PRECHECK(CFArrayCreateMutable); -#endif - if (!PyArg_ParseTuple(_args, "l", - &capacity)) - return NULL; - _rv = CFArrayCreateMutable((CFAllocatorRef)NULL, - capacity, - &kCFTypeArrayCallBacks); - _res = Py_BuildValue("O&", - CFMutableArrayRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFArrayCreateMutableCopy(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFMutableArrayRef _rv; - CFIndex capacity; - CFArrayRef theArray; -#ifndef CFArrayCreateMutableCopy - PyMac_PRECHECK(CFArrayCreateMutableCopy); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &capacity, - CFArrayRefObj_Convert, &theArray)) - return NULL; - _rv = CFArrayCreateMutableCopy((CFAllocatorRef)NULL, - capacity, - theArray); - _res = Py_BuildValue("O&", - CFMutableArrayRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFDataGetTypeID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFTypeID _rv; -#ifndef CFDataGetTypeID - PyMac_PRECHECK(CFDataGetTypeID); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFDataGetTypeID(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFDataCreate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFDataRef _rv; - unsigned char *bytes__in__; - long bytes__len__; - int bytes__in_len__; -#ifndef CFDataCreate - PyMac_PRECHECK(CFDataCreate); -#endif - if (!PyArg_ParseTuple(_args, "s#", - &bytes__in__, &bytes__in_len__)) - return NULL; - bytes__len__ = bytes__in_len__; - _rv = CFDataCreate((CFAllocatorRef)NULL, - bytes__in__, bytes__len__); - _res = Py_BuildValue("O&", - CFDataRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFDataCreateWithBytesNoCopy(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFDataRef _rv; - unsigned char *bytes__in__; - long bytes__len__; - int bytes__in_len__; -#ifndef CFDataCreateWithBytesNoCopy - PyMac_PRECHECK(CFDataCreateWithBytesNoCopy); -#endif - if (!PyArg_ParseTuple(_args, "s#", - &bytes__in__, &bytes__in_len__)) - return NULL; - bytes__len__ = bytes__in_len__; - _rv = CFDataCreateWithBytesNoCopy((CFAllocatorRef)NULL, - bytes__in__, bytes__len__, - (CFAllocatorRef)NULL); - _res = Py_BuildValue("O&", - CFDataRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFDataCreateMutable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFMutableDataRef _rv; - CFIndex capacity; -#ifndef CFDataCreateMutable - PyMac_PRECHECK(CFDataCreateMutable); -#endif - if (!PyArg_ParseTuple(_args, "l", - &capacity)) - return NULL; - _rv = CFDataCreateMutable((CFAllocatorRef)NULL, - capacity); - _res = Py_BuildValue("O&", - CFMutableDataRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFDataCreateMutableCopy(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFMutableDataRef _rv; - CFIndex capacity; - CFDataRef theData; -#ifndef CFDataCreateMutableCopy - PyMac_PRECHECK(CFDataCreateMutableCopy); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &capacity, - CFDataRefObj_Convert, &theData)) - return NULL; - _rv = CFDataCreateMutableCopy((CFAllocatorRef)NULL, - capacity, - theData); - _res = Py_BuildValue("O&", - CFMutableDataRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFDictionaryGetTypeID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFTypeID _rv; -#ifndef CFDictionaryGetTypeID - PyMac_PRECHECK(CFDictionaryGetTypeID); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFDictionaryGetTypeID(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFDictionaryCreateMutable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFMutableDictionaryRef _rv; - CFIndex capacity; -#ifndef CFDictionaryCreateMutable - PyMac_PRECHECK(CFDictionaryCreateMutable); -#endif - if (!PyArg_ParseTuple(_args, "l", - &capacity)) - return NULL; - _rv = CFDictionaryCreateMutable((CFAllocatorRef)NULL, - capacity, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); - _res = Py_BuildValue("O&", - CFMutableDictionaryRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFDictionaryCreateMutableCopy(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFMutableDictionaryRef _rv; - CFIndex capacity; - CFDictionaryRef theDict; -#ifndef CFDictionaryCreateMutableCopy - PyMac_PRECHECK(CFDictionaryCreateMutableCopy); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &capacity, - CFDictionaryRefObj_Convert, &theDict)) - return NULL; - _rv = CFDictionaryCreateMutableCopy((CFAllocatorRef)NULL, - capacity, - theDict); - _res = Py_BuildValue("O&", - CFMutableDictionaryRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFPreferencesCopyAppValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFTypeRef _rv; - CFStringRef key; - CFStringRef applicationID; -#ifndef CFPreferencesCopyAppValue - PyMac_PRECHECK(CFPreferencesCopyAppValue); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CFStringRefObj_Convert, &key, - CFStringRefObj_Convert, &applicationID)) - return NULL; - _rv = CFPreferencesCopyAppValue(key, - applicationID); - _res = Py_BuildValue("O&", - CFTypeRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFPreferencesGetAppBooleanValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - CFStringRef key; - CFStringRef applicationID; - Boolean keyExistsAndHasValidFormat; -#ifndef CFPreferencesGetAppBooleanValue - PyMac_PRECHECK(CFPreferencesGetAppBooleanValue); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CFStringRefObj_Convert, &key, - CFStringRefObj_Convert, &applicationID)) - return NULL; - _rv = CFPreferencesGetAppBooleanValue(key, - applicationID, - &keyExistsAndHasValidFormat); - _res = Py_BuildValue("ll", - _rv, - keyExistsAndHasValidFormat); - return _res; -} - -static PyObject *CF_CFPreferencesGetAppIntegerValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex _rv; - CFStringRef key; - CFStringRef applicationID; - Boolean keyExistsAndHasValidFormat; -#ifndef CFPreferencesGetAppIntegerValue - PyMac_PRECHECK(CFPreferencesGetAppIntegerValue); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CFStringRefObj_Convert, &key, - CFStringRefObj_Convert, &applicationID)) - return NULL; - _rv = CFPreferencesGetAppIntegerValue(key, - applicationID, - &keyExistsAndHasValidFormat); - _res = Py_BuildValue("ll", - _rv, - keyExistsAndHasValidFormat); - return _res; -} - -static PyObject *CF_CFPreferencesSetAppValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef key; - CFTypeRef value; - CFStringRef applicationID; -#ifndef CFPreferencesSetAppValue - PyMac_PRECHECK(CFPreferencesSetAppValue); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CFStringRefObj_Convert, &key, - CFTypeRefObj_Convert, &value, - CFStringRefObj_Convert, &applicationID)) - return NULL; - CFPreferencesSetAppValue(key, - value, - applicationID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CF_CFPreferencesAddSuitePreferencesToApp(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef applicationID; - CFStringRef suiteID; -#ifndef CFPreferencesAddSuitePreferencesToApp - PyMac_PRECHECK(CFPreferencesAddSuitePreferencesToApp); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CFStringRefObj_Convert, &applicationID, - CFStringRefObj_Convert, &suiteID)) - return NULL; - CFPreferencesAddSuitePreferencesToApp(applicationID, - suiteID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CF_CFPreferencesRemoveSuitePreferencesFromApp(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef applicationID; - CFStringRef suiteID; -#ifndef CFPreferencesRemoveSuitePreferencesFromApp - PyMac_PRECHECK(CFPreferencesRemoveSuitePreferencesFromApp); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CFStringRefObj_Convert, &applicationID, - CFStringRefObj_Convert, &suiteID)) - return NULL; - CFPreferencesRemoveSuitePreferencesFromApp(applicationID, - suiteID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CF_CFPreferencesAppSynchronize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - CFStringRef applicationID; -#ifndef CFPreferencesAppSynchronize - PyMac_PRECHECK(CFPreferencesAppSynchronize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &applicationID)) - return NULL; - _rv = CFPreferencesAppSynchronize(applicationID); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFPreferencesCopyValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFTypeRef _rv; - CFStringRef key; - CFStringRef applicationID; - CFStringRef userName; - CFStringRef hostName; -#ifndef CFPreferencesCopyValue - PyMac_PRECHECK(CFPreferencesCopyValue); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - CFStringRefObj_Convert, &key, - CFStringRefObj_Convert, &applicationID, - CFStringRefObj_Convert, &userName, - CFStringRefObj_Convert, &hostName)) - return NULL; - _rv = CFPreferencesCopyValue(key, - applicationID, - userName, - hostName); - _res = Py_BuildValue("O&", - CFTypeRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFPreferencesCopyMultiple(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFDictionaryRef _rv; - CFArrayRef keysToFetch; - CFStringRef applicationID; - CFStringRef userName; - CFStringRef hostName; -#ifndef CFPreferencesCopyMultiple - PyMac_PRECHECK(CFPreferencesCopyMultiple); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - CFArrayRefObj_Convert, &keysToFetch, - CFStringRefObj_Convert, &applicationID, - CFStringRefObj_Convert, &userName, - CFStringRefObj_Convert, &hostName)) - return NULL; - _rv = CFPreferencesCopyMultiple(keysToFetch, - applicationID, - userName, - hostName); - _res = Py_BuildValue("O&", - CFDictionaryRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFPreferencesSetValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef key; - CFTypeRef value; - CFStringRef applicationID; - CFStringRef userName; - CFStringRef hostName; -#ifndef CFPreferencesSetValue - PyMac_PRECHECK(CFPreferencesSetValue); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&O&", - CFStringRefObj_Convert, &key, - CFTypeRefObj_Convert, &value, - CFStringRefObj_Convert, &applicationID, - CFStringRefObj_Convert, &userName, - CFStringRefObj_Convert, &hostName)) - return NULL; - CFPreferencesSetValue(key, - value, - applicationID, - userName, - hostName); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CF_CFPreferencesSetMultiple(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFDictionaryRef keysToSet; - CFArrayRef keysToRemove; - CFStringRef applicationID; - CFStringRef userName; - CFStringRef hostName; -#ifndef CFPreferencesSetMultiple - PyMac_PRECHECK(CFPreferencesSetMultiple); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&O&", - CFDictionaryRefObj_Convert, &keysToSet, - CFArrayRefObj_Convert, &keysToRemove, - CFStringRefObj_Convert, &applicationID, - CFStringRefObj_Convert, &userName, - CFStringRefObj_Convert, &hostName)) - return NULL; - CFPreferencesSetMultiple(keysToSet, - keysToRemove, - applicationID, - userName, - hostName); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CF_CFPreferencesSynchronize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - CFStringRef applicationID; - CFStringRef userName; - CFStringRef hostName; -#ifndef CFPreferencesSynchronize - PyMac_PRECHECK(CFPreferencesSynchronize); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CFStringRefObj_Convert, &applicationID, - CFStringRefObj_Convert, &userName, - CFStringRefObj_Convert, &hostName)) - return NULL; - _rv = CFPreferencesSynchronize(applicationID, - userName, - hostName); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFPreferencesCopyApplicationList(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFArrayRef _rv; - CFStringRef userName; - CFStringRef hostName; -#ifndef CFPreferencesCopyApplicationList - PyMac_PRECHECK(CFPreferencesCopyApplicationList); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CFStringRefObj_Convert, &userName, - CFStringRefObj_Convert, &hostName)) - return NULL; - _rv = CFPreferencesCopyApplicationList(userName, - hostName); - _res = Py_BuildValue("O&", - CFArrayRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFPreferencesCopyKeyList(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFArrayRef _rv; - CFStringRef applicationID; - CFStringRef userName; - CFStringRef hostName; -#ifndef CFPreferencesCopyKeyList - PyMac_PRECHECK(CFPreferencesCopyKeyList); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CFStringRefObj_Convert, &applicationID, - CFStringRefObj_Convert, &userName, - CFStringRefObj_Convert, &hostName)) - return NULL; - _rv = CFPreferencesCopyKeyList(applicationID, - userName, - hostName); - _res = Py_BuildValue("O&", - CFArrayRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFStringGetTypeID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFTypeID _rv; -#ifndef CFStringGetTypeID - PyMac_PRECHECK(CFStringGetTypeID); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFStringGetTypeID(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFStringCreateWithPascalString(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - Str255 pStr; - CFStringEncoding encoding; -#ifndef CFStringCreateWithPascalString - PyMac_PRECHECK(CFStringCreateWithPascalString); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetStr255, pStr, - &encoding)) - return NULL; - _rv = CFStringCreateWithPascalString((CFAllocatorRef)NULL, - pStr, - encoding); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFStringCreateWithCString(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - char* cStr; - CFStringEncoding encoding; -#ifndef CFStringCreateWithCString - PyMac_PRECHECK(CFStringCreateWithCString); -#endif - if (!PyArg_ParseTuple(_args, "sl", - &cStr, - &encoding)) - return NULL; - _rv = CFStringCreateWithCString((CFAllocatorRef)NULL, - cStr, - encoding); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFStringCreateWithCharacters(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - UniChar *chars__in__; - UniCharCount chars__len__; - int chars__in_len__; -#ifndef CFStringCreateWithCharacters - PyMac_PRECHECK(CFStringCreateWithCharacters); -#endif - if (!PyArg_ParseTuple(_args, "u#", - &chars__in__, &chars__in_len__)) - return NULL; - chars__len__ = chars__in_len__; - _rv = CFStringCreateWithCharacters((CFAllocatorRef)NULL, - chars__in__, chars__len__); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFStringCreateWithPascalStringNoCopy(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - Str255 pStr; - CFStringEncoding encoding; -#ifndef CFStringCreateWithPascalStringNoCopy - PyMac_PRECHECK(CFStringCreateWithPascalStringNoCopy); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetStr255, pStr, - &encoding)) - return NULL; - _rv = CFStringCreateWithPascalStringNoCopy((CFAllocatorRef)NULL, - pStr, - encoding, - (CFAllocatorRef)NULL); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFStringCreateWithCStringNoCopy(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - char* cStr; - CFStringEncoding encoding; -#ifndef CFStringCreateWithCStringNoCopy - PyMac_PRECHECK(CFStringCreateWithCStringNoCopy); -#endif - if (!PyArg_ParseTuple(_args, "sl", - &cStr, - &encoding)) - return NULL; - _rv = CFStringCreateWithCStringNoCopy((CFAllocatorRef)NULL, - cStr, - encoding, - (CFAllocatorRef)NULL); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFStringCreateWithCharactersNoCopy(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - UniChar *chars__in__; - UniCharCount chars__len__; - int chars__in_len__; -#ifndef CFStringCreateWithCharactersNoCopy - PyMac_PRECHECK(CFStringCreateWithCharactersNoCopy); -#endif - if (!PyArg_ParseTuple(_args, "u#", - &chars__in__, &chars__in_len__)) - return NULL; - chars__len__ = chars__in_len__; - _rv = CFStringCreateWithCharactersNoCopy((CFAllocatorRef)NULL, - chars__in__, chars__len__, - (CFAllocatorRef)NULL); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFStringCreateMutable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFMutableStringRef _rv; - CFIndex maxLength; -#ifndef CFStringCreateMutable - PyMac_PRECHECK(CFStringCreateMutable); -#endif - if (!PyArg_ParseTuple(_args, "l", - &maxLength)) - return NULL; - _rv = CFStringCreateMutable((CFAllocatorRef)NULL, - maxLength); - _res = Py_BuildValue("O&", - CFMutableStringRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFStringCreateMutableCopy(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFMutableStringRef _rv; - CFIndex maxLength; - CFStringRef theString; -#ifndef CFStringCreateMutableCopy - PyMac_PRECHECK(CFStringCreateMutableCopy); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &maxLength, - CFStringRefObj_Convert, &theString)) - return NULL; - _rv = CFStringCreateMutableCopy((CFAllocatorRef)NULL, - maxLength, - theString); - _res = Py_BuildValue("O&", - CFMutableStringRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFStringCreateWithBytes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - unsigned char *bytes__in__; - long bytes__len__; - int bytes__in_len__; - CFStringEncoding encoding; - Boolean isExternalRepresentation; -#ifndef CFStringCreateWithBytes - PyMac_PRECHECK(CFStringCreateWithBytes); -#endif - if (!PyArg_ParseTuple(_args, "s#ll", - &bytes__in__, &bytes__in_len__, - &encoding, - &isExternalRepresentation)) - return NULL; - bytes__len__ = bytes__in_len__; - _rv = CFStringCreateWithBytes((CFAllocatorRef)NULL, - bytes__in__, bytes__len__, - encoding, - isExternalRepresentation); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFStringGetSystemEncoding(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringEncoding _rv; -#ifndef CFStringGetSystemEncoding - PyMac_PRECHECK(CFStringGetSystemEncoding); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFStringGetSystemEncoding(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFStringGetMaximumSizeForEncoding(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFIndex _rv; - CFIndex length; - CFStringEncoding encoding; -#ifndef CFStringGetMaximumSizeForEncoding - PyMac_PRECHECK(CFStringGetMaximumSizeForEncoding); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &length, - &encoding)) - return NULL; - _rv = CFStringGetMaximumSizeForEncoding(length, - encoding); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFStringIsEncodingAvailable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - CFStringEncoding encoding; -#ifndef CFStringIsEncodingAvailable - PyMac_PRECHECK(CFStringIsEncodingAvailable); -#endif - if (!PyArg_ParseTuple(_args, "l", - &encoding)) - return NULL; - _rv = CFStringIsEncodingAvailable(encoding); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFStringGetNameOfEncoding(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - CFStringEncoding encoding; -#ifndef CFStringGetNameOfEncoding - PyMac_PRECHECK(CFStringGetNameOfEncoding); -#endif - if (!PyArg_ParseTuple(_args, "l", - &encoding)) - return NULL; - _rv = CFStringGetNameOfEncoding(encoding); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFStringConvertEncodingToNSStringEncoding(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt32 _rv; - CFStringEncoding encoding; -#ifndef CFStringConvertEncodingToNSStringEncoding - PyMac_PRECHECK(CFStringConvertEncodingToNSStringEncoding); -#endif - if (!PyArg_ParseTuple(_args, "l", - &encoding)) - return NULL; - _rv = CFStringConvertEncodingToNSStringEncoding(encoding); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFStringConvertNSStringEncodingToEncoding(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringEncoding _rv; - UInt32 encoding; -#ifndef CFStringConvertNSStringEncodingToEncoding - PyMac_PRECHECK(CFStringConvertNSStringEncodingToEncoding); -#endif - if (!PyArg_ParseTuple(_args, "l", - &encoding)) - return NULL; - _rv = CFStringConvertNSStringEncodingToEncoding(encoding); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFStringConvertEncodingToWindowsCodepage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt32 _rv; - CFStringEncoding encoding; -#ifndef CFStringConvertEncodingToWindowsCodepage - PyMac_PRECHECK(CFStringConvertEncodingToWindowsCodepage); -#endif - if (!PyArg_ParseTuple(_args, "l", - &encoding)) - return NULL; - _rv = CFStringConvertEncodingToWindowsCodepage(encoding); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFStringConvertWindowsCodepageToEncoding(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringEncoding _rv; - UInt32 codepage; -#ifndef CFStringConvertWindowsCodepageToEncoding - PyMac_PRECHECK(CFStringConvertWindowsCodepageToEncoding); -#endif - if (!PyArg_ParseTuple(_args, "l", - &codepage)) - return NULL; - _rv = CFStringConvertWindowsCodepageToEncoding(codepage); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFStringConvertEncodingToIANACharSetName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - CFStringEncoding encoding; -#ifndef CFStringConvertEncodingToIANACharSetName - PyMac_PRECHECK(CFStringConvertEncodingToIANACharSetName); -#endif - if (!PyArg_ParseTuple(_args, "l", - &encoding)) - return NULL; - _rv = CFStringConvertEncodingToIANACharSetName(encoding); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFStringGetMostCompatibleMacStringEncoding(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringEncoding _rv; - CFStringEncoding encoding; -#ifndef CFStringGetMostCompatibleMacStringEncoding - PyMac_PRECHECK(CFStringGetMostCompatibleMacStringEncoding); -#endif - if (!PyArg_ParseTuple(_args, "l", - &encoding)) - return NULL; - _rv = CFStringGetMostCompatibleMacStringEncoding(encoding); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF___CFStringMakeConstantString(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFStringRef _rv; - char* cStr; -#ifndef __CFStringMakeConstantString - PyMac_PRECHECK(__CFStringMakeConstantString); -#endif - if (!PyArg_ParseTuple(_args, "s", - &cStr)) - return NULL; - _rv = __CFStringMakeConstantString(cStr); - _res = Py_BuildValue("O&", - CFStringRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFURLGetTypeID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFTypeID _rv; -#ifndef CFURLGetTypeID - PyMac_PRECHECK(CFURLGetTypeID); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CFURLGetTypeID(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CF_CFURLCreateWithBytes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFURLRef _rv; - unsigned char *URLBytes__in__; - long URLBytes__len__; - int URLBytes__in_len__; - CFStringEncoding encoding; - CFURLRef baseURL; -#ifndef CFURLCreateWithBytes - PyMac_PRECHECK(CFURLCreateWithBytes); -#endif - if (!PyArg_ParseTuple(_args, "s#lO&", - &URLBytes__in__, &URLBytes__in_len__, - &encoding, - OptionalCFURLRefObj_Convert, &baseURL)) - return NULL; - URLBytes__len__ = URLBytes__in_len__; - _rv = CFURLCreateWithBytes((CFAllocatorRef)NULL, - URLBytes__in__, URLBytes__len__, - encoding, - baseURL); - _res = Py_BuildValue("O&", - CFURLRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFURLCreateFromFileSystemRepresentation(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFURLRef _rv; - unsigned char *buffer__in__; - long buffer__len__; - int buffer__in_len__; - Boolean isDirectory; -#ifndef CFURLCreateFromFileSystemRepresentation - PyMac_PRECHECK(CFURLCreateFromFileSystemRepresentation); -#endif - if (!PyArg_ParseTuple(_args, "s#l", - &buffer__in__, &buffer__in_len__, - &isDirectory)) - return NULL; - buffer__len__ = buffer__in_len__; - _rv = CFURLCreateFromFileSystemRepresentation((CFAllocatorRef)NULL, - buffer__in__, buffer__len__, - isDirectory); - _res = Py_BuildValue("O&", - CFURLRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFURLCreateFromFileSystemRepresentationRelativeToBase(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFURLRef _rv; - unsigned char *buffer__in__; - long buffer__len__; - int buffer__in_len__; - Boolean isDirectory; - CFURLRef baseURL; -#ifndef CFURLCreateFromFileSystemRepresentationRelativeToBase - PyMac_PRECHECK(CFURLCreateFromFileSystemRepresentationRelativeToBase); -#endif - if (!PyArg_ParseTuple(_args, "s#lO&", - &buffer__in__, &buffer__in_len__, - &isDirectory, - OptionalCFURLRefObj_Convert, &baseURL)) - return NULL; - buffer__len__ = buffer__in_len__; - _rv = CFURLCreateFromFileSystemRepresentationRelativeToBase((CFAllocatorRef)NULL, - buffer__in__, buffer__len__, - isDirectory, - baseURL); - _res = Py_BuildValue("O&", - CFURLRefObj_New, _rv); - return _res; -} - -static PyObject *CF_CFURLCreateFromFSRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CFURLRef _rv; - FSRef fsRef; -#ifndef CFURLCreateFromFSRef - PyMac_PRECHECK(CFURLCreateFromFSRef); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFSRef, &fsRef)) - return NULL; - _rv = CFURLCreateFromFSRef((CFAllocatorRef)NULL, - &fsRef); - _res = Py_BuildValue("O&", - CFURLRefObj_New, _rv); - return _res; -} - -static PyObject *CF_toCF(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - CFTypeRef rv; - CFTypeID typeid; - - if (!PyArg_ParseTuple(_args, "O&", PyCF_Python2CF, &rv)) - return NULL; - typeid = CFGetTypeID(rv); - - if (typeid == CFStringGetTypeID()) - return Py_BuildValue("O&", CFStringRefObj_New, rv); - if (typeid == CFArrayGetTypeID()) - return Py_BuildValue("O&", CFArrayRefObj_New, rv); - if (typeid == CFDictionaryGetTypeID()) - return Py_BuildValue("O&", CFDictionaryRefObj_New, rv); - if (typeid == CFURLGetTypeID()) - return Py_BuildValue("O&", CFURLRefObj_New, rv); - - _res = Py_BuildValue("O&", CFTypeRefObj_New, rv); - return _res; - -} - -static PyMethodDef CF_methods[] = { - {"__CFRangeMake", (PyCFunction)CF___CFRangeMake, 1, - PyDoc_STR("(CFIndex loc, CFIndex len) -> (CFRange _rv)")}, - {"CFAllocatorGetTypeID", (PyCFunction)CF_CFAllocatorGetTypeID, 1, - PyDoc_STR("() -> (CFTypeID _rv)")}, - {"CFAllocatorGetPreferredSizeForSize", (PyCFunction)CF_CFAllocatorGetPreferredSizeForSize, 1, - PyDoc_STR("(CFIndex size, CFOptionFlags hint) -> (CFIndex _rv)")}, - {"CFCopyTypeIDDescription", (PyCFunction)CF_CFCopyTypeIDDescription, 1, - PyDoc_STR("(CFTypeID type_id) -> (CFStringRef _rv)")}, - {"CFArrayGetTypeID", (PyCFunction)CF_CFArrayGetTypeID, 1, - PyDoc_STR("() -> (CFTypeID _rv)")}, - {"CFArrayCreateMutable", (PyCFunction)CF_CFArrayCreateMutable, 1, - PyDoc_STR("(CFIndex capacity) -> (CFMutableArrayRef _rv)")}, - {"CFArrayCreateMutableCopy", (PyCFunction)CF_CFArrayCreateMutableCopy, 1, - PyDoc_STR("(CFIndex capacity, CFArrayRef theArray) -> (CFMutableArrayRef _rv)")}, - {"CFDataGetTypeID", (PyCFunction)CF_CFDataGetTypeID, 1, - PyDoc_STR("() -> (CFTypeID _rv)")}, - {"CFDataCreate", (PyCFunction)CF_CFDataCreate, 1, - PyDoc_STR("(Buffer bytes) -> (CFDataRef _rv)")}, - {"CFDataCreateWithBytesNoCopy", (PyCFunction)CF_CFDataCreateWithBytesNoCopy, 1, - PyDoc_STR("(Buffer bytes) -> (CFDataRef _rv)")}, - {"CFDataCreateMutable", (PyCFunction)CF_CFDataCreateMutable, 1, - PyDoc_STR("(CFIndex capacity) -> (CFMutableDataRef _rv)")}, - {"CFDataCreateMutableCopy", (PyCFunction)CF_CFDataCreateMutableCopy, 1, - PyDoc_STR("(CFIndex capacity, CFDataRef theData) -> (CFMutableDataRef _rv)")}, - {"CFDictionaryGetTypeID", (PyCFunction)CF_CFDictionaryGetTypeID, 1, - PyDoc_STR("() -> (CFTypeID _rv)")}, - {"CFDictionaryCreateMutable", (PyCFunction)CF_CFDictionaryCreateMutable, 1, - PyDoc_STR("(CFIndex capacity) -> (CFMutableDictionaryRef _rv)")}, - {"CFDictionaryCreateMutableCopy", (PyCFunction)CF_CFDictionaryCreateMutableCopy, 1, - PyDoc_STR("(CFIndex capacity, CFDictionaryRef theDict) -> (CFMutableDictionaryRef _rv)")}, - {"CFPreferencesCopyAppValue", (PyCFunction)CF_CFPreferencesCopyAppValue, 1, - PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (CFTypeRef _rv)")}, - {"CFPreferencesGetAppBooleanValue", (PyCFunction)CF_CFPreferencesGetAppBooleanValue, 1, - PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (Boolean _rv, Boolean keyExistsAndHasValidFormat)")}, - {"CFPreferencesGetAppIntegerValue", (PyCFunction)CF_CFPreferencesGetAppIntegerValue, 1, - PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (CFIndex _rv, Boolean keyExistsAndHasValidFormat)")}, - {"CFPreferencesSetAppValue", (PyCFunction)CF_CFPreferencesSetAppValue, 1, - PyDoc_STR("(CFStringRef key, CFTypeRef value, CFStringRef applicationID) -> None")}, - {"CFPreferencesAddSuitePreferencesToApp", (PyCFunction)CF_CFPreferencesAddSuitePreferencesToApp, 1, - PyDoc_STR("(CFStringRef applicationID, CFStringRef suiteID) -> None")}, - {"CFPreferencesRemoveSuitePreferencesFromApp", (PyCFunction)CF_CFPreferencesRemoveSuitePreferencesFromApp, 1, - PyDoc_STR("(CFStringRef applicationID, CFStringRef suiteID) -> None")}, - {"CFPreferencesAppSynchronize", (PyCFunction)CF_CFPreferencesAppSynchronize, 1, - PyDoc_STR("(CFStringRef applicationID) -> (Boolean _rv)")}, - {"CFPreferencesCopyValue", (PyCFunction)CF_CFPreferencesCopyValue, 1, - PyDoc_STR("(CFStringRef key, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFTypeRef _rv)")}, - {"CFPreferencesCopyMultiple", (PyCFunction)CF_CFPreferencesCopyMultiple, 1, - PyDoc_STR("(CFArrayRef keysToFetch, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFDictionaryRef _rv)")}, - {"CFPreferencesSetValue", (PyCFunction)CF_CFPreferencesSetValue, 1, - PyDoc_STR("(CFStringRef key, CFTypeRef value, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> None")}, - {"CFPreferencesSetMultiple", (PyCFunction)CF_CFPreferencesSetMultiple, 1, - PyDoc_STR("(CFDictionaryRef keysToSet, CFArrayRef keysToRemove, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> None")}, - {"CFPreferencesSynchronize", (PyCFunction)CF_CFPreferencesSynchronize, 1, - PyDoc_STR("(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (Boolean _rv)")}, - {"CFPreferencesCopyApplicationList", (PyCFunction)CF_CFPreferencesCopyApplicationList, 1, - PyDoc_STR("(CFStringRef userName, CFStringRef hostName) -> (CFArrayRef _rv)")}, - {"CFPreferencesCopyKeyList", (PyCFunction)CF_CFPreferencesCopyKeyList, 1, - PyDoc_STR("(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFArrayRef _rv)")}, - {"CFStringGetTypeID", (PyCFunction)CF_CFStringGetTypeID, 1, - PyDoc_STR("() -> (CFTypeID _rv)")}, - {"CFStringCreateWithPascalString", (PyCFunction)CF_CFStringCreateWithPascalString, 1, - PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> (CFStringRef _rv)")}, - {"CFStringCreateWithCString", (PyCFunction)CF_CFStringCreateWithCString, 1, - PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> (CFStringRef _rv)")}, - {"CFStringCreateWithCharacters", (PyCFunction)CF_CFStringCreateWithCharacters, 1, - PyDoc_STR("(Buffer chars) -> (CFStringRef _rv)")}, - {"CFStringCreateWithPascalStringNoCopy", (PyCFunction)CF_CFStringCreateWithPascalStringNoCopy, 1, - PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> (CFStringRef _rv)")}, - {"CFStringCreateWithCStringNoCopy", (PyCFunction)CF_CFStringCreateWithCStringNoCopy, 1, - PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> (CFStringRef _rv)")}, - {"CFStringCreateWithCharactersNoCopy", (PyCFunction)CF_CFStringCreateWithCharactersNoCopy, 1, - PyDoc_STR("(Buffer chars) -> (CFStringRef _rv)")}, - {"CFStringCreateMutable", (PyCFunction)CF_CFStringCreateMutable, 1, - PyDoc_STR("(CFIndex maxLength) -> (CFMutableStringRef _rv)")}, - {"CFStringCreateMutableCopy", (PyCFunction)CF_CFStringCreateMutableCopy, 1, - PyDoc_STR("(CFIndex maxLength, CFStringRef theString) -> (CFMutableStringRef _rv)")}, - {"CFStringCreateWithBytes", (PyCFunction)CF_CFStringCreateWithBytes, 1, - PyDoc_STR("(Buffer bytes, CFStringEncoding encoding, Boolean isExternalRepresentation) -> (CFStringRef _rv)")}, - {"CFStringGetSystemEncoding", (PyCFunction)CF_CFStringGetSystemEncoding, 1, - PyDoc_STR("() -> (CFStringEncoding _rv)")}, - {"CFStringGetMaximumSizeForEncoding", (PyCFunction)CF_CFStringGetMaximumSizeForEncoding, 1, - PyDoc_STR("(CFIndex length, CFStringEncoding encoding) -> (CFIndex _rv)")}, - {"CFStringIsEncodingAvailable", (PyCFunction)CF_CFStringIsEncodingAvailable, 1, - PyDoc_STR("(CFStringEncoding encoding) -> (Boolean _rv)")}, - {"CFStringGetNameOfEncoding", (PyCFunction)CF_CFStringGetNameOfEncoding, 1, - PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")}, - {"CFStringConvertEncodingToNSStringEncoding", (PyCFunction)CF_CFStringConvertEncodingToNSStringEncoding, 1, - PyDoc_STR("(CFStringEncoding encoding) -> (UInt32 _rv)")}, - {"CFStringConvertNSStringEncodingToEncoding", (PyCFunction)CF_CFStringConvertNSStringEncodingToEncoding, 1, - PyDoc_STR("(UInt32 encoding) -> (CFStringEncoding _rv)")}, - {"CFStringConvertEncodingToWindowsCodepage", (PyCFunction)CF_CFStringConvertEncodingToWindowsCodepage, 1, - PyDoc_STR("(CFStringEncoding encoding) -> (UInt32 _rv)")}, - {"CFStringConvertWindowsCodepageToEncoding", (PyCFunction)CF_CFStringConvertWindowsCodepageToEncoding, 1, - PyDoc_STR("(UInt32 codepage) -> (CFStringEncoding _rv)")}, - {"CFStringConvertEncodingToIANACharSetName", (PyCFunction)CF_CFStringConvertEncodingToIANACharSetName, 1, - PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")}, - {"CFStringGetMostCompatibleMacStringEncoding", (PyCFunction)CF_CFStringGetMostCompatibleMacStringEncoding, 1, - PyDoc_STR("(CFStringEncoding encoding) -> (CFStringEncoding _rv)")}, - {"__CFStringMakeConstantString", (PyCFunction)CF___CFStringMakeConstantString, 1, - PyDoc_STR("(char* cStr) -> (CFStringRef _rv)")}, - {"CFURLGetTypeID", (PyCFunction)CF_CFURLGetTypeID, 1, - PyDoc_STR("() -> (CFTypeID _rv)")}, - {"CFURLCreateWithBytes", (PyCFunction)CF_CFURLCreateWithBytes, 1, - PyDoc_STR("(Buffer URLBytes, CFStringEncoding encoding, CFURLRef baseURL) -> (CFURLRef _rv)")}, - {"CFURLCreateFromFileSystemRepresentation", (PyCFunction)CF_CFURLCreateFromFileSystemRepresentation, 1, - PyDoc_STR("(Buffer buffer, Boolean isDirectory) -> (CFURLRef _rv)")}, - {"CFURLCreateFromFileSystemRepresentationRelativeToBase", (PyCFunction)CF_CFURLCreateFromFileSystemRepresentationRelativeToBase, 1, - PyDoc_STR("(Buffer buffer, Boolean isDirectory, CFURLRef baseURL) -> (CFURLRef _rv)")}, - {"CFURLCreateFromFSRef", (PyCFunction)CF_CFURLCreateFromFSRef, 1, - PyDoc_STR("(FSRef fsRef) -> (CFURLRef _rv)")}, - {"toCF", (PyCFunction)CF_toCF, 1, - PyDoc_STR("(python_object) -> (CF_object)")}, - {NULL, NULL, 0} -}; - - - - -/* Routines to convert any CF type to/from the corresponding CFxxxObj */ -PyObject *CFObj_New(CFTypeRef itself) -{ - if (itself == NULL) - { - PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); - return NULL; - } - if (CFGetTypeID(itself) == CFArrayGetTypeID()) return CFArrayRefObj_New((CFArrayRef)itself); - if (CFGetTypeID(itself) == CFDictionaryGetTypeID()) return CFDictionaryRefObj_New((CFDictionaryRef)itself); - if (CFGetTypeID(itself) == CFDataGetTypeID()) return CFDataRefObj_New((CFDataRef)itself); - if (CFGetTypeID(itself) == CFStringGetTypeID()) return CFStringRefObj_New((CFStringRef)itself); - if (CFGetTypeID(itself) == CFURLGetTypeID()) return CFURLRefObj_New((CFURLRef)itself); - /* XXXX Or should we use PyCF_CF2Python here?? */ - return CFTypeRefObj_New(itself); -} -int CFObj_Convert(PyObject *v, CFTypeRef *p_itself) -{ - - if (v == Py_None) { *p_itself = NULL; return 1; } - /* Check for other CF objects here */ - - if (!CFTypeRefObj_Check(v) && - !CFArrayRefObj_Check(v) && - !CFMutableArrayRefObj_Check(v) && - !CFDictionaryRefObj_Check(v) && - !CFMutableDictionaryRefObj_Check(v) && - !CFDataRefObj_Check(v) && - !CFMutableDataRefObj_Check(v) && - !CFStringRefObj_Check(v) && - !CFMutableStringRefObj_Check(v) && - !CFURLRefObj_Check(v) ) - { - /* XXXX Or should we use PyCF_Python2CF here?? */ - PyErr_SetString(PyExc_TypeError, "CF object required"); - return 0; - } - *p_itself = ((CFTypeRefObject *)v)->ob_itself; - return 1; -} - - -void init_CF(void) -{ - PyObject *m; - PyObject *d; - - - - PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFTypeRefObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFTypeRefObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(CFStringRef, CFStringRefObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFStringRef, CFStringRefObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableStringRef, CFMutableStringRefObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableStringRef, CFMutableStringRefObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(CFArrayRef, CFArrayRefObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFArrayRef, CFArrayRefObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableArrayRef, CFMutableArrayRefObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableArrayRef, CFMutableArrayRefObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(CFDictionaryRef, CFDictionaryRefObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFDictionaryRef, CFDictionaryRefObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableDictionaryRef, CFMutableDictionaryRefObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableDictionaryRef, CFMutableDictionaryRefObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(CFURLRef, CFURLRefObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFURLRef, CFURLRefObj_Convert); - - - m = Py_InitModule("_CF", CF_methods); - d = PyModule_GetDict(m); - CF_Error = PyMac_GetOSErrException(); - if (CF_Error == NULL || - PyDict_SetItemString(d, "Error", CF_Error) != 0) - return; - CFTypeRef_Type.ob_type = &PyType_Type; - if (PyType_Ready(&CFTypeRef_Type) < 0) return; - Py_INCREF(&CFTypeRef_Type); - PyModule_AddObject(m, "CFTypeRef", (PyObject *)&CFTypeRef_Type); - /* Backward-compatible name */ - Py_INCREF(&CFTypeRef_Type); - PyModule_AddObject(m, "CFTypeRefType", (PyObject *)&CFTypeRef_Type); - CFArrayRef_Type.ob_type = &PyType_Type; - CFArrayRef_Type.tp_base = &CFTypeRef_Type; - if (PyType_Ready(&CFArrayRef_Type) < 0) return; - Py_INCREF(&CFArrayRef_Type); - PyModule_AddObject(m, "CFArrayRef", (PyObject *)&CFArrayRef_Type); - /* Backward-compatible name */ - Py_INCREF(&CFArrayRef_Type); - PyModule_AddObject(m, "CFArrayRefType", (PyObject *)&CFArrayRef_Type); - CFMutableArrayRef_Type.ob_type = &PyType_Type; - CFMutableArrayRef_Type.tp_base = &CFArrayRef_Type; - if (PyType_Ready(&CFMutableArrayRef_Type) < 0) return; - Py_INCREF(&CFMutableArrayRef_Type); - PyModule_AddObject(m, "CFMutableArrayRef", (PyObject *)&CFMutableArrayRef_Type); - /* Backward-compatible name */ - Py_INCREF(&CFMutableArrayRef_Type); - PyModule_AddObject(m, "CFMutableArrayRefType", (PyObject *)&CFMutableArrayRef_Type); - CFDictionaryRef_Type.ob_type = &PyType_Type; - CFDictionaryRef_Type.tp_base = &CFTypeRef_Type; - if (PyType_Ready(&CFDictionaryRef_Type) < 0) return; - Py_INCREF(&CFDictionaryRef_Type); - PyModule_AddObject(m, "CFDictionaryRef", (PyObject *)&CFDictionaryRef_Type); - /* Backward-compatible name */ - Py_INCREF(&CFDictionaryRef_Type); - PyModule_AddObject(m, "CFDictionaryRefType", (PyObject *)&CFDictionaryRef_Type); - CFMutableDictionaryRef_Type.ob_type = &PyType_Type; - CFMutableDictionaryRef_Type.tp_base = &CFDictionaryRef_Type; - if (PyType_Ready(&CFMutableDictionaryRef_Type) < 0) return; - Py_INCREF(&CFMutableDictionaryRef_Type); - PyModule_AddObject(m, "CFMutableDictionaryRef", (PyObject *)&CFMutableDictionaryRef_Type); - /* Backward-compatible name */ - Py_INCREF(&CFMutableDictionaryRef_Type); - PyModule_AddObject(m, "CFMutableDictionaryRefType", (PyObject *)&CFMutableDictionaryRef_Type); - CFDataRef_Type.ob_type = &PyType_Type; - CFDataRef_Type.tp_base = &CFTypeRef_Type; - if (PyType_Ready(&CFDataRef_Type) < 0) return; - Py_INCREF(&CFDataRef_Type); - PyModule_AddObject(m, "CFDataRef", (PyObject *)&CFDataRef_Type); - /* Backward-compatible name */ - Py_INCREF(&CFDataRef_Type); - PyModule_AddObject(m, "CFDataRefType", (PyObject *)&CFDataRef_Type); - CFMutableDataRef_Type.ob_type = &PyType_Type; - CFMutableDataRef_Type.tp_base = &CFDataRef_Type; - if (PyType_Ready(&CFMutableDataRef_Type) < 0) return; - Py_INCREF(&CFMutableDataRef_Type); - PyModule_AddObject(m, "CFMutableDataRef", (PyObject *)&CFMutableDataRef_Type); - /* Backward-compatible name */ - Py_INCREF(&CFMutableDataRef_Type); - PyModule_AddObject(m, "CFMutableDataRefType", (PyObject *)&CFMutableDataRef_Type); - CFStringRef_Type.ob_type = &PyType_Type; - CFStringRef_Type.tp_base = &CFTypeRef_Type; - if (PyType_Ready(&CFStringRef_Type) < 0) return; - Py_INCREF(&CFStringRef_Type); - PyModule_AddObject(m, "CFStringRef", (PyObject *)&CFStringRef_Type); - /* Backward-compatible name */ - Py_INCREF(&CFStringRef_Type); - PyModule_AddObject(m, "CFStringRefType", (PyObject *)&CFStringRef_Type); - CFMutableStringRef_Type.ob_type = &PyType_Type; - CFMutableStringRef_Type.tp_base = &CFStringRef_Type; - if (PyType_Ready(&CFMutableStringRef_Type) < 0) return; - Py_INCREF(&CFMutableStringRef_Type); - PyModule_AddObject(m, "CFMutableStringRef", (PyObject *)&CFMutableStringRef_Type); - /* Backward-compatible name */ - Py_INCREF(&CFMutableStringRef_Type); - PyModule_AddObject(m, "CFMutableStringRefType", (PyObject *)&CFMutableStringRef_Type); - CFURLRef_Type.ob_type = &PyType_Type; - CFURLRef_Type.tp_base = &CFTypeRef_Type; - if (PyType_Ready(&CFURLRef_Type) < 0) return; - Py_INCREF(&CFURLRef_Type); - PyModule_AddObject(m, "CFURLRef", (PyObject *)&CFURLRef_Type); - /* Backward-compatible name */ - Py_INCREF(&CFURLRef_Type); - PyModule_AddObject(m, "CFURLRefType", (PyObject *)&CFURLRef_Type); - -#define _STRINGCONST(name) PyModule_AddObject(m, #name, CFStringRefObj_New(name)) - _STRINGCONST(kCFPreferencesAnyApplication); - _STRINGCONST(kCFPreferencesCurrentApplication); - _STRINGCONST(kCFPreferencesAnyHost); - _STRINGCONST(kCFPreferencesCurrentHost); - _STRINGCONST(kCFPreferencesAnyUser); - _STRINGCONST(kCFPreferencesCurrentUser); - - - -} - -/* ========================= End module _CF ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/cf/cfscan.py b/project/jni/python/src/Mac/Modules/cf/cfscan.py deleted file mode 100644 index 6de4f1edc..000000000 --- a/project/jni/python/src/Mac/Modules/cf/cfscan.py +++ /dev/null @@ -1,141 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner_OSX - -LONG = "CoreFoundation" -SHORT = "cf" -OBJECTS = ("CFTypeRef", - "CFArrayRef", "CFMutableArrayRef", - "CFDataRef", "CFMutableDataRef", - "CFDictionaryRef", "CFMutableDictionaryRef", - "CFStringRef", "CFMutableStringRef", - "CFURLRef", -## "CFPropertyListRef", - ) -# ADD object typenames here - -def main(): - input = [ - "CFBase.h", - "CFArray.h", -## "CFBag.h", -## "CFBundle.h", -## "CFCharacterSet.h", - "CFData.h", -## "CFDate.h", - "CFDictionary.h", -## "CFNumber.h", -## "CFPlugIn.h", - "CFPreferences.h", - "CFPropertyList.h", -## "CFSet.h", - "CFString.h", -## "CFStringEncodingExt.h", -## "CFTimeZone.h", - "CFURL.h", - ] - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.gentypetest(SHORT+"typetest.py") - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner_OSX): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist and name[:13] != 'CFPreferences': - t, n, m = arglist[0] - if t in OBJECTS and m == "InMode": - classname = "Method" - listname = t + "_methods" - # Special case for the silly first AllocatorRef argument - if t == 'CFAllocatorRef' and m == 'InMode' and len(arglist) > 1: - t, n, m = arglist[1] - if t in OBJECTS and m == "InMode": - classname = "MethodSkipArg1" - listname = t + "_methods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - - def makeblacklistnames(self): - return [ - # Memory allocator functions - "CFAllocatorGetDefault", - "CFAllocatorSetDefault", - "CFAllocatorAllocate", - "CFAllocatorReallocate", - "CFAllocatorDeallocate", - "CFGetAllocator", - # Array functions we skip for now. - "CFArrayGetValueAtIndex", - # Data pointer functions. Skip for now. - "CFDataGetBytePtr", - "CFDataGetMutableBytePtr", - "CFDataGetBytes", # XXXX Should support this one - # String functions - "CFStringGetPascalString", # Use the C-string methods. - "CFStringGetPascalStringPtr", # TBD automatically - "CFStringGetCStringPtr", - "CFStringGetCharactersPtr", - "CFStringGetCString", - "CFStringGetCharacters", - "CFURLCreateStringWithFileSystemPath", # Gone in later releases - "CFStringCreateMutableWithExternalCharactersNoCopy", # Not a clue... - "CFStringSetExternalCharactersNoCopy", - "CFStringGetCharacterAtIndex", # No format for single unichars yet. - "kCFStringEncodingInvalidId", # incompatible constant declaration - "CFPropertyListCreateFromXMLData", # Manually generated - ] - - def makegreylist(self): - return [] - - def makeblacklisttypes(self): - return [ - "CFComparatorFunction", # Callback function pointer - "CFAllocatorContext", # Not interested in providing our own allocator - "void_ptr_ptr", # Tricky. This is the initializer for arrays... - "void_ptr", # Ditto for various array lookup methods - "CFArrayApplierFunction", # Callback function pointer - "CFDictionaryApplierFunction", # Callback function pointer - "va_list", # For printf-to-a-cfstring. Use Python. - "const_CFStringEncoding_ptr", # To be done, I guess - ] - - def makerepairinstructions(self): - return [ - # Buffers in CF seem to be passed as UInt8 * normally. - ([("UInt8_ptr", "*", "InMode"), ("CFIndex", "*", "InMode")], - [("UcharInBuffer", "*", "*")]), - - ([("UniChar_ptr", "*", "InMode"), ("CFIndex", "*", "InMode")], - [("UnicodeInBuffer", "*", "*")]), - - # Some functions return a const char *. Don't worry, we won't modify it. - ([("const_char_ptr", "*", "ReturnMode")], - [("return_stringptr", "*", "*")]), - - # base URLs are optional (pass None for NULL) - ([("CFURLRef", "baseURL", "InMode")], - [("OptionalCFURLRef", "*", "*")]), - - # We handle CFPropertyListRef objects as plain CFTypeRef - ([("CFPropertyListRef", "*", "*")], - [("CFTypeRef", "*", "*")]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/cf/cfsupport.py b/project/jni/python/src/Mac/Modules/cf/cfsupport.py deleted file mode 100644 index c10a85eed..000000000 --- a/project/jni/python/src/Mac/Modules/cf/cfsupport.py +++ /dev/null @@ -1,666 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -#error missing SetActionFilter - -import string - -# Declarations that change for each manager -MODNAME = '_CF' # The name of the module - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'CF' # The prefix for module-wide routines -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Special case generator for the functions that have an AllocatorRef first argument, -# which we skip anyway, and the object as the second arg. -class MethodSkipArg1(MethodGenerator): - """Similar to MethodGenerator, but has self as last argument""" - - def parseArgumentList(self, args): - if len(args) < 2: - raise ValueError, "MethodSkipArg1 expects at least 2 args" - a0, a1, args = args[0], args[1], args[2:] - t0, n0, m0 = a0 - if t0 != "CFAllocatorRef" and m0 != InMode: - raise ValueError, "MethodSkipArg1 should have dummy AllocatorRef first arg" - t1, n1, m1 = a1 - if m1 != InMode: - raise ValueError, "method's 'self' must be 'InMode'" - dummy = Variable(t0, n0, m0) - self.argumentList.append(dummy) - self.itself = Variable(t1, "_self->ob_itself", SelfMode) - self.argumentList.append(self.itself) - FunctionGenerator.parseArgumentList(self, args) - - -# Create the type objects - -includestuff = includestuff + """ -#include - -#include "pycfbridge.h" - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_CFObj_New(CFTypeRef); -extern int _CFObj_Convert(PyObject *, CFTypeRef *); -#define CFObj_New _CFObj_New -#define CFObj_Convert _CFObj_Convert - -extern PyObject *_CFTypeRefObj_New(CFTypeRef); -extern int _CFTypeRefObj_Convert(PyObject *, CFTypeRef *); -#define CFTypeRefObj_New _CFTypeRefObj_New -#define CFTypeRefObj_Convert _CFTypeRefObj_Convert - -extern PyObject *_CFStringRefObj_New(CFStringRef); -extern int _CFStringRefObj_Convert(PyObject *, CFStringRef *); -#define CFStringRefObj_New _CFStringRefObj_New -#define CFStringRefObj_Convert _CFStringRefObj_Convert - -extern PyObject *_CFMutableStringRefObj_New(CFMutableStringRef); -extern int _CFMutableStringRefObj_Convert(PyObject *, CFMutableStringRef *); -#define CFMutableStringRefObj_New _CFMutableStringRefObj_New -#define CFMutableStringRefObj_Convert _CFMutableStringRefObj_Convert - -extern PyObject *_CFArrayRefObj_New(CFArrayRef); -extern int _CFArrayRefObj_Convert(PyObject *, CFArrayRef *); -#define CFArrayRefObj_New _CFArrayRefObj_New -#define CFArrayRefObj_Convert _CFArrayRefObj_Convert - -extern PyObject *_CFMutableArrayRefObj_New(CFMutableArrayRef); -extern int _CFMutableArrayRefObj_Convert(PyObject *, CFMutableArrayRef *); -#define CFMutableArrayRefObj_New _CFMutableArrayRefObj_New -#define CFMutableArrayRefObj_Convert _CFMutableArrayRefObj_Convert - -extern PyObject *_CFDataRefObj_New(CFDataRef); -extern int _CFDataRefObj_Convert(PyObject *, CFDataRef *); -#define CFDataRefObj_New _CFDataRefObj_New -#define CFDataRefObj_Convert _CFDataRefObj_Convert - -extern PyObject *_CFMutableDataRefObj_New(CFMutableDataRef); -extern int _CFMutableDataRefObj_Convert(PyObject *, CFMutableDataRef *); -#define CFMutableDataRefObj_New _CFMutableDataRefObj_New -#define CFMutableDataRefObj_Convert _CFMutableDataRefObj_Convert - -extern PyObject *_CFDictionaryRefObj_New(CFDictionaryRef); -extern int _CFDictionaryRefObj_Convert(PyObject *, CFDictionaryRef *); -#define CFDictionaryRefObj_New _CFDictionaryRefObj_New -#define CFDictionaryRefObj_Convert _CFDictionaryRefObj_Convert - -extern PyObject *_CFMutableDictionaryRefObj_New(CFMutableDictionaryRef); -extern int _CFMutableDictionaryRefObj_Convert(PyObject *, CFMutableDictionaryRef *); -#define CFMutableDictionaryRefObj_New _CFMutableDictionaryRefObj_New -#define CFMutableDictionaryRefObj_Convert _CFMutableDictionaryRefObj_Convert - -extern PyObject *_CFURLRefObj_New(CFURLRef); -extern int _CFURLRefObj_Convert(PyObject *, CFURLRef *); -extern int _OptionalCFURLRefObj_Convert(PyObject *, CFURLRef *); -#define CFURLRefObj_New _CFURLRefObj_New -#define CFURLRefObj_Convert _CFURLRefObj_Convert -#define OptionalCFURLRefObj_Convert _OptionalCFURLRefObj_Convert -#endif - -/* -** Parse/generate CFRange records -*/ -PyObject *CFRange_New(CFRange *itself) -{ - - return Py_BuildValue("ll", (long)itself->location, (long)itself->length); -} - -int -CFRange_Convert(PyObject *v, CFRange *p_itself) -{ - long location, length; - - if( !PyArg_ParseTuple(v, "ll", &location, &length) ) - return 0; - p_itself->location = (CFIndex)location; - p_itself->length = (CFIndex)length; - return 1; -} - -/* Optional CFURL argument or None (passed as NULL) */ -int -OptionalCFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself) -{ - if ( v == Py_None ) { - p_itself = NULL; - return 1; - } - return CFURLRefObj_Convert(v, p_itself); -} -""" - -finalstuff = finalstuff + """ - -/* Routines to convert any CF type to/from the corresponding CFxxxObj */ -PyObject *CFObj_New(CFTypeRef itself) -{ - if (itself == NULL) - { - PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); - return NULL; - } - if (CFGetTypeID(itself) == CFArrayGetTypeID()) return CFArrayRefObj_New((CFArrayRef)itself); - if (CFGetTypeID(itself) == CFDictionaryGetTypeID()) return CFDictionaryRefObj_New((CFDictionaryRef)itself); - if (CFGetTypeID(itself) == CFDataGetTypeID()) return CFDataRefObj_New((CFDataRef)itself); - if (CFGetTypeID(itself) == CFStringGetTypeID()) return CFStringRefObj_New((CFStringRef)itself); - if (CFGetTypeID(itself) == CFURLGetTypeID()) return CFURLRefObj_New((CFURLRef)itself); - /* XXXX Or should we use PyCF_CF2Python here?? */ - return CFTypeRefObj_New(itself); -} -int CFObj_Convert(PyObject *v, CFTypeRef *p_itself) -{ - - if (v == Py_None) { *p_itself = NULL; return 1; } - /* Check for other CF objects here */ - - if (!CFTypeRefObj_Check(v) && - !CFArrayRefObj_Check(v) && - !CFMutableArrayRefObj_Check(v) && - !CFDictionaryRefObj_Check(v) && - !CFMutableDictionaryRefObj_Check(v) && - !CFDataRefObj_Check(v) && - !CFMutableDataRefObj_Check(v) && - !CFStringRefObj_Check(v) && - !CFMutableStringRefObj_Check(v) && - !CFURLRefObj_Check(v) ) - { - /* XXXX Or should we use PyCF_Python2CF here?? */ - PyErr_SetString(PyExc_TypeError, "CF object required"); - return 0; - } - *p_itself = ((CFTypeRefObject *)v)->ob_itself; - return 1; -} -""" - -initstuff = initstuff + """ -PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFObj_New); -PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFObj_Convert); -PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFTypeRefObj_New); -PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFTypeRefObj_Convert); -PyMac_INIT_TOOLBOX_OBJECT_NEW(CFStringRef, CFStringRefObj_New); -PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFStringRef, CFStringRefObj_Convert); -PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableStringRef, CFMutableStringRefObj_New); -PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableStringRef, CFMutableStringRefObj_Convert); -PyMac_INIT_TOOLBOX_OBJECT_NEW(CFArrayRef, CFArrayRefObj_New); -PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFArrayRef, CFArrayRefObj_Convert); -PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableArrayRef, CFMutableArrayRefObj_New); -PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableArrayRef, CFMutableArrayRefObj_Convert); -PyMac_INIT_TOOLBOX_OBJECT_NEW(CFDictionaryRef, CFDictionaryRefObj_New); -PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFDictionaryRef, CFDictionaryRefObj_Convert); -PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableDictionaryRef, CFMutableDictionaryRefObj_New); -PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableDictionaryRef, CFMutableDictionaryRefObj_Convert); -PyMac_INIT_TOOLBOX_OBJECT_NEW(CFURLRef, CFURLRefObj_New); -PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFURLRef, CFURLRefObj_Convert); -""" - -variablestuff=""" -#define _STRINGCONST(name) PyModule_AddObject(m, #name, CFStringRefObj_New(name)) -_STRINGCONST(kCFPreferencesAnyApplication); -_STRINGCONST(kCFPreferencesCurrentApplication); -_STRINGCONST(kCFPreferencesAnyHost); -_STRINGCONST(kCFPreferencesCurrentHost); -_STRINGCONST(kCFPreferencesAnyUser); -_STRINGCONST(kCFPreferencesCurrentUser); - -""" - -Boolean = Type("Boolean", "l") -CFTypeID = Type("CFTypeID", "l") # XXXX a guess, seems better than OSTypeType. -CFHashCode = Type("CFHashCode", "l") -CFIndex = Type("CFIndex", "l") -CFRange = OpaqueByValueType('CFRange', 'CFRange') -CFOptionFlags = Type("CFOptionFlags", "l") -CFStringEncoding = Type("CFStringEncoding", "l") -CFComparisonResult = Type("CFComparisonResult", "l") # a bit dangerous, it's an enum -CFURLPathStyle = Type("CFURLPathStyle", "l") # a bit dangerous, it's an enum - -char_ptr = stringptr -return_stringptr = Type("char *", "s") # ONLY FOR RETURN VALUES!! - -CFAllocatorRef = FakeType("(CFAllocatorRef)NULL") -CFArrayCallBacks_ptr = FakeType("&kCFTypeArrayCallBacks") -CFDictionaryKeyCallBacks_ptr = FakeType("&kCFTypeDictionaryKeyCallBacks") -CFDictionaryValueCallBacks_ptr = FakeType("&kCFTypeDictionaryValueCallBacks") -# The real objects -CFTypeRef = OpaqueByValueType("CFTypeRef", "CFTypeRefObj") -CFArrayRef = OpaqueByValueType("CFArrayRef", "CFArrayRefObj") -CFMutableArrayRef = OpaqueByValueType("CFMutableArrayRef", "CFMutableArrayRefObj") -CFArrayRef = OpaqueByValueType("CFArrayRef", "CFArrayRefObj") -CFMutableArrayRef = OpaqueByValueType("CFMutableArrayRef", "CFMutableArrayRefObj") -CFDataRef = OpaqueByValueType("CFDataRef", "CFDataRefObj") -CFMutableDataRef = OpaqueByValueType("CFMutableDataRef", "CFMutableDataRefObj") -CFDictionaryRef = OpaqueByValueType("CFDictionaryRef", "CFDictionaryRefObj") -CFMutableDictionaryRef = OpaqueByValueType("CFMutableDictionaryRef", "CFMutableDictionaryRefObj") -CFStringRef = OpaqueByValueType("CFStringRef", "CFStringRefObj") -CFMutableStringRef = OpaqueByValueType("CFMutableStringRef", "CFMutableStringRefObj") -CFURLRef = OpaqueByValueType("CFURLRef", "CFURLRefObj") -OptionalCFURLRef = OpaqueByValueType("CFURLRef", "OptionalCFURLRefObj") -##CFPropertyListRef = OpaqueByValueType("CFPropertyListRef", "CFTypeRefObj") -# ADD object type here - -# Our (opaque) objects - -class MyGlobalObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - def outputCheckNewArg(self): - Output('if (itself == NULL)') - OutLbrace() - Output('PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");') - Output('return NULL;') - OutRbrace() - def outputStructMembers(self): - GlobalObjectDefinition.outputStructMembers(self) - Output("void (*ob_freeit)(CFTypeRef ptr);") - def outputInitStructMembers(self): - GlobalObjectDefinition.outputInitStructMembers(self) -## Output("it->ob_freeit = NULL;") - Output("it->ob_freeit = CFRelease;") - def outputCheckConvertArg(self): - Out(""" - if (v == Py_None) { *p_itself = NULL; return 1; } - /* Check for other CF objects here */ - """) - def outputCleanupStructMembers(self): - Output("if (self->ob_freeit && self->ob_itself)") - OutLbrace() - Output("self->ob_freeit((CFTypeRef)self->ob_itself);") - Output("self->ob_itself = NULL;") - OutRbrace() - - def outputCompare(self): - Output() - Output("static int %s_compare(%s *self, %s *other)", self.prefix, self.objecttype, self.objecttype) - OutLbrace() - Output("/* XXXX Or should we use CFEqual?? */") - Output("if ( self->ob_itself > other->ob_itself ) return 1;") - Output("if ( self->ob_itself < other->ob_itself ) return -1;") - Output("return 0;") - OutRbrace() - - def outputHash(self): - Output() - Output("static int %s_hash(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("/* XXXX Or should we use CFHash?? */") - Output("return (int)self->ob_itself;") - OutRbrace() - - def outputRepr(self): - Output() - Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("char buf[100];") - Output("""sprintf(buf, "", (int)CFGetTypeID(self->ob_itself), (unsigned)self, (unsigned)self->ob_itself);""") - Output("return PyString_FromString(buf);") - OutRbrace() - - def output_tp_newBody(self): - Output("PyObject *self;") - Output - Output("if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;") - Output("((%s *)self)->ob_itself = NULL;", self.objecttype) - Output("((%s *)self)->ob_freeit = CFRelease;", self.objecttype) - Output("return self;") - - def output_tp_initBody(self): - Output("%s itself;", self.itselftype) - Output("char *kw[] = {\"itself\", 0};") - Output() - Output("if (PyArg_ParseTupleAndKeywords(_args, _kwds, \"O&\", kw, %s_Convert, &itself))", - self.prefix) - OutLbrace() - Output("((%s *)_self)->ob_itself = itself;", self.objecttype) - Output("return 0;") - OutRbrace() - if self.prefix != 'CFTypeRefObj': - Output() - Output("/* Any CFTypeRef descendent is allowed as initializer too */") - Output("if (PyArg_ParseTupleAndKeywords(_args, _kwds, \"O&\", kw, CFTypeRefObj_Convert, &itself))") - OutLbrace() - Output("((%s *)_self)->ob_itself = itself;", self.objecttype) - Output("return 0;") - OutRbrace() - Output("return -1;") - -class CFTypeRefObjectDefinition(MyGlobalObjectDefinition): - pass - -class CFArrayRefObjectDefinition(MyGlobalObjectDefinition): - basetype = "CFTypeRef_Type" - - def outputRepr(self): - Output() - Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("char buf[100];") - Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") - Output("return PyString_FromString(buf);") - OutRbrace() - -class CFMutableArrayRefObjectDefinition(MyGlobalObjectDefinition): - basetype = "CFArrayRef_Type" - - def outputRepr(self): - Output() - Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("char buf[100];") - Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") - Output("return PyString_FromString(buf);") - OutRbrace() - -class CFDictionaryRefObjectDefinition(MyGlobalObjectDefinition): - basetype = "CFTypeRef_Type" - - def outputRepr(self): - Output() - Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("char buf[100];") - Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") - Output("return PyString_FromString(buf);") - OutRbrace() - -class CFMutableDictionaryRefObjectDefinition(MyGlobalObjectDefinition): - basetype = "CFDictionaryRef_Type" - - def outputRepr(self): - Output() - Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("char buf[100];") - Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") - Output("return PyString_FromString(buf);") - OutRbrace() - -class CFDataRefObjectDefinition(MyGlobalObjectDefinition): - basetype = "CFTypeRef_Type" - - def outputCheckConvertArg(self): - Out(""" - if (v == Py_None) { *p_itself = NULL; return 1; } - if (PyString_Check(v)) { - char *cStr; - int cLen; - if( PyString_AsStringAndSize(v, &cStr, &cLen) < 0 ) return 0; - *p_itself = CFDataCreate((CFAllocatorRef)NULL, (unsigned char *)cStr, cLen); - return 1; - } - """) - - def outputRepr(self): - Output() - Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("char buf[100];") - Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") - Output("return PyString_FromString(buf);") - OutRbrace() - -class CFMutableDataRefObjectDefinition(MyGlobalObjectDefinition): - basetype = "CFDataRef_Type" - - def outputRepr(self): - Output() - Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("char buf[100];") - Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") - Output("return PyString_FromString(buf);") - OutRbrace() - -class CFStringRefObjectDefinition(MyGlobalObjectDefinition): - basetype = "CFTypeRef_Type" - - def outputCheckConvertArg(self): - Out(""" - if (v == Py_None) { *p_itself = NULL; return 1; } - if (PyString_Check(v)) { - char *cStr; - if (!PyArg_Parse(v, "es", "ascii", &cStr)) - return NULL; - *p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII); - PyMem_Free(cStr); - return 1; - } - if (PyUnicode_Check(v)) { - /* We use the CF types here, if Python was configured differently that will give an error */ - CFIndex size = PyUnicode_GetSize(v); - UniChar *unichars = PyUnicode_AsUnicode(v); - if (!unichars) return 0; - *p_itself = CFStringCreateWithCharacters((CFAllocatorRef)NULL, unichars, size); - return 1; - } - - """) - - def outputRepr(self): - Output() - Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("char buf[100];") - Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") - Output("return PyString_FromString(buf);") - OutRbrace() - -class CFMutableStringRefObjectDefinition(CFStringRefObjectDefinition): - basetype = "CFStringRef_Type" - - def outputCheckConvertArg(self): - # Mutable, don't allow Python strings - return MyGlobalObjectDefinition.outputCheckConvertArg(self) - - def outputRepr(self): - Output() - Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("char buf[100];") - Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") - Output("return PyString_FromString(buf);") - OutRbrace() - -class CFURLRefObjectDefinition(MyGlobalObjectDefinition): - basetype = "CFTypeRef_Type" - - def outputRepr(self): - Output() - Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("char buf[100];") - Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") - Output("return PyString_FromString(buf);") - OutRbrace() - - -# ADD object class here - -# From here on it's basically all boiler plate... - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff, variablestuff) -CFTypeRef_object = CFTypeRefObjectDefinition('CFTypeRef', 'CFTypeRefObj', 'CFTypeRef') -CFArrayRef_object = CFArrayRefObjectDefinition('CFArrayRef', 'CFArrayRefObj', 'CFArrayRef') -CFMutableArrayRef_object = CFMutableArrayRefObjectDefinition('CFMutableArrayRef', 'CFMutableArrayRefObj', 'CFMutableArrayRef') -CFDictionaryRef_object = CFDictionaryRefObjectDefinition('CFDictionaryRef', 'CFDictionaryRefObj', 'CFDictionaryRef') -CFMutableDictionaryRef_object = CFMutableDictionaryRefObjectDefinition('CFMutableDictionaryRef', 'CFMutableDictionaryRefObj', 'CFMutableDictionaryRef') -CFDataRef_object = CFDataRefObjectDefinition('CFDataRef', 'CFDataRefObj', 'CFDataRef') -CFMutableDataRef_object = CFMutableDataRefObjectDefinition('CFMutableDataRef', 'CFMutableDataRefObj', 'CFMutableDataRef') -CFStringRef_object = CFStringRefObjectDefinition('CFStringRef', 'CFStringRefObj', 'CFStringRef') -CFMutableStringRef_object = CFMutableStringRefObjectDefinition('CFMutableStringRef', 'CFMutableStringRefObj', 'CFMutableStringRef') -CFURLRef_object = CFURLRefObjectDefinition('CFURLRef', 'CFURLRefObj', 'CFURLRef') - -# ADD object here - -module.addobject(CFTypeRef_object) -module.addobject(CFArrayRef_object) -module.addobject(CFMutableArrayRef_object) -module.addobject(CFDictionaryRef_object) -module.addobject(CFMutableDictionaryRef_object) -module.addobject(CFDataRef_object) -module.addobject(CFMutableDataRef_object) -module.addobject(CFStringRef_object) -module.addobject(CFMutableStringRef_object) -module.addobject(CFURLRef_object) -# ADD addobject call here - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -Method = OSErrWeakLinkMethodGenerator - -# Create and populate the lists -functions = [] -CFTypeRef_methods = [] -CFArrayRef_methods = [] -CFMutableArrayRef_methods = [] -CFDictionaryRef_methods = [] -CFMutableDictionaryRef_methods = [] -CFDataRef_methods = [] -CFMutableDataRef_methods = [] -CFStringRef_methods = [] -CFMutableStringRef_methods = [] -CFURLRef_methods = [] - -# ADD _methods initializer here -execfile(INPUTFILE) - - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -for f in CFTypeRef_methods: CFTypeRef_object.add(f) -for f in CFArrayRef_methods: CFArrayRef_object.add(f) -for f in CFMutableArrayRef_methods: CFMutableArrayRef_object.add(f) -for f in CFDictionaryRef_methods: CFDictionaryRef_object.add(f) -for f in CFMutableDictionaryRef_methods: CFMutableDictionaryRef_object.add(f) -for f in CFDataRef_methods: CFDataRef_object.add(f) -for f in CFMutableDataRef_methods: CFMutableDataRef_object.add(f) -for f in CFStringRef_methods: CFStringRef_object.add(f) -for f in CFMutableStringRef_methods: CFMutableStringRef_object.add(f) -for f in CFURLRef_methods: CFURLRef_object.add(f) - -# Manual generators for getting data out of strings - -getasstring_body = """ -int size = CFStringGetLength(_self->ob_itself)+1; -char *data = malloc(size); - -if( data == NULL ) return PyErr_NoMemory(); -if ( CFStringGetCString(_self->ob_itself, data, size, 0) ) { - _res = (PyObject *)PyString_FromString(data); -} else { - PyErr_SetString(PyExc_RuntimeError, "CFStringGetCString could not fit the string"); - _res = NULL; -} -free(data); -return _res; -""" - -f = ManualGenerator("CFStringGetString", getasstring_body); -f.docstring = lambda: "() -> (string _rv)" -CFStringRef_object.add(f) - -getasunicode_body = """ -int size = CFStringGetLength(_self->ob_itself)+1; -Py_UNICODE *data = malloc(size*sizeof(Py_UNICODE)); -CFRange range; - -range.location = 0; -range.length = size; -if( data == NULL ) return PyErr_NoMemory(); -CFStringGetCharacters(_self->ob_itself, range, data); -_res = (PyObject *)PyUnicode_FromUnicode(data, size-1); -free(data); -return _res; -""" - -f = ManualGenerator("CFStringGetUnicode", getasunicode_body); -f.docstring = lambda: "() -> (unicode _rv)" -CFStringRef_object.add(f) - -# Get data from CFDataRef -getasdata_body = """ -int size = CFDataGetLength(_self->ob_itself); -char *data = (char *)CFDataGetBytePtr(_self->ob_itself); - -_res = (PyObject *)PyString_FromStringAndSize(data, size); -return _res; -""" - -f = ManualGenerator("CFDataGetData", getasdata_body); -f.docstring = lambda: "() -> (string _rv)" -CFDataRef_object.add(f) - -# Manual generator for CFPropertyListCreateFromXMLData because of funny error return -fromxml_body = """ -CFTypeRef _rv; -CFOptionFlags mutabilityOption; -CFStringRef errorString; -if (!PyArg_ParseTuple(_args, "l", - &mutabilityOption)) - return NULL; -_rv = CFPropertyListCreateFromXMLData((CFAllocatorRef)NULL, - _self->ob_itself, - mutabilityOption, - &errorString); -if (errorString) - CFRelease(errorString); -if (_rv == NULL) { - PyErr_SetString(PyExc_RuntimeError, "Parse error in XML data"); - return NULL; -} -_res = Py_BuildValue("O&", - CFTypeRefObj_New, _rv); -return _res; -""" -f = ManualGenerator("CFPropertyListCreateFromXMLData", fromxml_body) -f.docstring = lambda: "(CFOptionFlags mutabilityOption) -> (CFTypeRefObj)" -CFTypeRef_object.add(f) - -# Convert CF objects to Python objects -toPython_body = """ -_res = PyCF_CF2Python(_self->ob_itself); -return _res; -""" - -f = ManualGenerator("toPython", toPython_body); -f.docstring = lambda: "() -> (python_object)" -CFTypeRef_object.add(f) - -toCF_body = """ -CFTypeRef rv; -CFTypeID typeid; - -if (!PyArg_ParseTuple(_args, "O&", PyCF_Python2CF, &rv)) - return NULL; -typeid = CFGetTypeID(rv); - -if (typeid == CFStringGetTypeID()) - return Py_BuildValue("O&", CFStringRefObj_New, rv); -if (typeid == CFArrayGetTypeID()) - return Py_BuildValue("O&", CFArrayRefObj_New, rv); -if (typeid == CFDictionaryGetTypeID()) - return Py_BuildValue("O&", CFDictionaryRefObj_New, rv); -if (typeid == CFURLGetTypeID()) - return Py_BuildValue("O&", CFURLRefObj_New, rv); - -_res = Py_BuildValue("O&", CFTypeRefObj_New, rv); -return _res; -""" -f = ManualGenerator("toCF", toCF_body); -f.docstring = lambda: "(python_object) -> (CF_object)" -module.add(f) - -# ADD add forloop here - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/cf/pycfbridge.c b/project/jni/python/src/Mac/Modules/cf/pycfbridge.c deleted file mode 100644 index 06700b365..000000000 --- a/project/jni/python/src/Mac/Modules/cf/pycfbridge.c +++ /dev/null @@ -1,303 +0,0 @@ -/* -** Convert objects from Python to CoreFoundation and vice-versa. -*/ - -#include - -#include "Python.h" -#include "pymactoolbox.h" -#include "pycfbridge.h" - - -/* ---------------------------------------- */ -/* CoreFoundation objects to Python objects */ -/* ---------------------------------------- */ - -PyObject * -PyCF_CF2Python(CFTypeRef src) { - CFTypeID typeid; - - if( src == NULL ) { - Py_INCREF(Py_None); - return Py_None; - } - typeid = CFGetTypeID(src); - if (typeid == CFArrayGetTypeID()) - return PyCF_CF2Python_sequence((CFArrayRef)src); - if (typeid == CFDictionaryGetTypeID()) - return PyCF_CF2Python_mapping((CFDictionaryRef)src); - return PyCF_CF2Python_simple(src); -} - -PyObject * -PyCF_CF2Python_sequence(CFArrayRef src) { - int size = CFArrayGetCount(src); - PyObject *rv; - CFTypeRef item_cf; - PyObject *item_py = NULL; - int i; - - if ( (rv=PyList_New(size)) == NULL ) - return NULL; - for(i=0; iob_type->tp_name); - return 0; - } - size = PySequence_Size(src); - rv = CFArrayCreateMutable((CFAllocatorRef)NULL, size, &kCFTypeArrayCallBacks); - if (rv == NULL) { - PyMac_Error(resNotFound); - goto err; - } - - for( i=0; iob_type->tp_name); - return 0; - } - size = PyMapping_Size(src); - rv = CFDictionaryCreateMutable((CFAllocatorRef)NULL, size, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); - if (rv == NULL) { - PyMac_Error(resNotFound); - goto err; - } - if ( (aslist = PyMapping_Items(src)) == NULL ) goto err; - - for( i=0; iob_type->tp_name); - return 0; -} - -int -PyCF_Python2CF_string(PyObject *src, CFStringRef *dst) { - char *chars; - CFIndex size; - UniChar *unichars; - - if (PyString_Check(src)) { - if (!PyArg_Parse(src, "es", "ascii", &chars)) - return 0; /* This error is more descriptive than the general one below */ - *dst = CFStringCreateWithCString((CFAllocatorRef)NULL, chars, kCFStringEncodingASCII); - PyMem_Free(chars); - return 1; - } - if (PyUnicode_Check(src)) { - /* We use the CF types here, if Python was configured differently that will give an error */ - size = PyUnicode_GetSize(src); - if ((unichars = PyUnicode_AsUnicode(src)) == NULL ) goto err; - *dst = CFStringCreateWithCharacters((CFAllocatorRef)NULL, unichars, size); - return 1; - } -err: - PyErr_Format(PyExc_TypeError, - "Cannot convert %.500s objects to CFString", - src->ob_type->tp_name); - return 0; -} diff --git a/project/jni/python/src/Mac/Modules/cf/pycfbridge.h b/project/jni/python/src/Mac/Modules/cf/pycfbridge.h deleted file mode 100644 index 3377d5dcb..000000000 --- a/project/jni/python/src/Mac/Modules/cf/pycfbridge.h +++ /dev/null @@ -1,11 +0,0 @@ -extern PyObject *PyCF_CF2Python(CFTypeRef src); -extern PyObject *PyCF_CF2Python_sequence(CFArrayRef src); -extern PyObject *PyCF_CF2Python_mapping(CFTypeRef src); -extern PyObject *PyCF_CF2Python_simple(CFTypeRef src); -extern PyObject *PyCF_CF2Python_string(CFStringRef src); - -extern int PyCF_Python2CF(PyObject *src, CFTypeRef *dst); -extern int PyCF_Python2CF_sequence(PyObject *src, CFArrayRef *dst); -extern int PyCF_Python2CF_mapping(PyObject *src, CFDictionaryRef *dst); -extern int PyCF_Python2CF_simple(PyObject *src, CFTypeRef *dst); -extern int PyCF_Python2CF_string(PyObject *src, CFStringRef *dst); \ No newline at end of file diff --git a/project/jni/python/src/Mac/Modules/cg/CFMLateImport.c b/project/jni/python/src/Mac/Modules/cg/CFMLateImport.c deleted file mode 100644 index bc2976e72..000000000 --- a/project/jni/python/src/Mac/Modules/cg/CFMLateImport.c +++ /dev/null @@ -1,1360 +0,0 @@ -/* - File: CFMLateImport.c - - Contains: Implementation of CFM late import library. - - Written by: Quinn - - Copyright: Copyright © 1999 by Apple Computer, Inc., all rights reserved. - - You may incorporate this Apple sample source code into your program(s) without - restriction. This Apple sample source code has been provided "AS IS" and the - responsibility for its operation is yours. You are not permitted to redistribute - this Apple sample source code as "Apple sample source code" after having made - changes. If you're going to re-distribute the source, we require that you make - it clear in the source that the code was descended from Apple sample source - code, but that you've made changes. - - Change History (most recent first): - - <13> 24/9/01 Quinn Fixes to compile with C++ activated. - <12> 21/9/01 Quinn [2710489] Fix typo in the comments for FragmentLookup. - <11> 21/9/01 Quinn Changes for CWPro7 Mach-O build. - <10> 19/9/01 Quinn Corrected implementation of kPEFRelocSmBySection. Added - implementations of kPEFRelocSetPosition and kPEFRelocLgByImport - (from code contributed by Eric Grant, Ned Holbrook, and Steve - Kalkwarf), although I can't test them yet. - <9> 19/9/01 Quinn We now handle unpacked data sections, courtesy of some code from - Ned Holbrook. - <8> 19/9/01 Quinn Minor fixes for the previous checkin. Updated some comments and - killed some dead code. - <7> 19/9/01 Quinn Simplified API and implementation after a suggestion by Eric - Grant. You no longer have to CFM export a dummy function; you - can just pass in the address of your fragment's init routine. - <6> 15/2/01 Quinn Modify compile-time warnings to complain if you try to build - this module into a Mach-O binary. - <5> 5/2/01 Quinn Removed redundant assignment in CFMLateImportCore. - <4> 30/11/00 Quinn Added comment about future of data symbols in CF. - <3> 16/11/00 Quinn Allow symbol finding via a callback and use that to implement - CFBundle support. - <2> 18/10/99 Quinn Renamed CFMLateImport to CFMLateImportLibrary to allow for - possible future API expansion. - <1> 15/6/99 Quinn First checked in. -*/ - -// To Do List: -// -// o get rid of dependence on ANSI "string.h", but how? -// -// Done: -// -// Ã investigate alternative APIs, like an external lookup routine -// renamed CFMLateImport to CFMLateImportLibrary to allow for -// future expansion of the APIs for things like CFMLateImportSymbol -// Ã test with non-zero fragment offset in the file -// Ã test more with MPW fragments -// Ã test data imports - -///////////////////////////////////////////////////////////////// - -// MoreIsBetter Setup - -//#include "MoreSetup.h" -#define MoreAssert(x) (true) -#define MoreAssertQ(x) - -// Mac OS Interfaces - -#if ! MORE_FRAMEWORK_INCLUDES - #include - #include -#endif - -// Standard C Interfaces - -#include - -// MIB Prototypes - -//#include "MoreInterfaceLib.h" -#define MoreBlockZero BlockZero - -// Our Prototypes - -#include "CFMLateImport.h" - -///////////////////////////////////////////////////////////////// - -#if TARGET_RT_MAC_MACHO - #error CFMLateImport is not suitable for use in a Mach-O project. -#elif !TARGET_RT_MAC_CFM || !TARGET_CPU_PPC - #error CFMLateImport has not been qualified for 68K or CFM-68K use. -#endif - -///////////////////////////////////////////////////////////////// -#pragma mark ----- Utility Routines ----- - -static OSStatus FSReadAtOffset(SInt16 refNum, SInt32 offset, SInt32 count, void *buffer) - // A convenient wrapper around PBRead which has two advantages - // over FSRead. First, it takes count as a value parameter. - // Second, it reads from an arbitrary offset into the file, - // which avoids a bunch of SetFPos calls. - // - // I guess this should go into "MoreFiles.h", but I'm not sure - // how we're going to integrate such a concept into MIB yet. -{ - ParamBlockRec pb; - - pb.ioParam.ioRefNum = refNum; - pb.ioParam.ioBuffer = (Ptr) buffer; - pb.ioParam.ioReqCount = count; - pb.ioParam.ioPosMode = fsFromStart; - pb.ioParam.ioPosOffset = offset; - - return PBReadSync(&pb); -} - -///////////////////////////////////////////////////////////////// -#pragma mark ----- Late Import Engine ----- - -// This structure represents the core data structure of the late import -// engine. It basically holds information about the fragment we're going -// to fix up. It starts off with the first three fields, which are -// provided by the client. Then, as we procede through the operation, -// we fill out more fields. - -struct FragToFixInfo { - CFragSystem7DiskFlatLocator locator; // How to find the fragment's container. - CFragConnectionID connID; // CFM connection to the fragment. - CFragInitFunction initRoutine; // The CFM init routine for the fragment. - PEFContainerHeader containerHeader; // The CFM header, read in from the container. - PEFSectionHeader *sectionHeaders; // The CFM section headers. A pointer block containing an array of containerHeader.sectionCount elements. - PEFLoaderInfoHeader *loaderSection; // The entire CFM loader section in a pointer block. - SInt16 fileRef; // A read-only path to the CFM container. We keep this here because one that one routine needs to read from the container. - void *section0Base; // The base address of section 0, which we go through hoops to calculate. - void *section1Base; // The base address of section 1, which we go through hoops to calculate. - Boolean disposeSectionPointers; // See below. -}; -typedef struct FragToFixInfo FragToFixInfo; - -// The disposeSectionPointers Boolean is designed for future cool VM -// support. If VM is on, the entire code fragment is file mapped into -// high memory, including the data we're forced to allocate the -// sectionHeaders and loaderSection memory blocks to maintain. If -// we could find the address of the entire file mapped container, -// we could access the information directly from there and thus -// we wouldn't need to allocate (or dispose of) the memory blocks -// for sectionHeaders and loaderSection. -// -// I haven't implemented this yet because a) I'm not sure how to do -// it with documented APIs, and b) I couldn't be bothered, but -// disposeSectionPointers remains as vestigial support for the concept. - -static OSStatus ReadContainerBasics(FragToFixInfo *fragToFix) - // Reads some basic information from the container of the - // fragment to fix and stores it in various fields of - // fragToFix. This includes: - // - // o containerHeader -- The contain header itself. - // o sectionHeaders -- The array of section headers (in a newly allocated pointer block). - // o loaderSection -- The entire loader section (in a newly allocated pointer block). - // - // Also sets disposeSectionPointers to indicate whether - // the last two pointers should be disposed of. - // - // Finally, it leaves the container file open for later - // folks who want to read data from it. -{ - OSStatus err; - UInt16 sectionIndex; - Boolean found; - - MoreAssertQ(fragToFix != nil); - MoreAssertQ(fragToFix->locator.fileSpec != nil); - MoreAssertQ(fragToFix->connID != nil); - MoreAssertQ(fragToFix->loaderSection == nil); - MoreAssertQ(fragToFix->sectionHeaders == nil); - MoreAssertQ(fragToFix->fileRef == 0); - - fragToFix->disposeSectionPointers = true; - - // Open up the file, read the container head, then read in - // all the section headers, then go looking through the - // section headers for the loader section (PEF defines - // that there can be only one). - - err = FSpOpenDF(fragToFix->locator.fileSpec, fsRdPerm, &fragToFix->fileRef); - if (err == noErr) { - err = FSReadAtOffset(fragToFix->fileRef, - fragToFix->locator.offset, - sizeof(fragToFix->containerHeader), - &fragToFix->containerHeader); - if (err == noErr) { - if ( fragToFix->containerHeader.tag1 != kPEFTag1 - || fragToFix->containerHeader.tag2 != kPEFTag2 - || fragToFix->containerHeader.architecture != kCompiledCFragArch - || fragToFix->containerHeader.formatVersion != kPEFVersion) { - err = cfragFragmentFormatErr; - } - } - if (err == noErr) { - fragToFix->sectionHeaders = (PEFSectionHeader *) NewPtr(fragToFix->containerHeader.sectionCount * sizeof(PEFSectionHeader)); - err = MemError(); - } - if (err == noErr) { - err = FSReadAtOffset(fragToFix->fileRef, - fragToFix->locator.offset + sizeof(fragToFix->containerHeader), - fragToFix->containerHeader.sectionCount * sizeof(PEFSectionHeader), - fragToFix->sectionHeaders); - } - if (err == noErr) { - sectionIndex = 0; - found = false; - while ( sectionIndex < fragToFix->containerHeader.sectionCount && ! found ) { - found = (fragToFix->sectionHeaders[sectionIndex].sectionKind == kPEFLoaderSection); - if ( ! found ) { - sectionIndex += 1; - } - } - } - if (err == noErr && ! found) { - err = cfragNoSectionErr; - } - - // Now read allocate a pointer block and read the loader section into it. - - if (err == noErr) { - fragToFix->loaderSection = (PEFLoaderInfoHeader *) NewPtr(fragToFix->sectionHeaders[sectionIndex].containerLength); - err = MemError(); - } - if (err == noErr) { - err = FSReadAtOffset(fragToFix->fileRef, - fragToFix->locator.offset + fragToFix->sectionHeaders[sectionIndex].containerOffset, - fragToFix->sectionHeaders[sectionIndex].containerLength, - fragToFix->loaderSection); - } - } - - // No clean up. The client must init fragToFix to zeros and then - // clean up regardless of whether we return an error. - - return err; -} - -static UInt32 DecodeVCountValue(const UInt8 *start, UInt32 *outCount) - // Given a pointer to the start of a variable length PEF value, - // work out the value (in *outCount). Returns the number of bytes - // consumed by the value. -{ - UInt8 * bytePtr; - UInt8 byte; - UInt32 count; - - bytePtr = (UInt8 *)start; - - // Code taken from "PEFBinaryFormat.h". - count = 0; - do { - byte = *bytePtr++; - count = (count << kPEFPkDataVCountShift) | (byte & kPEFPkDataVCountMask); - } while ((byte & kPEFPkDataVCountEndMask) != 0); - - *outCount = count; - return bytePtr - start; -} - -static UInt32 DecodeInstrCountValue(const UInt8 *inOpStart, UInt32 *outCount) - // Given a pointer to the start of an opcode (inOpStart), work out the - // count argument for that opcode (*outCount). Returns the number of - // bytes consumed by the opcode and count combination. -{ - MoreAssertQ(inOpStart != nil); - MoreAssertQ(outCount != nil); - - if (PEFPkDataCount5(*inOpStart) != 0) - { - // Simple case, count encoded in opcode. - *outCount = PEFPkDataCount5(*inOpStart); - return 1; - } - else - { - // Variable-length case. - return 1 + DecodeVCountValue(inOpStart + 1, outCount); - } -} - -static OSStatus UnpackPEFDataSection(const UInt8 * const packedData, UInt32 packedSize, - UInt8 * const unpackedData, UInt32 unpackedSize) -{ - OSErr err; - UInt32 offset; - UInt8 opCode; - UInt8 * unpackCursor; - - MoreAssertQ(packedData != nil); - MoreAssertQ(unpackedData != nil); - MoreAssertQ(unpackedSize >= packedSize); - - // The following asserts assume that the client allocated the memory with NewPtr, - // which may not always be true. However, the asserts' value in preventing accidental - // memory block overruns outweighs the possible maintenance effort. - - MoreAssertQ( packedSize == GetPtrSize( (Ptr) packedData ) ); - MoreAssertQ( unpackedSize == GetPtrSize( (Ptr) unpackedData) ); - - err = noErr; - offset = 0; - unpackCursor = unpackedData; - while (offset < packedSize) { - MoreAssertQ(unpackCursor < &unpackedData[unpackedSize]); - - opCode = packedData[offset]; - - switch (PEFPkDataOpcode(opCode)) { - case kPEFPkDataZero: - { - UInt32 count; - - offset += DecodeInstrCountValue(&packedData[offset], &count); - - MoreBlockZero(unpackCursor, count); - unpackCursor += count; - } - break; - - case kPEFPkDataBlock: - { - UInt32 blockSize; - - offset += DecodeInstrCountValue(&packedData[offset], &blockSize); - - BlockMoveData(&packedData[offset], unpackCursor, blockSize); - unpackCursor += blockSize; - offset += blockSize; - } - break; - - case kPEFPkDataRepeat: - { - UInt32 blockSize; - UInt32 repeatCount; - UInt32 loopCounter; - - offset += DecodeInstrCountValue(&packedData[offset], &blockSize); - offset += DecodeVCountValue(&packedData[offset], &repeatCount); - repeatCount += 1; // stored value is (repeatCount - 1) - - for (loopCounter = 0; loopCounter < repeatCount; loopCounter++) { - BlockMoveData(&packedData[offset], unpackCursor, blockSize); - unpackCursor += blockSize; - } - offset += blockSize; - } - break; - - case kPEFPkDataRepeatBlock: - { - UInt32 commonSize; - UInt32 customSize; - UInt32 repeatCount; - const UInt8 *commonData; - const UInt8 *customData; - UInt32 loopCounter; - - offset += DecodeInstrCountValue(&packedData[offset], &commonSize); - offset += DecodeVCountValue(&packedData[offset], &customSize); - offset += DecodeVCountValue(&packedData[offset], &repeatCount); - - commonData = &packedData[offset]; - customData = &packedData[offset + commonSize]; - - for (loopCounter = 0; loopCounter < repeatCount; loopCounter++) { - BlockMoveData(commonData, unpackCursor, commonSize); - unpackCursor += commonSize; - BlockMoveData(customData, unpackCursor, customSize); - unpackCursor += customSize; - customData += customSize; - } - BlockMoveData(commonData, unpackCursor, commonSize); - unpackCursor += commonSize; - offset += (repeatCount * (commonSize + customSize)) + commonSize; - } - break; - - case kPEFPkDataRepeatZero: - { - UInt32 commonSize; - UInt32 customSize; - UInt32 repeatCount; - const UInt8 *customData; - UInt32 loopCounter; - - offset += DecodeInstrCountValue(&packedData[offset], &commonSize); - offset += DecodeVCountValue(&packedData[offset], &customSize); - offset += DecodeVCountValue(&packedData[offset], &repeatCount); - - customData = &packedData[offset]; - - for (loopCounter = 0; loopCounter < repeatCount; loopCounter++) { - MoreBlockZero(unpackCursor, commonSize); - unpackCursor += commonSize; - BlockMoveData(customData, unpackCursor, customSize); - unpackCursor += customSize; - customData += customSize; - } - MoreBlockZero(unpackCursor, commonSize); - unpackCursor += commonSize; - offset += repeatCount * customSize; - } - break; - - default: - #if MORE_DEBUG - DebugStr("\pUnpackPEFDataSection: Unexpected data opcode"); - #endif - err = cfragFragmentCorruptErr; - goto leaveNow; - break; - } - } - -leaveNow: - return err; -} - -/* SetupSectionBaseAddresses Rationale - ----------------------------------- - - OK, here's where things get weird. In order to run the relocation - engine, I need to be able to find the base address of an instantiated - section of the fragment we're fixing up given only its section number. - This isn't hard for CFM to do because it's the one that instantiated the - sections in the first place. It's surprisingly difficult to do if - you're not CFM. [And you don't have access to the private CFM APis for - doing it.] - - [Alan Lillich is going to kill me when he reads this! I should point out - that TVector's don't have to contain two words, they can be longer, - and that the second word isn't necessarily a TOC pointer, it's - just that the calling conventions require that it be put in the - TOC register when the code is called. - - Furthermore, the code section isn't always section 0, and the data - section isn't always section 1, and there can be zero to many sections - of each type. - - But these niceties are besides the point: I'm doing something tricky - because I don't have a nice API for getting section base addresses. - If I had a nice API for doing that, none of this code would exist. - ] - - The technique is very sneaky (thanks to Eric Grant). The fragment to - fix necessarily has a CFM init routine (because it needs that routine - in order to capture the fragment location and connection ID). Thus the - fragment to fix must have a TVector in its data section. TVectors are - interesting because they're made up of two words. The first is a pointer - to the code that implements the routine; the second is a pointer to the TOC - for the fragment that's exporting the TVector. How TVectors are - created is interesting too. On disk, a TVector consists of two words, - the first being the offset from the start of the code section to the - routine, the second being the offset from the start of the data section - to the TOC base. When CFM prepares a TVector, it applies the following - transform: - - tvector.codePtr = tvector.codeOffset + base of code section - tvector.tocPtr = tvector.tocOffset + base of data section - - Now, you can reverse these questions to make them: - - base of code section = tvector.codePtr - tvector.codeOffset - base of data section = tvector.dataPtr - tvector.dataOffset - - So if you can find the relocated contents of the TVector and - find the original offsets that made up the TVector, you can then - calculate the base address of both the code and data sections. - - Finding the relocated contents of the TVector is easy; I simply - require the client to pass in a pointer to its init routine. - A routine pointer is a TVector pointer, so you can just cast it - and extract the pair of words. - - Finding the original offsets is a trickier. My technique is to - look up the init routine in the fragment's loader info header. This - yields the section number and offset where the init routine's unrelocated - TVector exists. Once I have that, I can just read the unrelocated TVector - out of the file and extract the offsets. -*/ - -struct TVector { - void *codePtr; - void *tocPtr; -}; -typedef struct TVector TVector; - -static OSStatus SetupSectionBaseAddresses(FragToFixInfo *fragToFix) - // This routine initialises the section0Base and section1Base - // base fields of fragToFix to the base addresses of the - // instantiated fragment represented by the other fields - // of fragToFix. The process works in three states: - // - // 1. Find the contents of the relocated TVector of the - // fragment's initialisation routine, provided to us by - // the caller. - // - // 2. Find the contents of the non-relocated TVector by - // looking it up in the PEF loader info header and then - // using that to read the TVector contents from disk. - // This yields the offsets from the section bases for - // the init routine. - // - // 3. Subtract 2 from 3. -{ - OSStatus err; - TVector * relocatedExport; - SInt32 initSection; - UInt32 initOffset; - PEFSectionHeader * initSectionHeader; - Ptr packedDataSection; - Ptr unpackedDataSection; - TVector originalOffsets; - - packedDataSection = nil; - unpackedDataSection = nil; - - // Step 1. - - // First find the init routine's TVector, which gives us the relocated - // offsets of the init routine into the data and code sections. - - relocatedExport = (TVector *) fragToFix->initRoutine; - - // Step 2. - - // Now find the init routine's TVector's offsets in the data section on - // disk. This gives us the raw offsets from the data and code section - // of the beginning of the init routine. - - err = noErr; - initSection = fragToFix->loaderSection->initSection; - initOffset = fragToFix->loaderSection->initOffset; - if (initSection == -1) { - err = cfragFragmentUsageErr; - } - if (err == noErr) { - MoreAssertQ( initSection >= 0 ); // Negative indexes are pseudo-sections which are just not allowed! - MoreAssertQ( initSection < fragToFix->containerHeader.sectionCount ); - - initSectionHeader = &fragToFix->sectionHeaders[initSection]; - - // If the data section is packed, unpack it to a temporary buffer and then get the - // original offsets from that buffer. If the data section is unpacked, just read - // the original offsets directly off the disk. - - if ( initSectionHeader->sectionKind == kPEFPackedDataSection ) { - - // Allocate space for packed and unpacked copies of the section. - - packedDataSection = NewPtr(initSectionHeader->containerLength); - err = MemError(); - - if (err == noErr) { - unpackedDataSection = NewPtr(initSectionHeader->unpackedLength); - err = MemError(); - } - - // Read the contents of the packed section. - - if (err == noErr) { - err = FSReadAtOffset( fragToFix->fileRef, - fragToFix->locator.offset - + initSectionHeader->containerOffset, - initSectionHeader->containerLength, - packedDataSection); - } - - // Unpack the data into the unpacked section. - - if (err == noErr) { - err = UnpackPEFDataSection( (UInt8 *) packedDataSection, initSectionHeader->containerLength, - (UInt8 *) unpackedDataSection, initSectionHeader->unpackedLength); - } - - // Extract the init routine's TVector from the unpacked section. - - if (err == noErr) { - BlockMoveData(unpackedDataSection + initOffset, &originalOffsets, sizeof(TVector)); - } - - } else { - MoreAssertQ(fragToFix->sectionHeaders[initSection].sectionKind == kPEFUnpackedDataSection); - err = FSReadAtOffset(fragToFix->fileRef, - fragToFix->locator.offset - + fragToFix->sectionHeaders[initSection].containerOffset - + initOffset, - sizeof(TVector), - &originalOffsets); - } - } - - // Step 3. - - // Do the maths to subtract the unrelocated offsets from the current address - // to get the base address. - - if (err == noErr) { - fragToFix->section0Base = ((char *) relocatedExport->codePtr) - (UInt32) originalOffsets.codePtr; - fragToFix->section1Base = ((char *) relocatedExport->tocPtr) - (UInt32) originalOffsets.tocPtr; - } - - // Clean up. - - if (packedDataSection != nil) { - DisposePtr(packedDataSection); - MoreAssertQ( MemError() == noErr ); - } - if (unpackedDataSection != nil) { - DisposePtr(unpackedDataSection); - MoreAssertQ( MemError() == noErr ); - } - return err; -} - -static void *GetSectionBaseAddress(const FragToFixInfo *fragToFix, UInt16 sectionIndex) - // This routine returns the base of the instantiated section - // whose index is sectionIndex. This routine is the evil twin - // of SetupSectionBaseAddresses. It simply returns the values - // for section 0 and 1 that we derived in SetupSectionBaseAddresses. - // In a real implementation, this routine would call CFM API - // to get this information, and SetupSectionBaseAddresses would - // not exist, but CFM does not export the necessary APIs to - // third parties. -{ - void *result; - - MoreAssertQ(fragToFix != nil); - MoreAssertQ(fragToFix->containerHeader.tag1 == kPEFTag1); - - switch (sectionIndex) { - case 0: - result = fragToFix->section0Base; - break; - case 1: - result = fragToFix->section1Base; - break; - default: - result = nil; - break; - } - return result; -} - - -static OSStatus FindImportLibrary(PEFLoaderInfoHeader *loaderSection, const char *libraryName, PEFImportedLibrary **importLibrary) - // This routine finds the import library description (PEFImportedLibrary) - // for the import library libraryName in the PEF loader section. - // It sets *importLibrary to the address of the description. -{ - OSStatus err; - UInt32 librariesRemaining; - PEFImportedLibrary *thisImportLibrary; - Boolean found; - - MoreAssertQ(loaderSection != nil); - MoreAssertQ(libraryName != nil); - MoreAssertQ(importLibrary != nil); - - // Loop through each import library looking for a matching name. - - // Initialise thisImportLibrary to point to the byte after the - // end of the loader section's header. - - thisImportLibrary = (PEFImportedLibrary *) (loaderSection + 1); - librariesRemaining = loaderSection->importedLibraryCount; - found = false; - while ( librariesRemaining > 0 && ! found ) { - // PEF defines that import library names will have - // a null terminator, so we can just use strcmp. - found = (strcmp( libraryName, - ((char *)loaderSection) - + loaderSection->loaderStringsOffset - + thisImportLibrary->nameOffset) == 0); - // *** Remove ANSI strcmp eventually. - if ( ! found ) { - thisImportLibrary += 1; - librariesRemaining -= 1; - } - } - - if (found) { - *importLibrary = thisImportLibrary; - err = noErr; - } else { - *importLibrary = nil; - err = cfragNoLibraryErr; - } - return err; -} - -static OSStatus LookupSymbol(CFMLateImportLookupProc lookup, void *refCon, - PEFLoaderInfoHeader *loaderSection, - UInt32 symbolIndex, - UInt32 *symbolValue) - // This routine is used to look up a symbol during relocation. - // "lookup" is a client callback and refCon is its argument. - // Typically refCon is the CFM connection to the library that is - // substituting for the weak linked library. loaderSection - // is a pointer to the loader section of the fragment to fix up. - // symbolIndex is the index of the imported symbol in the loader section. - // The routine sets the word pointed to by symbolValue to the - // value of the symbol. - // - // The routine works by using symbolIndex to index into the imported - // symbol table to find the offset of the symbol's name in the string - // table. It then looks up the symbol by calling the client's "lookup" - // function and passes the resulting symbol address back in symbolValue. -{ - OSStatus err; - UInt32 *importSymbolTable; - UInt32 symbolStringOffset; - Boolean symbolIsWeak; - CFragSymbolClass symbolClass; - char *symbolStringAddress; - Str255 symbolString; - - MoreAssertQ(lookup != nil); - MoreAssertQ(loaderSection != nil); - MoreAssertQ(symbolIndex < loaderSection->totalImportedSymbolCount); - MoreAssertQ(symbolValue != nil); - - // Find the base of the imported symbol table. - - importSymbolTable = (UInt32 *)(((char *)(loaderSection + 1)) + (loaderSection->importedLibraryCount * sizeof(PEFImportedLibrary))); - - // Grab the appropriate entry out of the table and - // extract the information from that entry. - - symbolStringOffset = importSymbolTable[symbolIndex]; - symbolClass = PEFImportedSymbolClass(symbolStringOffset); - symbolIsWeak = ((symbolClass & kPEFWeakImportSymMask) != 0); - symbolClass = symbolClass & ~kPEFWeakImportSymMask; - symbolStringOffset = PEFImportedSymbolNameOffset(symbolStringOffset); - - // Find the string for the symbol in the strings table and - // extract it from the table into a Pascal string on the stack. - - symbolStringAddress = ((char *)loaderSection) + loaderSection->loaderStringsOffset + symbolStringOffset; - symbolString[0] = strlen(symbolStringAddress); // *** remove ANSI strlen - BlockMoveData(symbolStringAddress, &symbolString[1], symbolString[0]); - - // Look up the symbol in substitute library. If it fails, return - // a 0 value and check whether the error is fatal (a strong linked - // symbol) or benign (a weak linked symbol). - - err = lookup(symbolString, symbolClass, (void **) symbolValue, refCon); - if (err != noErr) { - *symbolValue = 0; - if (symbolIsWeak) { - err = noErr; - } - } - return err; -} - -// The EngineState structure encapsulates all of the persistent state -// of the CFM relocation engine virtual machine. I originally defined -// this structure so I could pass the state around between routines -// that implement various virtual opcodes, however I later worked -// out that the relocation was sufficiently simple that I could put it -// in in one routine. Still, I left the state in this structure in -// case I ever need to reverse that decision. It's also a convenient -// instructional design. - -struct EngineState { - UInt32 currentReloc; // Index of current relocation opcodes - UInt32 terminatingReloc; // Index of relocation opcodes which terminates relocation - UInt32 *sectionBase; // Start of the section - UInt32 *relocAddress; // Address within the section where the relocations are to be performed - UInt32 importIndex; // Symbol index, which is used to access an imported symbol's address - void *sectionC; // Memory address of an instantiated section within the PEF container; this variable is used by relocation opcodes that relocate section addresses - void *sectionD; // Memory address of an instantiated section within the PEF container; this variable is used by relocation opcodes that relocate section addresses -}; -typedef struct EngineState EngineState; - -// Note: -// If I ever have to support the repeat opcodes, I'll probably -// have to add a repeat counter to EngineState. - -static OSStatus InitEngineState(const FragToFixInfo *fragToFix, - UInt16 relocHeaderIndex, - EngineState *state) - // This routine initialises the engine state suitably for - // running the relocation opcodes for the section whose - // index is relocHeaderIndex. relocHeaderIndex is not a - // a section number. See the comment where it's used below - // for details. The routine basically fills out all the fields - // in the EngineState structure as described by - // "Mac OS Runtime Architectures". -{ - OSStatus err; - PEFLoaderRelocationHeader *relocHeader; - - MoreAssertQ(fragToFix != nil); - MoreAssertQ(state != nil); - - // This bit is tricky. relocHeaderIndex is an index into the relocation - // header table, starting at relocSectionCount (which is in the loader - // section header) for the first relocated section and decrementing - // down to 1 for the last relocated section. I find the relocation - // header by using relocHeaderIndex as a index backwards from the - // start of the relocation opcodes (ie relocInstrOffset). If you - // look at the diagram of the layout of the container in - // "PEFBinaryFormat.h", you'll see that the relocation opcodes - // immediately follow the relocation headers. - // - // I did this because the alternative (starting at the loader - // header and stepping past the import library table and the - // import symbol table) was a pain. - - relocHeader = (PEFLoaderRelocationHeader *) (((char *) fragToFix->loaderSection) + fragToFix->loaderSection->relocInstrOffset - relocHeaderIndex * sizeof(PEFLoaderRelocationHeader)); - - MoreAssertQ(relocHeader->reservedA == 0); // PEF spec says it must be; we check to try to catch bugs in calculation of relocHeader - - state->currentReloc = relocHeader->firstRelocOffset; - state->terminatingReloc = relocHeader->firstRelocOffset + relocHeader->relocCount; - state->sectionBase = (UInt32 *) GetSectionBaseAddress(fragToFix, relocHeader->sectionIndex); - state->relocAddress = state->sectionBase; - state->importIndex = 0; - - // From "Mac OS Runtime Architectures": - // - // The sectionC and sectionD variables actually contain the - // memory address of an instantiated section minus the - // default address for that section. The default address for a - // section is contained in the defaultAddress field of the - // section header. However, in almost all cases the default - // address should be 0, so the simplified definition suffices. - // - // In the debug version, we drop into MacsBug if this weird case - // ever executes because it's more likely we made a mistake than - // we encountered a section with a default address. - - state->sectionC = GetSectionBaseAddress(fragToFix, 0); - if (state->sectionC != nil) { - #if MORE_DEBUG - if (fragToFix->sectionHeaders[0].defaultAddress != 0) { - DebugStr("\pInitEngineState: Executing weird case."); - } - #endif - (char *) state->sectionC -= fragToFix->sectionHeaders[0].defaultAddress; - } - state->sectionD = GetSectionBaseAddress(fragToFix, 1); - if (state->sectionD != nil) { - #if MORE_DEBUG - if (fragToFix->sectionHeaders[1].defaultAddress != 0) { - DebugStr("\pInitEngineState: Executing weird case."); - } - #endif - (char *) state->sectionD -= fragToFix->sectionHeaders[1].defaultAddress; - } - - err = noErr; - if (state->relocAddress == nil) { - err = cfragFragmentUsageErr; - } - return err; -} - -// kPEFRelocBasicOpcodes is a table that maps the top 7 bits of the opcode -// to a fundamental action. It's contents are defined for me in "PEFBinaryFormat.h", -// which is really convenient. - -static UInt8 kPEFRelocBasicOpcodes[kPEFRelocBasicOpcodeRange] = { PEFMaskedBasicOpcodes }; - -static OSStatus RunRelocationEngine(const FragToFixInfo *fragToFix, - PEFImportedLibrary *importLibrary, - CFMLateImportLookupProc lookup, void *refCon) - // This is where the rubber really hits the. Given a fully - // populated fragToFix structure, the import library description - // of the weak imported library we're resolving, and a connection - // to the library we're going to substitute it, re-execute the - // relocation instructions (CFM has already executed them once) - // but only *do* instructions (ie store the change to the data section) - // that CFM skipped because the weak symbols were missing. -{ - OSStatus err; - EngineState state; - UInt16 sectionsLeftToRelocate; - UInt32 totalRelocs; - UInt16 *relocInstrTable; - UInt16 opCode; - - MoreAssertQ(fragToFix != nil); - MoreAssertQ(fragToFix->containerHeader.tag1 == kPEFTag1); - MoreAssertQ(fragToFix->sectionHeaders != nil); - MoreAssertQ(fragToFix->loaderSection != nil); - MoreAssertQ(fragToFix->section0Base != nil); // Technically, having a nil for these two is not a problem, ... - MoreAssertQ(fragToFix->section1Base != nil); // but in practise it a wildly deviant case and we should know about it. - MoreAssertQ(importLibrary != nil); - MoreAssertQ(lookup != nil); - - // Before entering the loop, work out some information in advance. - - // totalRelocs is only used for debugging, to make sure our - // relocation PC (state.currentReloc) doesn't run wild. - - totalRelocs = (fragToFix->loaderSection->loaderStringsOffset - fragToFix->loaderSection->relocInstrOffset) / sizeof(UInt16); - - // relocInstrTable is the base address of the table of relocation - // instructions in the fragment to fix. - - relocInstrTable = (UInt16 *)((char *) fragToFix->loaderSection + fragToFix->loaderSection->relocInstrOffset); - - // sectionsLeftToRelocate is the loop counter for the outer loop. - - MoreAssertQ(fragToFix->loaderSection->relocSectionCount <= 0x0FFFF); - sectionsLeftToRelocate = fragToFix->loaderSection->relocSectionCount; - - // Now let's run the relocation engine. We run it once per - // section in the table. Each time around, we init the engine - // and then loop again, this time executing individual opcodes. - // The opcode loop terminates when the relocation PC - // (state.currentReloc) hits the final opcode (state.terminatingReloc). - - // Note: - // One design decision I made was to totally re-init the engine state - // for each section. The CFM spec is unclear as to whether you're supposed - // to totally re-init the engine state, or just re-init the section-specific - // state (ie currentReloc, terminatingReloc, and relocAddress). I hope this - // is correct, but it's hard to test without having a fragment with multiple - // relocated sections, which is difficult to create. - - // How do I decide which opcodes should be effective (ie make changes to - // the section being relocated) and which opcodes should just be executed - // for their side effects (ie updated state.relocAddress or state.importIndex)? - // The answer is both simple and subtle. Opcodes whose actions are dependent - // on a symbol that was in the weak linked library are effective, those that - // an independent of those symbols are not. The only opcodes that use - // symbolic values are kPEFRelocImportRun and kPEFRelocSmByImport, and - // these are only if the symbol is in the weak linked library. - // All other cases are executed for their side effects only. - // - // How do I determine if a symbol is in the weak linked library? - // Well I know the symbol's index and I know the lower bound and count - // of the symbols in the weak linked library, so I just do a simple - // bounds test, ie - // - // firstImportedSymbol <= importIndex < firstImportedSymbol + importedSymbolCount - - // From this code, it's relatively easy to see which relocation opcodes - // aren't implemented. If you ever encounter one, you'll find yourself - // in MacsBug with a message telling you which opcode was found. The - // two big groups of opcodes I skipped were the large format opcodes - // and the repeating opcodes. I skipped them because: - // - // a) I haven't got a way to generate them in a PEF container that I can - // test against. Without that, there's no way I could be assured that - // the code worked. - // - // b) I'm lazy. - - err = noErr; - while ( sectionsLeftToRelocate > 0 ) { - err = InitEngineState(fragToFix, sectionsLeftToRelocate, &state); - if (err != noErr) { - goto leaveNow; - } - - while ( state.currentReloc != state.terminatingReloc ) { - - MoreAssertQ( state.currentReloc < totalRelocs ); - - opCode = relocInstrTable[state.currentReloc]; - switch ( PEFRelocBasicOpcode(opCode) ) { - case kPEFRelocBySectDWithSkip: - { - UInt16 skipCount; - UInt16 relocCount; - - skipCount = ((opCode >> 6) & 0x00FF); - relocCount = (opCode & 0x003F); - state.relocAddress += skipCount; - state.relocAddress += relocCount; - } - break; - case kPEFRelocBySectC: - case kPEFRelocBySectD: - { - UInt16 runLength; - - runLength = (opCode & 0x01FF) + 1; - state.relocAddress += runLength; - } - break; - case kPEFRelocTVector12: - { - UInt16 runLength; - - runLength = (opCode & 0x01FF) + 1; - state.relocAddress += (runLength * 3); - } - break; - case kPEFRelocTVector8: - case kPEFRelocVTable8: - { - UInt16 runLength; - - runLength = (opCode & 0x01FF) + 1; - state.relocAddress += (runLength * 2); - } - break; - case kPEFRelocImportRun: - { - UInt32 symbolValue; - UInt16 runLength; - - runLength = (opCode & 0x01FF) + 1; - while (runLength > 0) { - if ( state.importIndex >= importLibrary->firstImportedSymbol && state.importIndex < (importLibrary->firstImportedSymbol + importLibrary->importedSymbolCount) ) { - err = LookupSymbol(lookup, refCon, fragToFix->loaderSection, state.importIndex, &symbolValue); - if (err != noErr) { - goto leaveNow; - } - *(state.relocAddress) += symbolValue; - } - state.importIndex += 1; - state.relocAddress += 1; - runLength -= 1; - } - } - break; - case kPEFRelocSmByImport: - { - UInt32 symbolValue; - UInt32 index; - - index = (opCode & 0x01FF); - if ( index >= importLibrary->firstImportedSymbol && index < (importLibrary->firstImportedSymbol + importLibrary->importedSymbolCount) ) { - err = LookupSymbol(lookup, refCon, fragToFix->loaderSection, index, &symbolValue); - if (err != noErr) { - goto leaveNow; - } - *(state.relocAddress) += symbolValue; - } - state.importIndex = index + 1; - state.relocAddress += 1; - } - break; - case kPEFRelocSmSetSectC: - { - UInt32 index; - - index = (opCode & 0x01FF); - state.sectionC = GetSectionBaseAddress(fragToFix, index); - MoreAssertQ(state.sectionC != nil); - } - break; - case kPEFRelocSmSetSectD: - { - UInt32 index; - - index = (opCode & 0x01FF); - state.sectionD = GetSectionBaseAddress(fragToFix, index); - MoreAssertQ(state.sectionD != nil); - } - break; - case kPEFRelocSmBySection: - state.relocAddress += 1; - break; - case kPEFRelocIncrPosition: - { - UInt16 offset; - - offset = (opCode & 0x0FFF) + 1; - ((char *) state.relocAddress) += offset; - } - break; - case kPEFRelocSmRepeat: - #if MORE_DEBUG - DebugStr("\pRunRelocationEngine: kPEFRelocSmRepeat not yet implemented"); - #endif - err = unimpErr; - goto leaveNow; - break; - case kPEFRelocSetPosition: - { - UInt32 offset; - - // Lot's of folks have tried various interpretations of the description of - // this opCode in "Mac OS Runtime Architectures" (which states "This instruction - // sets relocAddress to the address of the section offset offset." *smile*). - // I eventually dug into the CFM source code to find my interpretation, which - // I believe is correct. The key point is tht the offset is relative to - // the start of the section for which these relocations are being performed. - - // Skip to next reloc word, which is the second chunk of the offset. - - state.currentReloc += 1; - - // Extract offset based on the most significant 10 bits in opCode and - // the next significant 16 bits in the next reloc word. - - offset = PEFRelocSetPosFullOffset(opCode, relocInstrTable[state.currentReloc]); - - state.relocAddress = (UInt32 *) ( ((char *) state.sectionBase) + offset); - } - break; - case kPEFRelocLgByImport: - { - UInt32 symbolValue; - UInt32 index; - - // Get the 26 bit symbol index from the current and next reloc words. - - state.currentReloc += 1; - index = PEFRelocLgByImportFullIndex(opCode, relocInstrTable[state.currentReloc]); - - if ( index >= importLibrary->firstImportedSymbol && index < (importLibrary->firstImportedSymbol + importLibrary->importedSymbolCount) ) { - err = LookupSymbol(lookup, refCon, fragToFix->loaderSection, index, &symbolValue); - if (err != noErr) { - goto leaveNow; - } - *(state.relocAddress) += symbolValue; - } - state.importIndex = index + 1; - state.relocAddress += 1; - } - break; - case kPEFRelocLgRepeat: - #if MORE_DEBUG - DebugStr("\pRunRelocationEngine: kPEFRelocLgRepeat not yet implemented"); - #endif - err = unimpErr; - goto leaveNow; - break; - case kPEFRelocLgSetOrBySection: - #if MORE_DEBUG - DebugStr("\pRunRelocationEngine: kPEFRelocLgSetOrBySection not yet implemented"); - #endif - err = unimpErr; - goto leaveNow; - break; - case kPEFRelocUndefinedOpcode: - err = cfragFragmentCorruptErr; - goto leaveNow; - break; - default: - MoreAssertQ(false); - err = cfragFragmentCorruptErr; - goto leaveNow; - break; - } - state.currentReloc += 1; - } - - sectionsLeftToRelocate -= 1; - } - -leaveNow: - return err; -} - -extern pascal OSStatus CFMLateImportCore(const CFragSystem7DiskFlatLocator *fragToFixLocator, - CFragConnectionID fragToFixConnID, - CFragInitFunction fragToFixInitRoutine, - ConstStr255Param weakLinkedLibraryName, - CFMLateImportLookupProc lookup, - void *refCon) - // See comments in interface part. -{ - OSStatus err; - OSStatus junk; - FragToFixInfo fragToFix; - PEFImportedLibrary *importLibrary; - char weakLinkedLibraryNameCString[256]; - - MoreAssertQ(fragToFixLocator != nil); - MoreAssertQ(fragToFixConnID != nil); - MoreAssertQ(fragToFixInitRoutine != nil); - MoreAssertQ(weakLinkedLibraryName != nil); - MoreAssertQ(lookup != nil); - - // Fill out the bits of fragToFix which are passed in - // by the client. - - MoreBlockZero(&fragToFix, sizeof(fragToFix)); - fragToFix.locator = *fragToFixLocator; - fragToFix.connID = fragToFixConnID; - fragToFix.initRoutine = fragToFixInitRoutine; - - // Make a C string from weakLinkedLibraryName. - - BlockMoveData(weakLinkedLibraryName + 1, weakLinkedLibraryNameCString, weakLinkedLibraryName[0]); - weakLinkedLibraryNameCString[weakLinkedLibraryName[0]] = 0; - - // Get the basic information from the fragment. - // Fills out the containerHeader, sectionHeaders, loaderSection and fileRef fields - // of fragToFix. - - err = ReadContainerBasics(&fragToFix); - - // Set up the base address fields in fragToFix (ie section0Base and section1Base) - // by looking up our init routine (fragToFix.initRoutine) and subtracting - // away the section offsets (which we get from the disk copy of the section) - // to derive the bases of the sections themselves. - - if (err == noErr) { - err = SetupSectionBaseAddresses(&fragToFix); - } - - // Look inside the loader section for the import library description - // of weakLinkedLibraryName. We need this to know the range of symbol - // indexes we're going to fix up. - - if (err == noErr) { - err = FindImportLibrary(fragToFix.loaderSection, weakLinkedLibraryNameCString, &importLibrary); - } - - // Do a quick check to ensure that the library was actually imported weak. - // If it wasn't, it doesn't make much sense to resolve its weak imports - // later on. Resolving them again is likely to be bad. - - if (err == noErr) { - if ((importLibrary->options & kPEFWeakImportLibMask) == 0) { - err = cfragFragmentUsageErr; - } - } - - // Now run the main relocation engine. - - if (err == noErr) { - err = RunRelocationEngine(&fragToFix, importLibrary, lookup, refCon); - } - - // Clean up. - - if (fragToFix.disposeSectionPointers) { - if (fragToFix.fileRef != 0) { - junk = FSClose(fragToFix.fileRef); - MoreAssertQ(junk == noErr); - } - if (fragToFix.loaderSection != nil) { - DisposePtr( (Ptr) fragToFix.loaderSection); - MoreAssertQ(MemError() == noErr); - } - if (fragToFix.sectionHeaders != nil) { - DisposePtr( (Ptr) fragToFix.sectionHeaders); - MoreAssertQ(MemError() == noErr); - } - } - return err; -} - -static pascal OSStatus FragmentLookup(ConstStr255Param symName, CFragSymbolClass symClass, - void **symAddr, void *refCon) - // This is the CFMLateImportLookupProc callback used when - // late importing from a CFM shared library. -{ - OSStatus err; - CFragConnectionID connIDToImport; - CFragSymbolClass foundSymClass; - - MoreAssertQ(symName != nil); - MoreAssertQ(symAddr != nil); - MoreAssertQ(refCon != nil); - - connIDToImport = (CFragConnectionID) refCon; - - // Shame there's no way to validate that connIDToImport is valid. - - err = FindSymbol(connIDToImport, symName, (Ptr *) symAddr, &foundSymClass); - if (err == noErr) { - // If the symbol isn't of the right class, we act like we didn't - // find it, but also assert in the debug build because weird things - // are afoot. - if (foundSymClass != symClass) { - MoreAssertQ(false); - *symAddr = nil; - err = cfragNoSymbolErr; - } - } - return err; -} - -extern pascal OSStatus CFMLateImportLibrary(const CFragSystem7DiskFlatLocator *fragToFixLocator, - CFragConnectionID fragToFixConnID, - CFragInitFunction fragToFixInitRoutine, - ConstStr255Param weakLinkedLibraryName, - CFragConnectionID connIDToImport) - // See comments in interface part. -{ - MoreAssertQ(connIDToImport != nil); - return CFMLateImportCore(fragToFixLocator, fragToFixConnID, fragToFixInitRoutine, - weakLinkedLibraryName, FragmentLookup, connIDToImport); -} - -static pascal OSStatus BundleLookup(ConstStr255Param symName, CFragSymbolClass symClass, - void **symAddr, void *refCon) - // This is the CFMLateImportLookupProc callback used when - // late importing from a CFBundle. -{ - OSStatus err; - CFBundleRef bundleToImport; - CFStringRef symNameStr; - - MoreAssertQ(symName != nil); - MoreAssertQ(symAddr != nil); - MoreAssertQ(refCon != nil); - - symNameStr = nil; - - bundleToImport = (CFBundleRef) refCon; - - // Shame there's no way to validate that bundleToImport is really a bundle. - - // We can only find function pointers because CFBundleGetFunctionPointerForName - // only works for function pointers. So if the client is asking for something - // other than a function pointer (ie TVector symbol) then we don't even true. - // Also assert in the debug build because this shows a certain lack of - // understanding on the part of the client. - // - // CF is being revise to support accessing data symbols using a new API - // (currently this is available to Apple internal developers as - // CFBundleGetDataPointerForName). When the new API is available in a - // public header file I should revise this code to lift this restriction. - - err = noErr; - if (symClass != kTVectorCFragSymbol) { - MoreAssertQ(false); - err = cfragNoSymbolErr; - } - if (err == noErr) { - symNameStr = CFStringCreateWithPascalString(kCFAllocatorSystemDefault, - symName, kCFStringEncodingMacRoman); - if (symNameStr == nil) { - err = coreFoundationUnknownErr; - } - } - if (err == noErr) { - *symAddr = CFBundleGetFunctionPointerForName(bundleToImport, symNameStr); - if (*symAddr == nil) { - err = cfragNoSymbolErr; - } - } - if (symNameStr != nil) { - CFRelease(symNameStr); - } - return err; -} - -extern pascal OSStatus CFMLateImportBundle(const CFragSystem7DiskFlatLocator *fragToFixLocator, - CFragConnectionID fragToFixConnID, - CFragInitFunction fragToFixInitRoutine, - ConstStr255Param weakLinkedLibraryName, - CFBundleRef bundleToImport) - // See comments in interface part. -{ - MoreAssertQ(bundleToImport != nil); - return CFMLateImportCore(fragToFixLocator, fragToFixConnID, fragToFixInitRoutine, - weakLinkedLibraryName, BundleLookup, bundleToImport); -} diff --git a/project/jni/python/src/Mac/Modules/cg/CFMLateImport.h b/project/jni/python/src/Mac/Modules/cg/CFMLateImport.h deleted file mode 100644 index f3a89bcf5..000000000 --- a/project/jni/python/src/Mac/Modules/cg/CFMLateImport.h +++ /dev/null @@ -1,272 +0,0 @@ -/* - File: CFMLateImport.h - - Contains: Interface to CFM late import library. - - Written by: Quinn - - Copyright: Copyright © 1999 by Apple Computer, Inc., all rights reserved. - - You may incorporate this Apple sample source code into your program(s) without - restriction. This Apple sample source code has been provided "AS IS" and the - responsibility for its operation is yours. You are not permitted to redistribute - this Apple sample source code as "Apple sample source code" after having made - changes. If you're going to re-distribute the source, we require that you make - it clear in the source that the code was descended from Apple sample source - code, but that you've made changes. - - Change History (most recent first): - - <6> 21/9/01 Quinn Changes for CWPro7 Mach-O build. - <5> 19/9/01 Quinn Change comments to reflect the fact that an unpacked data - section is no longer required. - <4> 19/9/01 Quinn Simplified API and implementation after a suggestion by Eric - Grant. You no longer have to CFM export a dummy function; you - can just pass in the address of your fragment's init routine. - <3> 16/11/00 Quinn Allow symbol finding via a callback and use that to implement - CFBundle support. - <2> 18/10/99 Quinn Renamed CFMLateImport to CFMLateImportLibrary to allow for - possible future API expansion. - <1> 15/6/99 Quinn First checked in. -*/ - -#pragma once - -///////////////////////////////////////////////////////////////// - -// MoreIsBetter Setup - -//#include "MoreSetup.h" - -// Mac OS Interfaces - -#if ! MORE_FRAMEWORK_INCLUDES - #include - #include - #include - #include -#endif - -///////////////////////////////////////////////////////////////// - -#ifdef __cplusplus -extern "C" { -#endif - -/* FAQ - --- - - Q: What does this library do? - A: It allows you to resolve a weak linked library at runtime, - by supply a CFM connection to the library that should substitute - for the weak linked one. - - Q: Does the substituted library have to have the same name as the - weak linked library. - A: No. - - Q: What's this useful for? - A: The most obvious example of where this is useful is when - you rely on shared libraries that the user might delete - or move. To can find the shared library (possibly even - using CatSearch), call GetDiskFragment to open a connection - to it, late import it using this library, and then the - rest of your code can continue to use the shared library - as if nothing had happened. No more defining thousands - of stub routines which call through routine pointers. - - There are, however, numerous less obvious uses. You can - use this code to make a 'self repairing' application. If - the user removes your shared library from the Extensions - folder, the startup code for your application can offer - tor re-install it. If the user agrees, you can then - re-install your shared library, late import it, and then - continue running your application if nothing happened. - - You can even use this code to free yourself from the - Extensions folder entirely. Say you have a suite of - applications that currently installs a dozen shared - libraries in the Extensions folder. You can move those - libraries to another folder entirely and each application's - startup code can track down the library (using an alias - in the Preferences file) and late import it. - - An even cooler use is to provide easy abstraction layers. - Say you have a network code for both the MacTCP - API and the Open Transport API. Typically, you would be - force to do this by having an abstraction layer where every - routine contains a switch between MacTCP and OT. Your - OpenSocket routine might look like: - - static int OpenSocket(void) - { - if (gOTAvailable) { - return OpenSocketOT(); - } else { - return OpenSocketMacTCP(); - } - } - - With this code, you can avoid that entirely. Simply - weak link to a shared library that you know is never - going to be implemented ("crea;MySocketsDummy") and then, - at runtime, decide whether the system has MacTCP or OT - and late import the relevant real implementation - ("crea;MySocketsMacTCP" or "crea;MySocketsOT"). - One benefit of this approach is that only the MacTCP or - the OT code is resident in memory on any given system. -*/ - -typedef pascal OSStatus (*CFMLateImportLookupProc)(ConstStr255Param symName, CFragSymbolClass symClass, - void **symAddr, void *refCon); - // CFMLateImportLookupProc defines a callback for CFMLateImportCore. - // The routine is expected to look up the address of the symbol named - // symName and return it in *symAddr. The symbol should be of class - // symClass, although the callback decides whether a class mismatch is - // an error. refCon is an application defined value that was originally - // passed in to CFMLateImportCore. - // - // If this routine returns an error, a symbol address of 0 is assumed. - // If the symbol is marked as a weak import, the CFMLateImportCore will - // continue, otherwise the CFMLateImportCore routine will fail with the - // error. - -extern pascal OSStatus CFMLateImportCore(const CFragSystem7DiskFlatLocator *fragToFixLocator, - CFragConnectionID fragToFixConnID, - CFragInitFunction fragToFixInitRoutine, - ConstStr255Param weakLinkedLibraryName, - CFMLateImportLookupProc lookup, - void *refCon); - // This routine will link you, at runtime, to some library - // that you were weak linked to and wasn't present when your - // fragment was prepared. As well as the obvious functionality - // of being able to resolve weak links after prepare time, - // this functionality can be put to a number of less obvious uses, - // some of which are discussed at the top of this header file. - // - // To call this routine, you need a number of pieces of information: - // - // 1. fragToFixLocator, fragToFixConnID: The location of your own - // code fragment on disk and the CFM connection ID to your own - // code fragment. Typically you get this information from your - // fragment's CFM init routine. You must ensure that - // fragToFixLocator->fileSpec points to an FSSpec of the - // file which holds your code fragment. - // - // IMPORTANT: - // The fact that you pass in a CFragSystem7DiskFlatLocator as the - // fragToFixLocator implies that the fragment to be fixed up must - // be in the data fork of a file. The code could be modified - // to remove this requirement, but on disk code fragments are the most - // common case. - // - // IMPORTANT: - // The fragment to fix may have a packed data section. Packing the - // data section will reduce the size of your fragment on disk, but it - // will significantly increase the memory needed by this routine - // (it increases memory usage by the sum of the sizes of the packed - // and unpacked data section). See below for instructions on how to - // create an unpacked data section. - // - // 2. fragToFixInitRoutine: A pointer to your own code fragment's - // fragment initialiser routine. You necessarily have one of these - // because you need it to get values for the fragToFixLocator and - // fragToFixConnID parameters. Just pass its address in as a parameter - // as well. - // - // 3. weakLinkedLibraryName: The name of the weak linked library which - // failed to link. You must have weak linked to this library. - // It is oxymoric for you to pass a strong linked library here, - // because your code would not have prepared if a strong linked - // library failed to prepare, and so you couldn't supply a valid - /// fragToFix. - // - // 4. lookup, refCon: A pointer to a callback function that the - // routine calls to look up the address of a symbol, and a refCon - // for that callback routine. - // - // Note: - // The fragToFixLocator and fragToFixInitRoutine parameters - // are artifacts of the way in which this functionality is implemented. - // In an ideal world, where CFM exported decent introspection APIs - // to third party developers, these parameters would not be necessary. - // If you're using this code inside Apple, you probably should investigate - // using the CFM private APIs for getting at the information these - // parameters are needed for. See the comments inside the implementation - // for more details. - // - // Note: - // The extra memory taken when you use a packed data section is also an - // artifact of my workaround for the lack of CFM introspection APIs. In - // my opinion it's better to use an unpacked data section and consume more - // space on disk while saving memory. In CodeWarrior you can switch to an - // unpacked data section by checking the "Expand Uninitialized Data" - // checkbox in the "PPC PEF" settings panel. In MPW, specified the - // "-packdata off" option to PPCLink. - // - // When the routine returns, any symbols that you imported from the - // library named weakLinkedLibraryName will be resolved to the address - // of the symbol provided by the "lookup" callback routine. - // - // It is possible for an unresolved import to remain unresolved after - // this routine returns. If the symbol import is marked as weak (as - // opposed to the library, which *must* be marked as weak) and the symbol - // is not found by the "lookup" callback, the routine will simple skip - // that symbol. If the symbol isn't marked as weak, the routine will fail - // in that case. - // - // Most of the possible error results are co-opted CFM errors. These - // include: - // - // cfragFragmentFormatErr -- The fragment to fix is is an unknown format. - // cfragNoSectionErr -- Could not find the loader section in the fragment to fix. - // cfragNoLibraryErr -- The fragment to fix is not weak linked to weakLinkedLibraryName. - // cfragFragmentUsageErr -- The fragment to fix doesn't have a data section. - // -- The fragment to fix is strong linked to weakLinkedLibraryName. - // -- The fragment doesn't have an init routine. - // cfragFragmentCorruptErr -- Encountered an undefined relocation opcode. - // unimpErr -- Encountered an unimplement relocation opcode. The - // relocation engine only implements a subset of the CFM - // relocation opcodes, the subset most commonly used by - // MPW and CodeWarrior PEF containers. If you encounter - // this error, you'll probably have to add the weird - // relocation opcode to the engine, which shouldn't be - // be too hard. - // memFullErr -- It's likely that this error is triggered by the memory - // needed to unpack your data section. Either make your - // data section smaller, or unpack it (see above). - // errors returned by FindSymbol - // errors returned by Memory Manager - // - // The routine needs enough memory to hold the loader section of the fragment - // to fix in memory. It allocates that memory using NewPtr and dispsoses of - // it before it returns. You may want to change the memory allocator, which - // is very simple. - -extern pascal OSStatus CFMLateImportLibrary(const CFragSystem7DiskFlatLocator *fragToFixLocator, - CFragConnectionID fragToFixConnID, - CFragInitFunction fragToFixInitRoutine, - ConstStr255Param weakLinkedLibraryName, - CFragConnectionID connIDToImport); - // A wrapper around CFMLateImportCore that looks up symbols by calling - // FindSymbol on a connection to a CFM library (connIDToImport). - // You can get this connection ID through any standard CFM API, for example - // GetSharedLibrary, GetDiskFragment, or GetMemFragment. - // - // IMPORTANT: - // The fragment name for connIDToImport *does not* have to match - // weakLinkedLibraryName. This is part of the power of this library. - -extern pascal OSStatus CFMLateImportBundle(const CFragSystem7DiskFlatLocator *fragToFixLocator, - CFragConnectionID fragToFixConnID, - CFragInitFunction fragToFixInitRoutine, - ConstStr255Param weakLinkedLibraryName, - CFBundleRef bundleToImport); - // A wrapper around CFMLateImportCore that looks up symbols by calling - // CFBundleGetFunctionPointerForName on a reference to a Core Foundation - // bundle (bundleToImport). You can get this reference through any - // Core Foundation bundle API, for example CFBundleCreate. - -#ifdef __cplusplus -} -#endif diff --git a/project/jni/python/src/Mac/Modules/cg/CGStubLib b/project/jni/python/src/Mac/Modules/cg/CGStubLib deleted file mode 100644 index 5f939a3cc01b39f2c4e2abc3970918f9266f6df9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2776 zcmZQz6=PsvV!#9}3=9mM3=9lj3=9kk3=9lh3=9le3=9k)aYhCPhCBuajt2~2y_|jw z42)gHC8bHe0l^9&NlfD)B3}8GiUp}@X$9p4$qWn(j5}8Re+`j=l2Fb6|Ns9F6@gM5 z9SjT%0W45?s2~GO9Xbt@N1`nl7+696U}j)ouyJ;G&d)1Jttbi3$S)5`ttfFU3CPdP zE5Q&)2&CquCYQM7BdbX*0cmw9N-WRJOZUxBNrkHhi3KEr%i6upu6$rB-PQ@;Y;ep`P66cJ> zqQvBq)S}>m#N^DpbYzp9eIvbtON#QdQ=Rj3@{7==+%j`=FeHN9op5Lga(BY2!@Vf6 z5{DL$6s8{MoXmod{GiliM8a_O2MNL*h{j1xEJ9HYu?-{?o>`I+o|%H2B*6X!$-zwn zxd24~q8}XfuoUa+4^o99gdqS;E>8KSc`2EB=}!5GX!9%vX?4vlD5->7>zI<_Sd<)+ zkD3J_qR5I+oaUU9Uz`du3t2^AX<~|VX;E1!7Q=9fgYpHsa^HMRBb-vxGxJa^3{EX^ z%qhr7gu4KgdUFy>@=}YD@<3{dZ)QnqkxyoBCL$W4`4Kfn+*3=OLww<;Ip^mkC!&Z1 z<(DLuq#~;cDN4*M&Os9lPEO20Q5BS0T#{du>K+W%4vWd)#4>cDpwyhy#Nt%vqEwKP zFokaUMFIImC7|34cbtDwW_o5GC{=-^P?8}i#inQG=Ya}86$Spa85Zr%~K}^G*L8#>$gY-mQ2ATF~ z1`$6;20qJM3=)=(3_{aY8N@Q|7z9tRVG#YH!yqH{ltF~!1cR`)Dub}vEe3%H>lp-( zNiv8y3owZJn=pttmM}=W+++}znZUqb?9Cu0n#Le_x|Tsq`vQaXEeQtE?_U{&^&%J~ zqDvV>oc}OL?vH1X;Z0x=YE58}+#Js!I+2AzsKu8-Sht8laQ|lp;Sa?O!nzp@{Dm0| z($X3XVtUsZB&1jwgxWta2t4s;5HAT~kjWKckT$u?z&nSHK_a?pY`4aNe|3=AMyrlTM>h{b3HV=?){SS(v%EXE8Nivhv<1QTPt z1Y@!2!B~u-I04(i5(*Pzxd3A^EQhg}KEhZmH82(foCT=}LGEJ+hsiRZgRxlBU@V4v zFc#x07>hv@#$qyru^4y2SPT*{7Bef1#b5(tu{gk3Oq*aVhJF}}Q2@qbg6n09hlw%6 zLy~bmToCVj*!V42)I1FPkKZ3L1@xi>m`uD#y?OF2@*>(~8m|EmTCS5de<-;miO4 diff --git a/project/jni/python/src/Mac/Modules/cg/CGStubLib.exp b/project/jni/python/src/Mac/Modules/cg/CGStubLib.exp deleted file mode 100644 index b93dc7c08..000000000 --- a/project/jni/python/src/Mac/Modules/cg/CGStubLib.exp +++ /dev/null @@ -1,60 +0,0 @@ -CGContextShowTextAtPoint -CGContextShowText -CGContextSelectFont -CGContextSetTextDrawingMode -CGContextDrawPath -CGContextSetLineJoin -CGContextSetLineCap -CGContextGetTextPosition -CGContextGetPathCurrentPoint -CGContextSetShouldAntialias -CGContextSynchronize -CGContextFlush -CGContextEndPage -CGContextSetFontSize -CGContextGetTextMatrix -CGContextSetTextMatrix -CGContextSetTextPosition -CGContextSetCharacterSpacing -CGContextSetCMYKStrokeColor -CGContextSetCMYKFillColor -CGContextSetRGBStrokeColor -CGContextSetRGBFillColor -CGContextSetGrayStrokeColor -CGContextSetGrayFillColor -CGContextClipToRect -CGContextEOClip -CGContextClip -CGContextClearRect -CGContextStrokeRectWithWidth -CGContextStrokeRect -CGContextFillRect -CGContextStrokePath -CGContextEOFillPath -CGContextFillPath -CGContextGetPathBoundingBox -CGContextIsPathEmpty -CGContextAddArcToPoint -CGContextAddArc -CGContextAddRect -CGContextClosePath -CGContextAddQuadCurveToPoint -CGContextAddCurveToPoint -CGContextAddLineToPoint -CGContextMoveToPoint -CGContextBeginPath -CGContextSetAlpha -CGContextSetFlatness -CGContextSetMiterLimit -CGContextSetLineWidth -CGContextGetCTM -CGContextConcatCTM -CGContextRotateCTM -CGContextTranslateCTM -CGContextScaleCTM -CGContextRestoreGState -CGContextSaveGState -CGContextRelease -CreateCGContextForPort -SyncCGContextOriginWithPort -ClipCGContextToRegion diff --git a/project/jni/python/src/Mac/Modules/cg/CGStubLib.readme b/project/jni/python/src/Mac/Modules/cg/CGStubLib.readme deleted file mode 100644 index d2c5fa8dc..000000000 --- a/project/jni/python/src/Mac/Modules/cg/CGStubLib.readme +++ /dev/null @@ -1,3 +0,0 @@ -# CGStubLib was created by issuing this command in MPW: - -MakeStub CGStubLib.exp -o CGStubLib diff --git a/project/jni/python/src/Mac/Modules/cg/_CGmodule.c b/project/jni/python/src/Mac/Modules/cg/_CGmodule.c deleted file mode 100644 index e36fce9d3..000000000 --- a/project/jni/python/src/Mac/Modules/cg/_CGmodule.c +++ /dev/null @@ -1,1316 +0,0 @@ - -/* =========================== Module _CG =========================== */ - -#include "Python.h" - - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -extern int GrafObj_Convert(PyObject *, GrafPtr *); - -/* -** Manual converters -*/ - -PyObject *CGPoint_New(CGPoint *itself) -{ - - return Py_BuildValue("(ff)", - itself->x, - itself->y); -} - -int -CGPoint_Convert(PyObject *v, CGPoint *p_itself) -{ - if( !PyArg_Parse(v, "(ff)", - &p_itself->x, - &p_itself->y) ) - return 0; - return 1; -} - -PyObject *CGRect_New(CGRect *itself) -{ - - return Py_BuildValue("(ffff)", - itself->origin.x, - itself->origin.y, - itself->size.width, - itself->size.height); -} - -int -CGRect_Convert(PyObject *v, CGRect *p_itself) -{ - if( !PyArg_Parse(v, "(ffff)", - &p_itself->origin.x, - &p_itself->origin.y, - &p_itself->size.width, - &p_itself->size.height) ) - return 0; - return 1; -} - -PyObject *CGAffineTransform_New(CGAffineTransform *itself) -{ - - return Py_BuildValue("(ffffff)", - itself->a, - itself->b, - itself->c, - itself->d, - itself->tx, - itself->ty); -} - -int -CGAffineTransform_Convert(PyObject *v, CGAffineTransform *p_itself) -{ - if( !PyArg_Parse(v, "(ffffff)", - &p_itself->a, - &p_itself->b, - &p_itself->c, - &p_itself->d, - &p_itself->tx, - &p_itself->ty) ) - return 0; - return 1; -} - -static PyObject *CG_Error; - -/* -------------------- Object type CGContextRef -------------------- */ - -PyTypeObject CGContextRef_Type; - -#define CGContextRefObj_Check(x) ((x)->ob_type == &CGContextRef_Type || PyObject_TypeCheck((x), &CGContextRef_Type)) - -typedef struct CGContextRefObject { - PyObject_HEAD - CGContextRef ob_itself; -} CGContextRefObject; - -PyObject *CGContextRefObj_New(CGContextRef itself) -{ - CGContextRefObject *it; - it = PyObject_NEW(CGContextRefObject, &CGContextRef_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int CGContextRefObj_Convert(PyObject *v, CGContextRef *p_itself) -{ - if (!CGContextRefObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "CGContextRef required"); - return 0; - } - *p_itself = ((CGContextRefObject *)v)->ob_itself; - return 1; -} - -static void CGContextRefObj_dealloc(CGContextRefObject *self) -{ - CGContextRelease(self->ob_itself); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *CGContextRefObj_CGContextSaveGState(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CGContextSaveGState(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextRestoreGState(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CGContextRestoreGState(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextScaleCTM(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float sx; - float sy; - if (!PyArg_ParseTuple(_args, "ff", - &sx, - &sy)) - return NULL; - CGContextScaleCTM(_self->ob_itself, - sx, - sy); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextTranslateCTM(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float tx; - float ty; - if (!PyArg_ParseTuple(_args, "ff", - &tx, - &ty)) - return NULL; - CGContextTranslateCTM(_self->ob_itself, - tx, - ty); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextRotateCTM(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float angle; - if (!PyArg_ParseTuple(_args, "f", - &angle)) - return NULL; - CGContextRotateCTM(_self->ob_itself, - angle); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextConcatCTM(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGAffineTransform transform; - if (!PyArg_ParseTuple(_args, "O&", - CGAffineTransform_Convert, &transform)) - return NULL; - CGContextConcatCTM(_self->ob_itself, - transform); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextGetCTM(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGAffineTransform _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CGContextGetCTM(_self->ob_itself); - _res = Py_BuildValue("O&", - CGAffineTransform_New, &_rv); - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetLineWidth(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float width; - if (!PyArg_ParseTuple(_args, "f", - &width)) - return NULL; - CGContextSetLineWidth(_self->ob_itself, - width); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetLineCap(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - int cap; - if (!PyArg_ParseTuple(_args, "i", - &cap)) - return NULL; - CGContextSetLineCap(_self->ob_itself, - cap); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetLineJoin(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - int join; - if (!PyArg_ParseTuple(_args, "i", - &join)) - return NULL; - CGContextSetLineJoin(_self->ob_itself, - join); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetMiterLimit(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float limit; - if (!PyArg_ParseTuple(_args, "f", - &limit)) - return NULL; - CGContextSetMiterLimit(_self->ob_itself, - limit); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetFlatness(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float flatness; - if (!PyArg_ParseTuple(_args, "f", - &flatness)) - return NULL; - CGContextSetFlatness(_self->ob_itself, - flatness); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetAlpha(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float alpha; - if (!PyArg_ParseTuple(_args, "f", - &alpha)) - return NULL; - CGContextSetAlpha(_self->ob_itself, - alpha); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextBeginPath(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CGContextBeginPath(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextMoveToPoint(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float x; - float y; - if (!PyArg_ParseTuple(_args, "ff", - &x, - &y)) - return NULL; - CGContextMoveToPoint(_self->ob_itself, - x, - y); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextAddLineToPoint(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float x; - float y; - if (!PyArg_ParseTuple(_args, "ff", - &x, - &y)) - return NULL; - CGContextAddLineToPoint(_self->ob_itself, - x, - y); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextAddCurveToPoint(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float cp1x; - float cp1y; - float cp2x; - float cp2y; - float x; - float y; - if (!PyArg_ParseTuple(_args, "ffffff", - &cp1x, - &cp1y, - &cp2x, - &cp2y, - &x, - &y)) - return NULL; - CGContextAddCurveToPoint(_self->ob_itself, - cp1x, - cp1y, - cp2x, - cp2y, - x, - y); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextAddQuadCurveToPoint(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float cpx; - float cpy; - float x; - float y; - if (!PyArg_ParseTuple(_args, "ffff", - &cpx, - &cpy, - &x, - &y)) - return NULL; - CGContextAddQuadCurveToPoint(_self->ob_itself, - cpx, - cpy, - x, - y); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextClosePath(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CGContextClosePath(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextAddRect(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGRect rect; - if (!PyArg_ParseTuple(_args, "O&", - CGRect_Convert, &rect)) - return NULL; - CGContextAddRect(_self->ob_itself, - rect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextAddArc(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float x; - float y; - float radius; - float startAngle; - float endAngle; - int clockwise; - if (!PyArg_ParseTuple(_args, "fffffi", - &x, - &y, - &radius, - &startAngle, - &endAngle, - &clockwise)) - return NULL; - CGContextAddArc(_self->ob_itself, - x, - y, - radius, - startAngle, - endAngle, - clockwise); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextAddArcToPoint(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float x1; - float y1; - float x2; - float y2; - float radius; - if (!PyArg_ParseTuple(_args, "fffff", - &x1, - &y1, - &x2, - &y2, - &radius)) - return NULL; - CGContextAddArcToPoint(_self->ob_itself, - x1, - y1, - x2, - y2, - radius); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextIsPathEmpty(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - int _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CGContextIsPathEmpty(_self->ob_itself); - _res = Py_BuildValue("i", - _rv); - return _res; -} - -static PyObject *CGContextRefObj_CGContextGetPathCurrentPoint(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGPoint _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CGContextGetPathCurrentPoint(_self->ob_itself); - _res = Py_BuildValue("O&", - CGPoint_New, &_rv); - return _res; -} - -static PyObject *CGContextRefObj_CGContextGetPathBoundingBox(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGRect _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CGContextGetPathBoundingBox(_self->ob_itself); - _res = Py_BuildValue("O&", - CGRect_New, &_rv); - return _res; -} - -static PyObject *CGContextRefObj_CGContextDrawPath(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - int mode; - if (!PyArg_ParseTuple(_args, "i", - &mode)) - return NULL; - CGContextDrawPath(_self->ob_itself, - mode); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextFillPath(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CGContextFillPath(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextEOFillPath(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CGContextEOFillPath(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextStrokePath(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CGContextStrokePath(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextFillRect(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGRect rect; - if (!PyArg_ParseTuple(_args, "O&", - CGRect_Convert, &rect)) - return NULL; - CGContextFillRect(_self->ob_itself, - rect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextStrokeRect(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGRect rect; - if (!PyArg_ParseTuple(_args, "O&", - CGRect_Convert, &rect)) - return NULL; - CGContextStrokeRect(_self->ob_itself, - rect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextStrokeRectWithWidth(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGRect rect; - float width; - if (!PyArg_ParseTuple(_args, "O&f", - CGRect_Convert, &rect, - &width)) - return NULL; - CGContextStrokeRectWithWidth(_self->ob_itself, - rect, - width); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextClearRect(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGRect rect; - if (!PyArg_ParseTuple(_args, "O&", - CGRect_Convert, &rect)) - return NULL; - CGContextClearRect(_self->ob_itself, - rect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextClip(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CGContextClip(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextEOClip(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CGContextEOClip(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextClipToRect(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGRect rect; - if (!PyArg_ParseTuple(_args, "O&", - CGRect_Convert, &rect)) - return NULL; - CGContextClipToRect(_self->ob_itself, - rect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetGrayFillColor(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float gray; - float alpha; - if (!PyArg_ParseTuple(_args, "ff", - &gray, - &alpha)) - return NULL; - CGContextSetGrayFillColor(_self->ob_itself, - gray, - alpha); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetGrayStrokeColor(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float gray; - float alpha; - if (!PyArg_ParseTuple(_args, "ff", - &gray, - &alpha)) - return NULL; - CGContextSetGrayStrokeColor(_self->ob_itself, - gray, - alpha); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetRGBFillColor(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float red; - float green; - float blue; - float alpha; - if (!PyArg_ParseTuple(_args, "ffff", - &red, - &green, - &blue, - &alpha)) - return NULL; - CGContextSetRGBFillColor(_self->ob_itself, - red, - green, - blue, - alpha); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetRGBStrokeColor(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float red; - float green; - float blue; - float alpha; - if (!PyArg_ParseTuple(_args, "ffff", - &red, - &green, - &blue, - &alpha)) - return NULL; - CGContextSetRGBStrokeColor(_self->ob_itself, - red, - green, - blue, - alpha); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetCMYKFillColor(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float cyan; - float magenta; - float yellow; - float black; - float alpha; - if (!PyArg_ParseTuple(_args, "fffff", - &cyan, - &magenta, - &yellow, - &black, - &alpha)) - return NULL; - CGContextSetCMYKFillColor(_self->ob_itself, - cyan, - magenta, - yellow, - black, - alpha); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetCMYKStrokeColor(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float cyan; - float magenta; - float yellow; - float black; - float alpha; - if (!PyArg_ParseTuple(_args, "fffff", - &cyan, - &magenta, - &yellow, - &black, - &alpha)) - return NULL; - CGContextSetCMYKStrokeColor(_self->ob_itself, - cyan, - magenta, - yellow, - black, - alpha); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextGetInterpolationQuality(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - int _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CGContextGetInterpolationQuality(_self->ob_itself); - _res = Py_BuildValue("i", - _rv); - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetInterpolationQuality(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - int quality; - if (!PyArg_ParseTuple(_args, "i", - &quality)) - return NULL; - CGContextSetInterpolationQuality(_self->ob_itself, - quality); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetCharacterSpacing(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float spacing; - if (!PyArg_ParseTuple(_args, "f", - &spacing)) - return NULL; - CGContextSetCharacterSpacing(_self->ob_itself, - spacing); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetTextPosition(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float x; - float y; - if (!PyArg_ParseTuple(_args, "ff", - &x, - &y)) - return NULL; - CGContextSetTextPosition(_self->ob_itself, - x, - y); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextGetTextPosition(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGPoint _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CGContextGetTextPosition(_self->ob_itself); - _res = Py_BuildValue("O&", - CGPoint_New, &_rv); - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetTextMatrix(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGAffineTransform transform; - if (!PyArg_ParseTuple(_args, "O&", - CGAffineTransform_Convert, &transform)) - return NULL; - CGContextSetTextMatrix(_self->ob_itself, - transform); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextGetTextMatrix(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGAffineTransform _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CGContextGetTextMatrix(_self->ob_itself); - _res = Py_BuildValue("O&", - CGAffineTransform_New, &_rv); - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetTextDrawingMode(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - int mode; - if (!PyArg_ParseTuple(_args, "i", - &mode)) - return NULL; - CGContextSetTextDrawingMode(_self->ob_itself, - mode); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetFontSize(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float size; - if (!PyArg_ParseTuple(_args, "f", - &size)) - return NULL; - CGContextSetFontSize(_self->ob_itself, - size); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSelectFont(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - char * name; - float size; - int textEncoding; - if (!PyArg_ParseTuple(_args, "sfi", - &name, - &size, - &textEncoding)) - return NULL; - CGContextSelectFont(_self->ob_itself, - name, - size, - textEncoding); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextShowText(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - char *cstring__in__; - long cstring__len__; - int cstring__in_len__; - if (!PyArg_ParseTuple(_args, "s#", - &cstring__in__, &cstring__in_len__)) - return NULL; - cstring__len__ = cstring__in_len__; - CGContextShowText(_self->ob_itself, - cstring__in__, cstring__len__); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextShowTextAtPoint(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - float x; - float y; - char *cstring__in__; - long cstring__len__; - int cstring__in_len__; - if (!PyArg_ParseTuple(_args, "ffs#", - &x, - &y, - &cstring__in__, &cstring__in_len__)) - return NULL; - cstring__len__ = cstring__in_len__; - CGContextShowTextAtPoint(_self->ob_itself, - x, - y, - cstring__in__, cstring__len__); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextEndPage(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CGContextEndPage(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextFlush(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CGContextFlush(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSynchronize(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CGContextSynchronize(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_CGContextSetShouldAntialias(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - int shouldAntialias; - if (!PyArg_ParseTuple(_args, "i", - &shouldAntialias)) - return NULL; - CGContextSetShouldAntialias(_self->ob_itself, - shouldAntialias); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -#ifndef __LP64__ -static PyObject *CGContextRefObj_SyncCGContextOriginWithPort(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGrafPtr port; - if (!PyArg_ParseTuple(_args, "O&", - GrafObj_Convert, &port)) - return NULL; - SyncCGContextOriginWithPort(_self->ob_itself, - port); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CGContextRefObj_ClipCGContextToRegion(CGContextRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect portRect; - RgnHandle region; - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &portRect, - ResObj_Convert, ®ion)) - return NULL; - ClipCGContextToRegion(_self->ob_itself, - &portRect, - region); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} -#endif - -static PyMethodDef CGContextRefObj_methods[] = { - {"CGContextSaveGState", (PyCFunction)CGContextRefObj_CGContextSaveGState, 1, - PyDoc_STR("() -> None")}, - {"CGContextRestoreGState", (PyCFunction)CGContextRefObj_CGContextRestoreGState, 1, - PyDoc_STR("() -> None")}, - {"CGContextScaleCTM", (PyCFunction)CGContextRefObj_CGContextScaleCTM, 1, - PyDoc_STR("(float sx, float sy) -> None")}, - {"CGContextTranslateCTM", (PyCFunction)CGContextRefObj_CGContextTranslateCTM, 1, - PyDoc_STR("(float tx, float ty) -> None")}, - {"CGContextRotateCTM", (PyCFunction)CGContextRefObj_CGContextRotateCTM, 1, - PyDoc_STR("(float angle) -> None")}, - {"CGContextConcatCTM", (PyCFunction)CGContextRefObj_CGContextConcatCTM, 1, - PyDoc_STR("(CGAffineTransform transform) -> None")}, - {"CGContextGetCTM", (PyCFunction)CGContextRefObj_CGContextGetCTM, 1, - PyDoc_STR("() -> (CGAffineTransform _rv)")}, - {"CGContextSetLineWidth", (PyCFunction)CGContextRefObj_CGContextSetLineWidth, 1, - PyDoc_STR("(float width) -> None")}, - {"CGContextSetLineCap", (PyCFunction)CGContextRefObj_CGContextSetLineCap, 1, - PyDoc_STR("(int cap) -> None")}, - {"CGContextSetLineJoin", (PyCFunction)CGContextRefObj_CGContextSetLineJoin, 1, - PyDoc_STR("(int join) -> None")}, - {"CGContextSetMiterLimit", (PyCFunction)CGContextRefObj_CGContextSetMiterLimit, 1, - PyDoc_STR("(float limit) -> None")}, - {"CGContextSetFlatness", (PyCFunction)CGContextRefObj_CGContextSetFlatness, 1, - PyDoc_STR("(float flatness) -> None")}, - {"CGContextSetAlpha", (PyCFunction)CGContextRefObj_CGContextSetAlpha, 1, - PyDoc_STR("(float alpha) -> None")}, - {"CGContextBeginPath", (PyCFunction)CGContextRefObj_CGContextBeginPath, 1, - PyDoc_STR("() -> None")}, - {"CGContextMoveToPoint", (PyCFunction)CGContextRefObj_CGContextMoveToPoint, 1, - PyDoc_STR("(float x, float y) -> None")}, - {"CGContextAddLineToPoint", (PyCFunction)CGContextRefObj_CGContextAddLineToPoint, 1, - PyDoc_STR("(float x, float y) -> None")}, - {"CGContextAddCurveToPoint", (PyCFunction)CGContextRefObj_CGContextAddCurveToPoint, 1, - PyDoc_STR("(float cp1x, float cp1y, float cp2x, float cp2y, float x, float y) -> None")}, - {"CGContextAddQuadCurveToPoint", (PyCFunction)CGContextRefObj_CGContextAddQuadCurveToPoint, 1, - PyDoc_STR("(float cpx, float cpy, float x, float y) -> None")}, - {"CGContextClosePath", (PyCFunction)CGContextRefObj_CGContextClosePath, 1, - PyDoc_STR("() -> None")}, - {"CGContextAddRect", (PyCFunction)CGContextRefObj_CGContextAddRect, 1, - PyDoc_STR("(CGRect rect) -> None")}, - {"CGContextAddArc", (PyCFunction)CGContextRefObj_CGContextAddArc, 1, - PyDoc_STR("(float x, float y, float radius, float startAngle, float endAngle, int clockwise) -> None")}, - {"CGContextAddArcToPoint", (PyCFunction)CGContextRefObj_CGContextAddArcToPoint, 1, - PyDoc_STR("(float x1, float y1, float x2, float y2, float radius) -> None")}, - {"CGContextIsPathEmpty", (PyCFunction)CGContextRefObj_CGContextIsPathEmpty, 1, - PyDoc_STR("() -> (int _rv)")}, - {"CGContextGetPathCurrentPoint", (PyCFunction)CGContextRefObj_CGContextGetPathCurrentPoint, 1, - PyDoc_STR("() -> (CGPoint _rv)")}, - {"CGContextGetPathBoundingBox", (PyCFunction)CGContextRefObj_CGContextGetPathBoundingBox, 1, - PyDoc_STR("() -> (CGRect _rv)")}, - {"CGContextDrawPath", (PyCFunction)CGContextRefObj_CGContextDrawPath, 1, - PyDoc_STR("(int mode) -> None")}, - {"CGContextFillPath", (PyCFunction)CGContextRefObj_CGContextFillPath, 1, - PyDoc_STR("() -> None")}, - {"CGContextEOFillPath", (PyCFunction)CGContextRefObj_CGContextEOFillPath, 1, - PyDoc_STR("() -> None")}, - {"CGContextStrokePath", (PyCFunction)CGContextRefObj_CGContextStrokePath, 1, - PyDoc_STR("() -> None")}, - {"CGContextFillRect", (PyCFunction)CGContextRefObj_CGContextFillRect, 1, - PyDoc_STR("(CGRect rect) -> None")}, - {"CGContextStrokeRect", (PyCFunction)CGContextRefObj_CGContextStrokeRect, 1, - PyDoc_STR("(CGRect rect) -> None")}, - {"CGContextStrokeRectWithWidth", (PyCFunction)CGContextRefObj_CGContextStrokeRectWithWidth, 1, - PyDoc_STR("(CGRect rect, float width) -> None")}, - {"CGContextClearRect", (PyCFunction)CGContextRefObj_CGContextClearRect, 1, - PyDoc_STR("(CGRect rect) -> None")}, - {"CGContextClip", (PyCFunction)CGContextRefObj_CGContextClip, 1, - PyDoc_STR("() -> None")}, - {"CGContextEOClip", (PyCFunction)CGContextRefObj_CGContextEOClip, 1, - PyDoc_STR("() -> None")}, - {"CGContextClipToRect", (PyCFunction)CGContextRefObj_CGContextClipToRect, 1, - PyDoc_STR("(CGRect rect) -> None")}, - {"CGContextSetGrayFillColor", (PyCFunction)CGContextRefObj_CGContextSetGrayFillColor, 1, - PyDoc_STR("(float gray, float alpha) -> None")}, - {"CGContextSetGrayStrokeColor", (PyCFunction)CGContextRefObj_CGContextSetGrayStrokeColor, 1, - PyDoc_STR("(float gray, float alpha) -> None")}, - {"CGContextSetRGBFillColor", (PyCFunction)CGContextRefObj_CGContextSetRGBFillColor, 1, - PyDoc_STR("(float red, float green, float blue, float alpha) -> None")}, - {"CGContextSetRGBStrokeColor", (PyCFunction)CGContextRefObj_CGContextSetRGBStrokeColor, 1, - PyDoc_STR("(float red, float green, float blue, float alpha) -> None")}, - {"CGContextSetCMYKFillColor", (PyCFunction)CGContextRefObj_CGContextSetCMYKFillColor, 1, - PyDoc_STR("(float cyan, float magenta, float yellow, float black, float alpha) -> None")}, - {"CGContextSetCMYKStrokeColor", (PyCFunction)CGContextRefObj_CGContextSetCMYKStrokeColor, 1, - PyDoc_STR("(float cyan, float magenta, float yellow, float black, float alpha) -> None")}, - {"CGContextGetInterpolationQuality", (PyCFunction)CGContextRefObj_CGContextGetInterpolationQuality, 1, - PyDoc_STR("() -> (int _rv)")}, - {"CGContextSetInterpolationQuality", (PyCFunction)CGContextRefObj_CGContextSetInterpolationQuality, 1, - PyDoc_STR("(int quality) -> None")}, - {"CGContextSetCharacterSpacing", (PyCFunction)CGContextRefObj_CGContextSetCharacterSpacing, 1, - PyDoc_STR("(float spacing) -> None")}, - {"CGContextSetTextPosition", (PyCFunction)CGContextRefObj_CGContextSetTextPosition, 1, - PyDoc_STR("(float x, float y) -> None")}, - {"CGContextGetTextPosition", (PyCFunction)CGContextRefObj_CGContextGetTextPosition, 1, - PyDoc_STR("() -> (CGPoint _rv)")}, - {"CGContextSetTextMatrix", (PyCFunction)CGContextRefObj_CGContextSetTextMatrix, 1, - PyDoc_STR("(CGAffineTransform transform) -> None")}, - {"CGContextGetTextMatrix", (PyCFunction)CGContextRefObj_CGContextGetTextMatrix, 1, - PyDoc_STR("() -> (CGAffineTransform _rv)")}, - {"CGContextSetTextDrawingMode", (PyCFunction)CGContextRefObj_CGContextSetTextDrawingMode, 1, - PyDoc_STR("(int mode) -> None")}, - {"CGContextSetFontSize", (PyCFunction)CGContextRefObj_CGContextSetFontSize, 1, - PyDoc_STR("(float size) -> None")}, - {"CGContextSelectFont", (PyCFunction)CGContextRefObj_CGContextSelectFont, 1, - PyDoc_STR("(char * name, float size, int textEncoding) -> None")}, - {"CGContextShowText", (PyCFunction)CGContextRefObj_CGContextShowText, 1, - PyDoc_STR("(Buffer cstring) -> None")}, - {"CGContextShowTextAtPoint", (PyCFunction)CGContextRefObj_CGContextShowTextAtPoint, 1, - PyDoc_STR("(float x, float y, Buffer cstring) -> None")}, - {"CGContextEndPage", (PyCFunction)CGContextRefObj_CGContextEndPage, 1, - PyDoc_STR("() -> None")}, - {"CGContextFlush", (PyCFunction)CGContextRefObj_CGContextFlush, 1, - PyDoc_STR("() -> None")}, - {"CGContextSynchronize", (PyCFunction)CGContextRefObj_CGContextSynchronize, 1, - PyDoc_STR("() -> None")}, - {"CGContextSetShouldAntialias", (PyCFunction)CGContextRefObj_CGContextSetShouldAntialias, 1, - PyDoc_STR("(int shouldAntialias) -> None")}, -#ifndef __LP64__ - {"SyncCGContextOriginWithPort", (PyCFunction)CGContextRefObj_SyncCGContextOriginWithPort, 1, - PyDoc_STR("(CGrafPtr port) -> None")}, - {"ClipCGContextToRegion", (PyCFunction)CGContextRefObj_ClipCGContextToRegion, 1, - PyDoc_STR("(Rect portRect, RgnHandle region) -> None")}, -#endif - {NULL, NULL, 0} -}; - -#define CGContextRefObj_getsetlist NULL - - -#define CGContextRefObj_compare NULL - -#define CGContextRefObj_repr NULL - -#define CGContextRefObj_hash NULL -#define CGContextRefObj_tp_init 0 - -#define CGContextRefObj_tp_alloc PyType_GenericAlloc - -static PyObject *CGContextRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - CGContextRef itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CGContextRefObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((CGContextRefObject *)_self)->ob_itself = itself; - return _self; -} - -#define CGContextRefObj_tp_free PyObject_Del - - -PyTypeObject CGContextRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_CG.CGContextRef", /*tp_name*/ - sizeof(CGContextRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CGContextRefObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CGContextRefObj_compare, /*tp_compare*/ - (reprfunc) CGContextRefObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CGContextRefObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CGContextRefObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CGContextRefObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CGContextRefObj_tp_init, /* tp_init */ - CGContextRefObj_tp_alloc, /* tp_alloc */ - CGContextRefObj_tp_new, /* tp_new */ - CGContextRefObj_tp_free, /* tp_free */ -}; - -/* ------------------ End object type CGContextRef ------------------ */ - - -#ifndef __LP64__ -static PyObject *CG_CreateCGContextForPort(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GrafPtr port; - CGContextRef ctx; - OSStatus _err; - - if (!PyArg_ParseTuple(_args, "O&", GrafObj_Convert, &port)) - return NULL; - - _err = CreateCGContextForPort(port, &ctx); - if (_err != noErr) - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", CGContextRefObj_New, ctx); - return _res; - -} -#endif - -static PyMethodDef CG_methods[] = { -#ifndef __LP64__ - {"CreateCGContextForPort", (PyCFunction)CG_CreateCGContextForPort, 1, - PyDoc_STR("(CGrafPtr) -> CGContextRef")}, -#endif - {NULL, NULL, 0} -}; - - - - -void init_CG(void) -{ - PyObject *m; - PyObject *d; - - - - - m = Py_InitModule("_CG", CG_methods); - d = PyModule_GetDict(m); - CG_Error = PyMac_GetOSErrException(); - if (CG_Error == NULL || - PyDict_SetItemString(d, "Error", CG_Error) != 0) - return; - CGContextRef_Type.ob_type = &PyType_Type; - if (PyType_Ready(&CGContextRef_Type) < 0) return; - Py_INCREF(&CGContextRef_Type); - PyModule_AddObject(m, "CGContextRef", (PyObject *)&CGContextRef_Type); - /* Backward-compatible name */ - Py_INCREF(&CGContextRef_Type); - PyModule_AddObject(m, "CGContextRefType", (PyObject *)&CGContextRef_Type); -} - -/* ========================= End module _CG ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/cg/cgscan.py b/project/jni/python/src/Mac/Modules/cg/cgscan.py deleted file mode 100644 index c08394ee2..000000000 --- a/project/jni/python/src/Mac/Modules/cg/cgscan.py +++ /dev/null @@ -1,83 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner_OSX - -LONG = "CoreGraphics" -SHORT = "cg" -OBJECTS = ("CGContextRef", - ) -# ADD object typenames here - -def main(): - input = [ - "CGContext.h", - ] - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.gentypetest(SHORT+"typetest.py") - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner_OSX): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t in OBJECTS and m == "InMode": - classname = "Method" - listname = t + "_methods" - # Special case for the silly first AllocatorRef argument - if t == 'CFAllocatorRef' and m == 'InMode' and len(arglist) > 1: - t, n, m = arglist[1] - if t in OBJECTS and m == "InMode": - classname = "MethodSkipArg1" - listname = t + "_methods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - - def makeblacklistnames(self): - return [ - "CGContextRetain", - "CGContextRelease", - ] - - def makegreylist(self): - return [] - - def makeblacklisttypes(self): - return [ - "float_ptr", - "CGRect_ptr", - "CGPoint_ptr", - "CGColorSpaceRef", - "CGColorRenderingIntent", - "CGFontRef", -# "char_ptr", - "CGGlyph_ptr", - "CGImageRef", - "CGPDFDocumentRef", - ] - - def makerepairinstructions(self): - return [ - ([("char_ptr", "cstring", "InMode"), ("size_t", "length", "InMode")], - [("InBuffer", "*", "*")]), -# ([("char_ptr", "name", "InMode"),], -# [("CCCCC", "*", "*")]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/cg/cgsupport.py b/project/jni/python/src/Mac/Modules/cg/cgsupport.py deleted file mode 100644 index 6eedfbef3..000000000 --- a/project/jni/python/src/Mac/Modules/cg/cgsupport.py +++ /dev/null @@ -1,192 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -#error missing SetActionFilter - -import string - -# Declarations that change for each manager -MODNAME = '_CG' # The name of the module - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'CG' # The prefix for module-wide routines -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj") -RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") - -# Create the type objects - -includestuff = includestuff + """ -#include - -extern int GrafObj_Convert(PyObject *, GrafPtr *); - -/* -** Manual converters -*/ - -PyObject *CGPoint_New(CGPoint *itself) -{ - - return Py_BuildValue("(ff)", - itself->x, - itself->y); -} - -int -CGPoint_Convert(PyObject *v, CGPoint *p_itself) -{ - if( !PyArg_Parse(v, "(ff)", - &p_itself->x, - &p_itself->y) ) - return 0; - return 1; -} - -PyObject *CGRect_New(CGRect *itself) -{ - - return Py_BuildValue("(ffff)", - itself->origin.x, - itself->origin.y, - itself->size.width, - itself->size.height); -} - -int -CGRect_Convert(PyObject *v, CGRect *p_itself) -{ - if( !PyArg_Parse(v, "(ffff)", - &p_itself->origin.x, - &p_itself->origin.y, - &p_itself->size.width, - &p_itself->size.height) ) - return 0; - return 1; -} - -PyObject *CGAffineTransform_New(CGAffineTransform *itself) -{ - - return Py_BuildValue("(ffffff)", - itself->a, - itself->b, - itself->c, - itself->d, - itself->tx, - itself->ty); -} - -int -CGAffineTransform_Convert(PyObject *v, CGAffineTransform *p_itself) -{ - if( !PyArg_Parse(v, "(ffffff)", - &p_itself->a, - &p_itself->b, - &p_itself->c, - &p_itself->d, - &p_itself->tx, - &p_itself->ty) ) - return 0; - return 1; -} -""" - -class MyOpaqueByValueType(OpaqueByValueType): - """Sort of a mix between OpaqueByValueType and OpaqueType.""" - def mkvalueArgs(self, name): - return "%s, &%s" % (self.new, name) - -CGPoint = MyOpaqueByValueType('CGPoint', 'CGPoint') -CGRect = MyOpaqueByValueType('CGRect', 'CGRect') -CGAffineTransform = MyOpaqueByValueType('CGAffineTransform', 'CGAffineTransform') - -char_ptr = Type("char *", "s") - -CGTextEncoding = int -CGLineCap = int -CGLineJoin = int -CGTextDrawingMode = int -CGPathDrawingMode = int -CGInterpolationQuality = int - -# The real objects -CGContextRef = OpaqueByValueType("CGContextRef", "CGContextRefObj") - - -class MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - def outputStructMembers(self): - ObjectDefinition.outputStructMembers(self) - def outputCleanupStructMembers(self): - Output("CGContextRelease(self->ob_itself);") - - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) - -CGContextRef_object = MyObjectDefinition('CGContextRef', 'CGContextRefObj', 'CGContextRef') - - -# ADD object here - -module.addobject(CGContextRef_object) - - - -Function = FunctionGenerator -Method = MethodGenerator - -CGContextRef_methods = [] - -# ADD _methods initializer here -execfile(INPUTFILE) - -# manual method, lives in Quickdraw.h -f = Method(void, 'SyncCGContextOriginWithPort', - (CGContextRef, 'ctx', InMode), - (CGrafPtr, 'port', InMode), -) -CGContextRef_methods.append(f) - -# manual method, lives in Quickdraw.h -f = Method(void, 'ClipCGContextToRegion', - (CGContextRef, 'ctx', InMode), - (Rect, 'portRect', InMode), - (RgnHandle, 'region', InMode), -) -CGContextRef_methods.append(f) - - -CreateCGContextForPort_body = """\ -GrafPtr port; -CGContextRef ctx; -OSStatus _err; - -if (!PyArg_ParseTuple(_args, "O&", GrafObj_Convert, &port)) - return NULL; - -_err = CreateCGContextForPort(port, &ctx); -if (_err != noErr) - if (_err != noErr) return PyMac_Error(_err); -_res = Py_BuildValue("O&", CGContextRefObj_New, ctx); -return _res; -""" - -f = ManualGenerator("CreateCGContextForPort", CreateCGContextForPort_body); -f.docstring = lambda: "(CGrafPtr) -> CGContextRef" -module.add(f) - - -# ADD add forloop here -for f in CGContextRef_methods: - CGContextRef_object.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/cm/_Cmmodule.c b/project/jni/python/src/Mac/Modules/cm/_Cmmodule.c deleted file mode 100644 index 03a25dd18..000000000 --- a/project/jni/python/src/Mac/Modules/cm/_Cmmodule.c +++ /dev/null @@ -1,955 +0,0 @@ - -/* =========================== Module _Cm =========================== */ - -#include "Python.h" - - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_CmpObj_New(Component); -extern int _CmpObj_Convert(PyObject *, Component *); -extern PyObject *_CmpInstObj_New(ComponentInstance); -extern int _CmpInstObj_Convert(PyObject *, ComponentInstance *); - -#define CmpObj_New _CmpObj_New -#define CmpObj_Convert _CmpObj_Convert -#define CmpInstObj_New _CmpInstObj_New -#define CmpInstObj_Convert _CmpInstObj_Convert -#endif - -/* -** Parse/generate ComponentDescriptor records -*/ -static PyObject * -CmpDesc_New(ComponentDescription *itself) -{ - - return Py_BuildValue("O&O&O&ll", - PyMac_BuildOSType, itself->componentType, - PyMac_BuildOSType, itself->componentSubType, - PyMac_BuildOSType, itself->componentManufacturer, - itself->componentFlags, itself->componentFlagsMask); -} - -static int -CmpDesc_Convert(PyObject *v, ComponentDescription *p_itself) -{ - return PyArg_ParseTuple(v, "O&O&O&ll", - PyMac_GetOSType, &p_itself->componentType, - PyMac_GetOSType, &p_itself->componentSubType, - PyMac_GetOSType, &p_itself->componentManufacturer, - &p_itself->componentFlags, &p_itself->componentFlagsMask); -} - - -static PyObject *Cm_Error; - -/* ----------------- Object type ComponentInstance ------------------ */ - -PyTypeObject ComponentInstance_Type; - -#define CmpInstObj_Check(x) ((x)->ob_type == &ComponentInstance_Type || PyObject_TypeCheck((x), &ComponentInstance_Type)) - -typedef struct ComponentInstanceObject { - PyObject_HEAD - ComponentInstance ob_itself; -} ComponentInstanceObject; - -PyObject *CmpInstObj_New(ComponentInstance itself) -{ - ComponentInstanceObject *it; - if (itself == NULL) { - PyErr_SetString(Cm_Error,"NULL ComponentInstance"); - return NULL; - } - it = PyObject_NEW(ComponentInstanceObject, &ComponentInstance_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int CmpInstObj_Convert(PyObject *v, ComponentInstance *p_itself) -{ - if (!CmpInstObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "ComponentInstance required"); - return 0; - } - *p_itself = ((ComponentInstanceObject *)v)->ob_itself; - return 1; -} - -static void CmpInstObj_dealloc(ComponentInstanceObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *CmpInstObj_CloseComponent(ComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef CloseComponent - PyMac_PRECHECK(CloseComponent); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = CloseComponent(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CmpInstObj_GetComponentInstanceError(ComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef GetComponentInstanceError - PyMac_PRECHECK(GetComponentInstanceError); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetComponentInstanceError(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CmpInstObj_SetComponentInstanceError(ComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr theError; -#ifndef SetComponentInstanceError - PyMac_PRECHECK(SetComponentInstanceError); -#endif - if (!PyArg_ParseTuple(_args, "h", - &theError)) - return NULL; - SetComponentInstanceError(_self->ob_itself, - theError); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CmpInstObj_GetComponentInstanceStorage(ComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; -#ifndef GetComponentInstanceStorage - PyMac_PRECHECK(GetComponentInstanceStorage); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetComponentInstanceStorage(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *CmpInstObj_SetComponentInstanceStorage(ComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle theStorage; -#ifndef SetComponentInstanceStorage - PyMac_PRECHECK(SetComponentInstanceStorage); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theStorage)) - return NULL; - SetComponentInstanceStorage(_self->ob_itself, - theStorage); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -#ifndef __LP64__ -static PyObject *CmpInstObj_ComponentFunctionImplemented(ComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - short ftnNumber; -#ifndef ComponentFunctionImplemented - PyMac_PRECHECK(ComponentFunctionImplemented); -#endif - if (!PyArg_ParseTuple(_args, "h", - &ftnNumber)) - return NULL; - _rv = ComponentFunctionImplemented(_self->ob_itself, - ftnNumber); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CmpInstObj_GetComponentVersion(ComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetComponentVersion - PyMac_PRECHECK(GetComponentVersion); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetComponentVersion(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CmpInstObj_ComponentSetTarget(ComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - ComponentInstance target; -#ifndef ComponentSetTarget - PyMac_PRECHECK(ComponentSetTarget); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &target)) - return NULL; - _rv = ComponentSetTarget(_self->ob_itself, - target); - _res = Py_BuildValue("l", - _rv); - return _res; -} -#endif /* !__LP64__*/ - -static PyMethodDef CmpInstObj_methods[] = { - {"CloseComponent", (PyCFunction)CmpInstObj_CloseComponent, 1, - PyDoc_STR("() -> None")}, - {"GetComponentInstanceError", (PyCFunction)CmpInstObj_GetComponentInstanceError, 1, - PyDoc_STR("() -> None")}, - {"SetComponentInstanceError", (PyCFunction)CmpInstObj_SetComponentInstanceError, 1, - PyDoc_STR("(OSErr theError) -> None")}, - {"GetComponentInstanceStorage", (PyCFunction)CmpInstObj_GetComponentInstanceStorage, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {"SetComponentInstanceStorage", (PyCFunction)CmpInstObj_SetComponentInstanceStorage, 1, - PyDoc_STR("(Handle theStorage) -> None")}, -#ifndef __LP64__ - {"ComponentFunctionImplemented", (PyCFunction)CmpInstObj_ComponentFunctionImplemented, 1, - PyDoc_STR("(short ftnNumber) -> (long _rv)")}, - {"GetComponentVersion", (PyCFunction)CmpInstObj_GetComponentVersion, 1, - PyDoc_STR("() -> (long _rv)")}, - {"ComponentSetTarget", (PyCFunction)CmpInstObj_ComponentSetTarget, 1, - PyDoc_STR("(ComponentInstance target) -> (long _rv)")}, -#endif /* !__LP64__ */ - {NULL, NULL, 0} -}; - -#define CmpInstObj_getsetlist NULL - - -#define CmpInstObj_compare NULL - -#define CmpInstObj_repr NULL - -#define CmpInstObj_hash NULL -#define CmpInstObj_tp_init 0 - -#define CmpInstObj_tp_alloc PyType_GenericAlloc - -static PyObject *CmpInstObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - ComponentInstance itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CmpInstObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((ComponentInstanceObject *)_self)->ob_itself = itself; - return _self; -} - -#define CmpInstObj_tp_free PyObject_Del - - -PyTypeObject ComponentInstance_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Cm.ComponentInstance", /*tp_name*/ - sizeof(ComponentInstanceObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CmpInstObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CmpInstObj_compare, /*tp_compare*/ - (reprfunc) CmpInstObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CmpInstObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CmpInstObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CmpInstObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CmpInstObj_tp_init, /* tp_init */ - CmpInstObj_tp_alloc, /* tp_alloc */ - CmpInstObj_tp_new, /* tp_new */ - CmpInstObj_tp_free, /* tp_free */ -}; - -/* --------------- End object type ComponentInstance ---------------- */ - - -/* --------------------- Object type Component ---------------------- */ - -PyTypeObject Component_Type; - -#define CmpObj_Check(x) ((x)->ob_type == &Component_Type || PyObject_TypeCheck((x), &Component_Type)) - -typedef struct ComponentObject { - PyObject_HEAD - Component ob_itself; -} ComponentObject; - -PyObject *CmpObj_New(Component itself) -{ - ComponentObject *it; - if (itself == NULL) { - /* XXXX Or should we return None? */ - PyErr_SetString(Cm_Error,"No such component"); - return NULL; - } - it = PyObject_NEW(ComponentObject, &Component_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int CmpObj_Convert(PyObject *v, Component *p_itself) -{ - if ( v == Py_None ) { - *p_itself = 0; - return 1; - } - if (!CmpObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "Component required"); - return 0; - } - *p_itself = ((ComponentObject *)v)->ob_itself; - return 1; -} - -static void CmpObj_dealloc(ComponentObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *CmpObj_UnregisterComponent(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef UnregisterComponent - PyMac_PRECHECK(UnregisterComponent); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = UnregisterComponent(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CmpObj_GetComponentInfo(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ComponentDescription cd; - Handle componentName; - Handle componentInfo; - Handle componentIcon; -#ifndef GetComponentInfo - PyMac_PRECHECK(GetComponentInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &componentName, - ResObj_Convert, &componentInfo, - ResObj_Convert, &componentIcon)) - return NULL; - _err = GetComponentInfo(_self->ob_itself, - &cd, - componentName, - componentInfo, - componentIcon); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CmpDesc_New, &cd); - return _res; -} - -static PyObject *CmpObj_OpenComponent(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentInstance _rv; -#ifndef OpenComponent - PyMac_PRECHECK(OpenComponent); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = OpenComponent(_self->ob_itself); - _res = Py_BuildValue("O&", - CmpInstObj_New, _rv); - return _res; -} - -static PyObject *CmpObj_ResolveComponentAlias(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Component _rv; -#ifndef ResolveComponentAlias - PyMac_PRECHECK(ResolveComponentAlias); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = ResolveComponentAlias(_self->ob_itself); - _res = Py_BuildValue("O&", - CmpObj_New, _rv); - return _res; -} - -static PyObject *CmpObj_GetComponentPublicIndString(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Str255 theString; - short strListID; - short index; -#ifndef GetComponentPublicIndString - PyMac_PRECHECK(GetComponentPublicIndString); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetStr255, theString, - &strListID, - &index)) - return NULL; - _err = GetComponentPublicIndString(_self->ob_itself, - theString, - strListID, - index); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CmpObj_GetComponentRefcon(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetComponentRefcon - PyMac_PRECHECK(GetComponentRefcon); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetComponentRefcon(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CmpObj_SetComponentRefcon(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long theRefcon; -#ifndef SetComponentRefcon - PyMac_PRECHECK(SetComponentRefcon); -#endif - if (!PyArg_ParseTuple(_args, "l", - &theRefcon)) - return NULL; - SetComponentRefcon(_self->ob_itself, - theRefcon); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CmpObj_OpenComponentResFile(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef OpenComponentResFile - PyMac_PRECHECK(OpenComponentResFile); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = OpenComponentResFile(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *CmpObj_GetComponentResource(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType resType; - short resID; - Handle theResource; -#ifndef GetComponentResource - PyMac_PRECHECK(GetComponentResource); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetOSType, &resType, - &resID)) - return NULL; - _err = GetComponentResource(_self->ob_itself, - resType, - resID, - &theResource); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, theResource); - return _res; -} - -static PyObject *CmpObj_GetComponentIndString(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Str255 theString; - short strListID; - short index; -#ifndef GetComponentIndString - PyMac_PRECHECK(GetComponentIndString); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetStr255, theString, - &strListID, - &index)) - return NULL; - _err = GetComponentIndString(_self->ob_itself, - theString, - strListID, - index); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CmpObj_CountComponentInstances(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef CountComponentInstances - PyMac_PRECHECK(CountComponentInstances); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CountComponentInstances(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CmpObj_SetDefaultComponent(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short flags; -#ifndef SetDefaultComponent - PyMac_PRECHECK(SetDefaultComponent); -#endif - if (!PyArg_ParseTuple(_args, "h", - &flags)) - return NULL; - _err = SetDefaultComponent(_self->ob_itself, - flags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CmpObj_CaptureComponent(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Component _rv; - Component capturingComponent; -#ifndef CaptureComponent - PyMac_PRECHECK(CaptureComponent); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpObj_Convert, &capturingComponent)) - return NULL; - _rv = CaptureComponent(_self->ob_itself, - capturingComponent); - _res = Py_BuildValue("O&", - CmpObj_New, _rv); - return _res; -} - -static PyObject *CmpObj_UncaptureComponent(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef UncaptureComponent - PyMac_PRECHECK(UncaptureComponent); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = UncaptureComponent(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -#ifndef __LP64__ -static PyObject *CmpObj_GetComponentIconSuite(ComponentObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle iconSuite; -#ifndef GetComponentIconSuite - PyMac_PRECHECK(GetComponentIconSuite); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetComponentIconSuite(_self->ob_itself, - &iconSuite); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, iconSuite); - return _res; -} -#endif /* !__LP64__ */ - -static PyMethodDef CmpObj_methods[] = { - {"UnregisterComponent", (PyCFunction)CmpObj_UnregisterComponent, 1, - PyDoc_STR("() -> None")}, - {"GetComponentInfo", (PyCFunction)CmpObj_GetComponentInfo, 1, - PyDoc_STR("(Handle componentName, Handle componentInfo, Handle componentIcon) -> (ComponentDescription cd)")}, - {"OpenComponent", (PyCFunction)CmpObj_OpenComponent, 1, - PyDoc_STR("() -> (ComponentInstance _rv)")}, - {"ResolveComponentAlias", (PyCFunction)CmpObj_ResolveComponentAlias, 1, - PyDoc_STR("() -> (Component _rv)")}, - {"GetComponentPublicIndString", (PyCFunction)CmpObj_GetComponentPublicIndString, 1, - PyDoc_STR("(Str255 theString, short strListID, short index) -> None")}, - {"GetComponentRefcon", (PyCFunction)CmpObj_GetComponentRefcon, 1, - PyDoc_STR("() -> (long _rv)")}, - {"SetComponentRefcon", (PyCFunction)CmpObj_SetComponentRefcon, 1, - PyDoc_STR("(long theRefcon) -> None")}, - {"OpenComponentResFile", (PyCFunction)CmpObj_OpenComponentResFile, 1, - PyDoc_STR("() -> (short _rv)")}, - {"GetComponentResource", (PyCFunction)CmpObj_GetComponentResource, 1, - PyDoc_STR("(OSType resType, short resID) -> (Handle theResource)")}, - {"GetComponentIndString", (PyCFunction)CmpObj_GetComponentIndString, 1, - PyDoc_STR("(Str255 theString, short strListID, short index) -> None")}, - {"CountComponentInstances", (PyCFunction)CmpObj_CountComponentInstances, 1, - PyDoc_STR("() -> (long _rv)")}, - {"SetDefaultComponent", (PyCFunction)CmpObj_SetDefaultComponent, 1, - PyDoc_STR("(short flags) -> None")}, - {"CaptureComponent", (PyCFunction)CmpObj_CaptureComponent, 1, - PyDoc_STR("(Component capturingComponent) -> (Component _rv)")}, - {"UncaptureComponent", (PyCFunction)CmpObj_UncaptureComponent, 1, - PyDoc_STR("() -> None")}, -#ifndef __LP64__ - {"GetComponentIconSuite", (PyCFunction)CmpObj_GetComponentIconSuite, 1, - PyDoc_STR("() -> (Handle iconSuite)")}, -#endif /* !__LP64__ */ - {NULL, NULL, 0} -}; - -#define CmpObj_getsetlist NULL - - -#define CmpObj_compare NULL - -#define CmpObj_repr NULL - -#define CmpObj_hash NULL -#define CmpObj_tp_init 0 - -#define CmpObj_tp_alloc PyType_GenericAlloc - -static PyObject *CmpObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - Component itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CmpObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((ComponentObject *)_self)->ob_itself = itself; - return _self; -} - -#define CmpObj_tp_free PyObject_Del - - -PyTypeObject Component_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Cm.Component", /*tp_name*/ - sizeof(ComponentObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CmpObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CmpObj_compare, /*tp_compare*/ - (reprfunc) CmpObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CmpObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CmpObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CmpObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CmpObj_tp_init, /* tp_init */ - CmpObj_tp_alloc, /* tp_alloc */ - CmpObj_tp_new, /* tp_new */ - CmpObj_tp_free, /* tp_free */ -}; - -/* ------------------- End object type Component -------------------- */ - - -static PyObject *Cm_RegisterComponentResource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Component _rv; - ComponentResourceHandle cr; - short global; -#ifndef RegisterComponentResource - PyMac_PRECHECK(RegisterComponentResource); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - ResObj_Convert, &cr, - &global)) - return NULL; - _rv = RegisterComponentResource(cr, - global); - _res = Py_BuildValue("O&", - CmpObj_New, _rv); - return _res; -} - -static PyObject *Cm_FindNextComponent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Component _rv; - Component aComponent; - ComponentDescription looking; -#ifndef FindNextComponent - PyMac_PRECHECK(FindNextComponent); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpObj_Convert, &aComponent, - CmpDesc_Convert, &looking)) - return NULL; - _rv = FindNextComponent(aComponent, - &looking); - _res = Py_BuildValue("O&", - CmpObj_New, _rv); - return _res; -} - -static PyObject *Cm_CountComponents(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - ComponentDescription looking; -#ifndef CountComponents - PyMac_PRECHECK(CountComponents); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpDesc_Convert, &looking)) - return NULL; - _rv = CountComponents(&looking); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Cm_GetComponentListModSeed(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetComponentListModSeed - PyMac_PRECHECK(GetComponentListModSeed); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetComponentListModSeed(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Cm_CloseComponentResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short refnum; -#ifndef CloseComponentResFile - PyMac_PRECHECK(CloseComponentResFile); -#endif - if (!PyArg_ParseTuple(_args, "h", - &refnum)) - return NULL; - _err = CloseComponentResFile(refnum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Cm_OpenDefaultComponent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentInstance _rv; - OSType componentType; - OSType componentSubType; -#ifndef OpenDefaultComponent - PyMac_PRECHECK(OpenDefaultComponent); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &componentType, - PyMac_GetOSType, &componentSubType)) - return NULL; - _rv = OpenDefaultComponent(componentType, - componentSubType); - _res = Py_BuildValue("O&", - CmpInstObj_New, _rv); - return _res; -} - -static PyObject *Cm_RegisterComponentResourceFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - short resRefNum; - short global; -#ifndef RegisterComponentResourceFile - PyMac_PRECHECK(RegisterComponentResourceFile); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &resRefNum, - &global)) - return NULL; - _rv = RegisterComponentResourceFile(resRefNum, - global); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyMethodDef Cm_methods[] = { - {"RegisterComponentResource", (PyCFunction)Cm_RegisterComponentResource, 1, - PyDoc_STR("(ComponentResourceHandle cr, short global) -> (Component _rv)")}, - {"FindNextComponent", (PyCFunction)Cm_FindNextComponent, 1, - PyDoc_STR("(Component aComponent, ComponentDescription looking) -> (Component _rv)")}, - {"CountComponents", (PyCFunction)Cm_CountComponents, 1, - PyDoc_STR("(ComponentDescription looking) -> (long _rv)")}, - {"GetComponentListModSeed", (PyCFunction)Cm_GetComponentListModSeed, 1, - PyDoc_STR("() -> (long _rv)")}, - {"CloseComponentResFile", (PyCFunction)Cm_CloseComponentResFile, 1, - PyDoc_STR("(short refnum) -> None")}, - {"OpenDefaultComponent", (PyCFunction)Cm_OpenDefaultComponent, 1, - PyDoc_STR("(OSType componentType, OSType componentSubType) -> (ComponentInstance _rv)")}, - {"RegisterComponentResourceFile", (PyCFunction)Cm_RegisterComponentResourceFile, 1, - PyDoc_STR("(short resRefNum, short global) -> (long _rv)")}, - {NULL, NULL, 0} -}; - - - - -void init_Cm(void) -{ - PyObject *m; - PyObject *d; - - - - PyMac_INIT_TOOLBOX_OBJECT_NEW(Component, CmpObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Component, CmpObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(ComponentInstance, CmpInstObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ComponentInstance, CmpInstObj_Convert); - - - m = Py_InitModule("_Cm", Cm_methods); - d = PyModule_GetDict(m); - Cm_Error = PyMac_GetOSErrException(); - if (Cm_Error == NULL || - PyDict_SetItemString(d, "Error", Cm_Error) != 0) - return; - ComponentInstance_Type.ob_type = &PyType_Type; - if (PyType_Ready(&ComponentInstance_Type) < 0) return; - Py_INCREF(&ComponentInstance_Type); - PyModule_AddObject(m, "ComponentInstance", (PyObject *)&ComponentInstance_Type); - /* Backward-compatible name */ - Py_INCREF(&ComponentInstance_Type); - PyModule_AddObject(m, "ComponentInstanceType", (PyObject *)&ComponentInstance_Type); - Component_Type.ob_type = &PyType_Type; - if (PyType_Ready(&Component_Type) < 0) return; - Py_INCREF(&Component_Type); - PyModule_AddObject(m, "Component", (PyObject *)&Component_Type); - /* Backward-compatible name */ - Py_INCREF(&Component_Type); - PyModule_AddObject(m, "ComponentType", (PyObject *)&Component_Type); -} - -/* ========================= End module _Cm ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/cm/cmscan.py b/project/jni/python/src/Mac/Modules/cm/cmscan.py deleted file mode 100644 index 73261f58b..000000000 --- a/project/jni/python/src/Mac/Modules/cm/cmscan.py +++ /dev/null @@ -1,88 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner - -LONG = "Components" -SHORT = "cm" - -def main(): - input = "Components.h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - # - # FindNextComponent is a special case, since it call also be called - # with None as the argument. Hence, we make it a function - # - if t == "Component" and m == "InMode" and name != "FindNextComponent": - classname = "Method" - listname = "c_methods" - elif t == "ComponentInstance" and m == "InMode": - classname = "Method" - listname = "ci_methods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - - def makeblacklistnames(self): - return [ - "OpenADefaultComponent", - "GetComponentTypeModSeed", - "OpenAComponentResFile", - "CallComponentUnregister", - "CallComponentTarget", - "CallComponentRegister", - "CallComponentVersion", - "CallComponentCanDo", - "CallComponentClose", - "CallComponentOpen", - "OpenAComponent", - "GetComponentPublicResource", # Missing in CW Pro 6 - "CallComponentGetPublicResource", # Missing in CW Pro 6 - 'SetComponentInstanceA5', - 'GetComponentInstanceA5', - ] - - def makeblacklisttypes(self): - return [ - "ResourceSpec", - "ComponentResource", - "ComponentPlatformInfo", - "ComponentResourceExtension", - "ComponentPlatformInfoArray", - "ExtComponentResource", - "ComponentParameters", - - "ComponentRoutineUPP", - "ComponentMPWorkFunctionUPP", - "ComponentFunctionUPP", - "GetMissingComponentResourceUPP", - ] - - def makerepairinstructions(self): - return [ - ([('ComponentDescription', 'looking', 'OutMode')], - [('ComponentDescription', '*', 'InMode')]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/cm/cmsupport.py b/project/jni/python/src/Mac/Modules/cm/cmsupport.py deleted file mode 100644 index 4109dbaba..000000000 --- a/project/jni/python/src/Mac/Modules/cm/cmsupport.py +++ /dev/null @@ -1,125 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'Components.h' # The Apple header file -MODNAME = '_Cm' # The name of the module - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Cm' # The prefix for module-wide routines -C_OBJECTPREFIX = 'CmpObj' # The prefix for object methods -CI_OBJECTPREFIX = 'CmpInstObj' -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects - -includestuff = includestuff + """ -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_CmpObj_New(Component); -extern int _CmpObj_Convert(PyObject *, Component *); -extern PyObject *_CmpInstObj_New(ComponentInstance); -extern int _CmpInstObj_Convert(PyObject *, ComponentInstance *); - -#define CmpObj_New _CmpObj_New -#define CmpObj_Convert _CmpObj_Convert -#define CmpInstObj_New _CmpInstObj_New -#define CmpInstObj_Convert _CmpInstObj_Convert -#endif - -/* -** Parse/generate ComponentDescriptor records -*/ -static PyObject * -CmpDesc_New(ComponentDescription *itself) -{ - - return Py_BuildValue("O&O&O&ll", - PyMac_BuildOSType, itself->componentType, - PyMac_BuildOSType, itself->componentSubType, - PyMac_BuildOSType, itself->componentManufacturer, - itself->componentFlags, itself->componentFlagsMask); -} - -static int -CmpDesc_Convert(PyObject *v, ComponentDescription *p_itself) -{ - return PyArg_ParseTuple(v, "O&O&O&ll", - PyMac_GetOSType, &p_itself->componentType, - PyMac_GetOSType, &p_itself->componentSubType, - PyMac_GetOSType, &p_itself->componentManufacturer, - &p_itself->componentFlags, &p_itself->componentFlagsMask); -} - -""" - -initstuff = initstuff + """ - PyMac_INIT_TOOLBOX_OBJECT_NEW(Component, CmpObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Component, CmpObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(ComponentInstance, CmpInstObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ComponentInstance, CmpInstObj_Convert); -""" - -ComponentDescription = OpaqueType('ComponentDescription', 'CmpDesc') -Component = OpaqueByValueType('Component', C_OBJECTPREFIX) -ComponentInstance = OpaqueByValueType('ComponentInstance', CI_OBJECTPREFIX) -ComponentResult = Type("ComponentResult", "l") - -ComponentResourceHandle = OpaqueByValueType("ComponentResourceHandle", "ResObj") - -class MyCIObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - def outputCheckNewArg(self): - Output("""if (itself == NULL) { - PyErr_SetString(Cm_Error,"NULL ComponentInstance"); - return NULL; - }""") - -class MyCObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - def outputCheckNewArg(self): - Output("""if (itself == NULL) { - /* XXXX Or should we return None? */ - PyErr_SetString(Cm_Error,"No such component"); - return NULL; - }""") - - def outputCheckConvertArg(self): - Output("""if ( v == Py_None ) { - *p_itself = 0; - return 1; - }""") - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -ci_object = MyCIObjectDefinition('ComponentInstance', CI_OBJECTPREFIX, - 'ComponentInstance') -c_object = MyCObjectDefinition('Component', C_OBJECTPREFIX, 'Component') -module.addobject(ci_object) -module.addobject(c_object) - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -Method = OSErrWeakLinkMethodGenerator - -# Create and populate the lists -functions = [] -c_methods = [] -ci_methods = [] -execfile(INPUTFILE) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -for f in c_methods: c_object.add(f) -for f in ci_methods: ci_object.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/ctl/_Ctlmodule.c b/project/jni/python/src/Mac/Modules/ctl/_Ctlmodule.c deleted file mode 100644 index d7d4d0a72..000000000 --- a/project/jni/python/src/Mac/Modules/ctl/_Ctlmodule.c +++ /dev/null @@ -1,5815 +0,0 @@ - -/* ========================== Module _Ctl =========================== */ - -#include "Python.h" - -#ifndef __LP64__ - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_CtlObj_New(ControlHandle); -extern int _CtlObj_Convert(PyObject *, ControlHandle *); - -#define CtlObj_New _CtlObj_New -#define CtlObj_Convert _CtlObj_Convert -#endif - -static PyObject *CtlObj_WhichControl(ControlHandle); - -#define as_Control(h) ((ControlHandle)h) -#define as_Resource(ctl) ((Handle)ctl) -#define GetControlRect(ctl, rectp) GetControlBounds(ctl, rectp) - -#define MAXTABS 32 /* maximum number of tabs that we support in a tabs control */ -/* -** Parse/generate ControlFontStyleRec records -*/ -#if 0 /* Not needed */ -static PyObject * -ControlFontStyle_New(ControlFontStyleRec *itself) -{ - - return Py_BuildValue("hhhhhhO&O&", itself->flags, itself->font, - itself->size, itself->style, itself->mode, itself->just, - QdRGB_New, &itself->foreColor, QdRGB_New, &itself->backColor); -} -#endif - -static int -ControlFontStyle_Convert(PyObject *v, ControlFontStyleRec *itself) -{ - return PyArg_Parse(v, "(hhhhhhO&O&)", &itself->flags, - &itself->font, &itself->size, &itself->style, &itself->mode, - &itself->just, QdRGB_Convert, &itself->foreColor, - QdRGB_Convert, &itself->backColor); -} - -/* -** Parse/generate ControlID records -*/ -static PyObject * -PyControlID_New(ControlID *itself) -{ - - return Py_BuildValue("O&l", PyMac_BuildOSType, itself->signature, itself->id); -} - -static int -PyControlID_Convert(PyObject *v, ControlID *itself) -{ - return PyArg_Parse(v, "(O&l)", PyMac_GetOSType, &itself->signature, &itself->id); -} - -/* -** generate DataBrowserListViewColumnDesc records -*/ -static int -DataBrowserTableViewColumnDesc_Convert(PyObject *v, DataBrowserTableViewColumnDesc *itself) -{ - return PyArg_Parse(v, "(lO&l)", - &itself->propertyID, - PyMac_GetOSType, &itself->propertyType, - &itself->propertyFlags); -} - -static int -ControlButtonContentInfo_Convert(PyObject *v, ControlButtonContentInfo *itself) -{ - return PyArg_Parse(v, "(hO&)", - &itself->contentType, - OptResObj_Convert, &itself->u.iconSuite); -} - -static int -DataBrowserListViewHeaderDesc_Convert(PyObject *v, DataBrowserListViewHeaderDesc *itself) -{ - itself->version = kDataBrowserListViewLatestHeaderDesc; - return PyArg_Parse(v, "(HHhO&HO&O&)", - &itself->minimumWidth, - &itself->maximumWidth, - &itself->titleOffset, - CFStringRefObj_Convert, &itself->titleString, - &itself->initialOrder, - ControlFontStyle_Convert, &itself->btnFontStyle, - ControlButtonContentInfo_Convert, &itself->btnContentInfo); -} - -static int -DataBrowserListViewColumnDesc_Convert(PyObject *v, DataBrowserListViewColumnDesc *itself) -{ - return PyArg_Parse(v, "(O&O&)", - DataBrowserTableViewColumnDesc_Convert, &itself->propertyDesc, - DataBrowserListViewHeaderDesc_Convert, &itself->headerBtnDesc); -} - -/* TrackControl and HandleControlClick callback support */ -#define kMyControlActionProcTag 'ACTN' /* not an official tag, only for internal use */ -static PyObject *tracker; -static ControlActionUPP mytracker_upp; -static ControlActionUPP myactionproc_upp; -static ControlUserPaneKeyDownUPP mykeydownproc_upp; -static ControlUserPaneFocusUPP myfocusproc_upp; -static ControlUserPaneDrawUPP mydrawproc_upp; -static ControlUserPaneIdleUPP myidleproc_upp; -static ControlUserPaneHitTestUPP myhittestproc_upp; -static ControlUserPaneTrackingUPP mytrackingproc_upp; - -static int settrackfunc(PyObject *); /* forward */ -static void clrtrackfunc(void); /* forward */ -static int setcallback(PyObject *, OSType, PyObject *, UniversalProcPtr *); - -static PyObject *Ctl_Error; - -/* ---------------------- Object type Control ----------------------- */ - -PyTypeObject Control_Type; - -#define CtlObj_Check(x) ((x)->ob_type == &Control_Type || PyObject_TypeCheck((x), &Control_Type)) - -typedef struct ControlObject { - PyObject_HEAD - ControlHandle ob_itself; - PyObject *ob_callbackdict; -} ControlObject; - -PyObject *CtlObj_New(ControlHandle itself) -{ - ControlObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - it = PyObject_NEW(ControlObject, &Control_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - SetControlReference(itself, (long)it); - it->ob_callbackdict = NULL; - return (PyObject *)it; -} - -int CtlObj_Convert(PyObject *v, ControlHandle *p_itself) -{ - if (!CtlObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "Control required"); - return 0; - } - *p_itself = ((ControlObject *)v)->ob_itself; - return 1; -} - -static void CtlObj_dealloc(ControlObject *self) -{ - Py_XDECREF(self->ob_callbackdict); - if (self->ob_itself)SetControlReference(self->ob_itself, (long)0); /* Make it forget about us */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *CtlObj_HiliteControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ControlPartCode hiliteState; -#ifndef HiliteControl - PyMac_PRECHECK(HiliteControl); -#endif - if (!PyArg_ParseTuple(_args, "h", - &hiliteState)) - return NULL; - HiliteControl(_self->ob_itself, - hiliteState); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_ShowControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ShowControl - PyMac_PRECHECK(ShowControl); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ShowControl(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_HideControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef HideControl - PyMac_PRECHECK(HideControl); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - HideControl(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_IsControlActive(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsControlActive - PyMac_PRECHECK(IsControlActive); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsControlActive(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *CtlObj_IsControlVisible(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsControlVisible - PyMac_PRECHECK(IsControlVisible); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsControlVisible(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *CtlObj_ActivateControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef ActivateControl - PyMac_PRECHECK(ActivateControl); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = ActivateControl(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_DeactivateControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef DeactivateControl - PyMac_PRECHECK(DeactivateControl); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = DeactivateControl(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetControlVisibility(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Boolean inIsVisible; - Boolean inDoDraw; -#ifndef SetControlVisibility - PyMac_PRECHECK(SetControlVisibility); -#endif - if (!PyArg_ParseTuple(_args, "bb", - &inIsVisible, - &inDoDraw)) - return NULL; - _err = SetControlVisibility(_self->ob_itself, - inIsVisible, - inDoDraw); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_IsControlEnabled(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsControlEnabled - PyMac_PRECHECK(IsControlEnabled); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsControlEnabled(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *CtlObj_EnableControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef EnableControl - PyMac_PRECHECK(EnableControl); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = EnableControl(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_DisableControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef DisableControl - PyMac_PRECHECK(DisableControl); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = DisableControl(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_Draw1Control(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef Draw1Control - PyMac_PRECHECK(Draw1Control); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - Draw1Control(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetBestControlRect(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Rect outRect; - SInt16 outBaseLineOffset; -#ifndef GetBestControlRect - PyMac_PRECHECK(GetBestControlRect); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetBestControlRect(_self->ob_itself, - &outRect, - &outBaseLineOffset); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&h", - PyMac_BuildRect, &outRect, - outBaseLineOffset); - return _res; -} - -static PyObject *CtlObj_SetControlFontStyle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ControlFontStyleRec inStyle; -#ifndef SetControlFontStyle - PyMac_PRECHECK(SetControlFontStyle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ControlFontStyle_Convert, &inStyle)) - return NULL; - _err = SetControlFontStyle(_self->ob_itself, - &inStyle); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_DrawControlInCurrentPort(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef DrawControlInCurrentPort - PyMac_PRECHECK(DrawControlInCurrentPort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - DrawControlInCurrentPort(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetUpControlBackground(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inDepth; - Boolean inIsColorDevice; -#ifndef SetUpControlBackground - PyMac_PRECHECK(SetUpControlBackground); -#endif - if (!PyArg_ParseTuple(_args, "hb", - &inDepth, - &inIsColorDevice)) - return NULL; - _err = SetUpControlBackground(_self->ob_itself, - inDepth, - inIsColorDevice); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetUpControlTextColor(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inDepth; - Boolean inIsColorDevice; -#ifndef SetUpControlTextColor - PyMac_PRECHECK(SetUpControlTextColor); -#endif - if (!PyArg_ParseTuple(_args, "hb", - &inDepth, - &inIsColorDevice)) - return NULL; - _err = SetUpControlTextColor(_self->ob_itself, - inDepth, - inIsColorDevice); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_DragControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point startPoint; - Rect limitRect; - Rect slopRect; - DragConstraint axis; -#ifndef DragControl - PyMac_PRECHECK(DragControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&H", - PyMac_GetPoint, &startPoint, - PyMac_GetRect, &limitRect, - PyMac_GetRect, &slopRect, - &axis)) - return NULL; - DragControl(_self->ob_itself, - startPoint, - &limitRect, - &slopRect, - axis); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_TestControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ControlPartCode _rv; - Point testPoint; -#ifndef TestControl - PyMac_PRECHECK(TestControl); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &testPoint)) - return NULL; - _rv = TestControl(_self->ob_itself, - testPoint); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *CtlObj_HandleControlContextualMenuClick(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Point inWhere; - Boolean menuDisplayed; -#ifndef HandleControlContextualMenuClick - PyMac_PRECHECK(HandleControlContextualMenuClick); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &inWhere)) - return NULL; - _err = HandleControlContextualMenuClick(_self->ob_itself, - inWhere, - &menuDisplayed); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - menuDisplayed); - return _res; -} - -static PyObject *CtlObj_GetControlClickActivation(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Point inWhere; - EventModifiers inModifiers; - ClickActivationResult outResult; -#ifndef GetControlClickActivation - PyMac_PRECHECK(GetControlClickActivation); -#endif - if (!PyArg_ParseTuple(_args, "O&H", - PyMac_GetPoint, &inWhere, - &inModifiers)) - return NULL; - _err = GetControlClickActivation(_self->ob_itself, - inWhere, - inModifiers, - &outResult); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outResult); - return _res; -} - -static PyObject *CtlObj_HandleControlKey(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ControlPartCode _rv; - SInt16 inKeyCode; - SInt16 inCharCode; - EventModifiers inModifiers; -#ifndef HandleControlKey - PyMac_PRECHECK(HandleControlKey); -#endif - if (!PyArg_ParseTuple(_args, "hhH", - &inKeyCode, - &inCharCode, - &inModifiers)) - return NULL; - _rv = HandleControlKey(_self->ob_itself, - inKeyCode, - inCharCode, - inModifiers); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *CtlObj_HandleControlSetCursor(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Point localPoint; - EventModifiers modifiers; - Boolean cursorWasSet; -#ifndef HandleControlSetCursor - PyMac_PRECHECK(HandleControlSetCursor); -#endif - if (!PyArg_ParseTuple(_args, "O&H", - PyMac_GetPoint, &localPoint, - &modifiers)) - return NULL; - _err = HandleControlSetCursor(_self->ob_itself, - localPoint, - modifiers, - &cursorWasSet); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - cursorWasSet); - return _res; -} - -static PyObject *CtlObj_MoveControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 h; - SInt16 v; -#ifndef MoveControl - PyMac_PRECHECK(MoveControl); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &h, - &v)) - return NULL; - MoveControl(_self->ob_itself, - h, - v); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SizeControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 w; - SInt16 h; -#ifndef SizeControl - PyMac_PRECHECK(SizeControl); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &w, - &h)) - return NULL; - SizeControl(_self->ob_itself, - w, - h); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetControlTitle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Str255 title; -#ifndef SetControlTitle - PyMac_PRECHECK(SetControlTitle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetStr255, title)) - return NULL; - SetControlTitle(_self->ob_itself, - title); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControlTitle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Str255 title; -#ifndef GetControlTitle - PyMac_PRECHECK(GetControlTitle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetControlTitle(_self->ob_itself, - title); - _res = Py_BuildValue("O&", - PyMac_BuildStr255, title); - return _res; -} - -static PyObject *CtlObj_SetControlTitleWithCFString(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef inString; -#ifndef SetControlTitleWithCFString - PyMac_PRECHECK(SetControlTitleWithCFString); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &inString)) - return NULL; - _err = SetControlTitleWithCFString(_self->ob_itself, - inString); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_CopyControlTitleAsCFString(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef outString; -#ifndef CopyControlTitleAsCFString - PyMac_PRECHECK(CopyControlTitleAsCFString); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = CopyControlTitleAsCFString(_self->ob_itself, - &outString); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CFStringRefObj_New, outString); - return _res; -} - -static PyObject *CtlObj_GetControlValue(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef GetControlValue - PyMac_PRECHECK(GetControlValue); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControlValue(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *CtlObj_SetControlValue(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 newValue; -#ifndef SetControlValue - PyMac_PRECHECK(SetControlValue); -#endif - if (!PyArg_ParseTuple(_args, "h", - &newValue)) - return NULL; - SetControlValue(_self->ob_itself, - newValue); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControlMinimum(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef GetControlMinimum - PyMac_PRECHECK(GetControlMinimum); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControlMinimum(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *CtlObj_SetControlMinimum(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 newMinimum; -#ifndef SetControlMinimum - PyMac_PRECHECK(SetControlMinimum); -#endif - if (!PyArg_ParseTuple(_args, "h", - &newMinimum)) - return NULL; - SetControlMinimum(_self->ob_itself, - newMinimum); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControlMaximum(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef GetControlMaximum - PyMac_PRECHECK(GetControlMaximum); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControlMaximum(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *CtlObj_SetControlMaximum(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 newMaximum; -#ifndef SetControlMaximum - PyMac_PRECHECK(SetControlMaximum); -#endif - if (!PyArg_ParseTuple(_args, "h", - &newMaximum)) - return NULL; - SetControlMaximum(_self->ob_itself, - newMaximum); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControlViewSize(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 _rv; -#ifndef GetControlViewSize - PyMac_PRECHECK(GetControlViewSize); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControlViewSize(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CtlObj_SetControlViewSize(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 newViewSize; -#ifndef SetControlViewSize - PyMac_PRECHECK(SetControlViewSize); -#endif - if (!PyArg_ParseTuple(_args, "l", - &newViewSize)) - return NULL; - SetControlViewSize(_self->ob_itself, - newViewSize); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControl32BitValue(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 _rv; -#ifndef GetControl32BitValue - PyMac_PRECHECK(GetControl32BitValue); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControl32BitValue(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CtlObj_SetControl32BitValue(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 newValue; -#ifndef SetControl32BitValue - PyMac_PRECHECK(SetControl32BitValue); -#endif - if (!PyArg_ParseTuple(_args, "l", - &newValue)) - return NULL; - SetControl32BitValue(_self->ob_itself, - newValue); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControl32BitMaximum(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 _rv; -#ifndef GetControl32BitMaximum - PyMac_PRECHECK(GetControl32BitMaximum); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControl32BitMaximum(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CtlObj_SetControl32BitMaximum(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 newMaximum; -#ifndef SetControl32BitMaximum - PyMac_PRECHECK(SetControl32BitMaximum); -#endif - if (!PyArg_ParseTuple(_args, "l", - &newMaximum)) - return NULL; - SetControl32BitMaximum(_self->ob_itself, - newMaximum); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControl32BitMinimum(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 _rv; -#ifndef GetControl32BitMinimum - PyMac_PRECHECK(GetControl32BitMinimum); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControl32BitMinimum(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CtlObj_SetControl32BitMinimum(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 newMinimum; -#ifndef SetControl32BitMinimum - PyMac_PRECHECK(SetControl32BitMinimum); -#endif - if (!PyArg_ParseTuple(_args, "l", - &newMinimum)) - return NULL; - SetControl32BitMinimum(_self->ob_itself, - newMinimum); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_IsValidControlHandle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsValidControlHandle - PyMac_PRECHECK(IsValidControlHandle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsValidControlHandle(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *CtlObj_SetControlID(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ControlID inID; -#ifndef SetControlID - PyMac_PRECHECK(SetControlID); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyControlID_Convert, &inID)) - return NULL; - _err = SetControlID(_self->ob_itself, - &inID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControlID(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ControlID outID; -#ifndef GetControlID - PyMac_PRECHECK(GetControlID); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetControlID(_self->ob_itself, - &outID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyControlID_New, &outID); - return _res; -} - -static PyObject *CtlObj_SetControlCommandID(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 inCommandID; -#ifndef SetControlCommandID - PyMac_PRECHECK(SetControlCommandID); -#endif - if (!PyArg_ParseTuple(_args, "l", - &inCommandID)) - return NULL; - _err = SetControlCommandID(_self->ob_itself, - inCommandID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControlCommandID(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 outCommandID; -#ifndef GetControlCommandID - PyMac_PRECHECK(GetControlCommandID); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetControlCommandID(_self->ob_itself, - &outCommandID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outCommandID); - return _res; -} - -static PyObject *CtlObj_RemoveControlProperty(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType propertyCreator; - OSType propertyTag; -#ifndef RemoveControlProperty - PyMac_PRECHECK(RemoveControlProperty); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &propertyCreator, - PyMac_GetOSType, &propertyTag)) - return NULL; - _err = RemoveControlProperty(_self->ob_itself, - propertyCreator, - propertyTag); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControlPropertyAttributes(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType propertyCreator; - OSType propertyTag; - UInt32 attributes; -#ifndef GetControlPropertyAttributes - PyMac_PRECHECK(GetControlPropertyAttributes); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &propertyCreator, - PyMac_GetOSType, &propertyTag)) - return NULL; - _err = GetControlPropertyAttributes(_self->ob_itself, - propertyCreator, - propertyTag, - &attributes); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - attributes); - return _res; -} - -static PyObject *CtlObj_ChangeControlPropertyAttributes(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType propertyCreator; - OSType propertyTag; - UInt32 attributesToSet; - UInt32 attributesToClear; -#ifndef ChangeControlPropertyAttributes - PyMac_PRECHECK(ChangeControlPropertyAttributes); -#endif - if (!PyArg_ParseTuple(_args, "O&O&ll", - PyMac_GetOSType, &propertyCreator, - PyMac_GetOSType, &propertyTag, - &attributesToSet, - &attributesToClear)) - return NULL; - _err = ChangeControlPropertyAttributes(_self->ob_itself, - propertyCreator, - propertyTag, - attributesToSet, - attributesToClear); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControlRegion(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ControlPartCode inPart; - RgnHandle outRegion; -#ifndef GetControlRegion - PyMac_PRECHECK(GetControlRegion); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &inPart, - ResObj_Convert, &outRegion)) - return NULL; - _err = GetControlRegion(_self->ob_itself, - inPart, - outRegion); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControlVariant(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ControlVariant _rv; -#ifndef GetControlVariant - PyMac_PRECHECK(GetControlVariant); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControlVariant(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *CtlObj_SetControlAction(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PyObject* actionProc; - UniversalProcPtr c_callback; -#ifndef SetControlAction - PyMac_PRECHECK(SetControlAction); -#endif - if (!PyArg_ParseTuple(_args, "O", - &actionProc)) - return NULL; - SetControlAction(_self->ob_itself, - myactionproc_upp); - Py_INCREF(Py_None); - _res = Py_None; - setcallback((PyObject*)_self, kMyControlActionProcTag, actionProc, &c_callback); - return _res; -} - -static PyObject *CtlObj_SetControlReference(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 data; -#ifndef SetControlReference - PyMac_PRECHECK(SetControlReference); -#endif - if (!PyArg_ParseTuple(_args, "l", - &data)) - return NULL; - SetControlReference(_self->ob_itself, - data); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControlReference(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 _rv; -#ifndef GetControlReference - PyMac_PRECHECK(GetControlReference); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControlReference(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *CtlObj_EmbedControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ControlHandle inContainer; -#ifndef EmbedControl - PyMac_PRECHECK(EmbedControl); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CtlObj_Convert, &inContainer)) - return NULL; - _err = EmbedControl(_self->ob_itself, - inContainer); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_AutoEmbedControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - WindowPtr inWindow; -#ifndef AutoEmbedControl - PyMac_PRECHECK(AutoEmbedControl); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = AutoEmbedControl(_self->ob_itself, - inWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetSuperControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ControlHandle outParent; -#ifndef GetSuperControl - PyMac_PRECHECK(GetSuperControl); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetSuperControl(_self->ob_itself, - &outParent); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_WhichControl, outParent); - return _res; -} - -static PyObject *CtlObj_CountSubControls(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UInt16 outNumChildren; -#ifndef CountSubControls - PyMac_PRECHECK(CountSubControls); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = CountSubControls(_self->ob_itself, - &outNumChildren); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - outNumChildren); - return _res; -} - -static PyObject *CtlObj_GetIndexedSubControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UInt16 inIndex; - ControlHandle outSubControl; -#ifndef GetIndexedSubControl - PyMac_PRECHECK(GetIndexedSubControl); -#endif - if (!PyArg_ParseTuple(_args, "H", - &inIndex)) - return NULL; - _err = GetIndexedSubControl(_self->ob_itself, - inIndex, - &outSubControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_WhichControl, outSubControl); - return _res; -} - -static PyObject *CtlObj_SetControlSupervisor(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ControlHandle inBoss; -#ifndef SetControlSupervisor - PyMac_PRECHECK(SetControlSupervisor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CtlObj_Convert, &inBoss)) - return NULL; - _err = SetControlSupervisor(_self->ob_itself, - inBoss); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetControlFeatures(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UInt32 outFeatures; -#ifndef GetControlFeatures - PyMac_PRECHECK(GetControlFeatures); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetControlFeatures(_self->ob_itself, - &outFeatures); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outFeatures); - return _res; -} - -static PyObject *CtlObj_GetControlDataSize(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ControlPartCode inPart; - ResType inTagName; - Size outMaxSize; -#ifndef GetControlDataSize - PyMac_PRECHECK(GetControlDataSize); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &inPart, - PyMac_GetOSType, &inTagName)) - return NULL; - _err = GetControlDataSize(_self->ob_itself, - inPart, - inTagName, - &outMaxSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outMaxSize); - return _res; -} - -static PyObject *CtlObj_HandleControlDragTracking(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - DragTrackingMessage inMessage; - DragReference inDrag; - Boolean outLikesDrag; -#ifndef HandleControlDragTracking - PyMac_PRECHECK(HandleControlDragTracking); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &inMessage, - DragObj_Convert, &inDrag)) - return NULL; - _err = HandleControlDragTracking(_self->ob_itself, - inMessage, - inDrag, - &outLikesDrag); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - outLikesDrag); - return _res; -} - -static PyObject *CtlObj_HandleControlDragReceive(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - DragReference inDrag; -#ifndef HandleControlDragReceive - PyMac_PRECHECK(HandleControlDragReceive); -#endif - if (!PyArg_ParseTuple(_args, "O&", - DragObj_Convert, &inDrag)) - return NULL; - _err = HandleControlDragReceive(_self->ob_itself, - inDrag); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetControlDragTrackingEnabled(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean inTracks; -#ifndef SetControlDragTrackingEnabled - PyMac_PRECHECK(SetControlDragTrackingEnabled); -#endif - if (!PyArg_ParseTuple(_args, "b", - &inTracks)) - return NULL; - _err = SetControlDragTrackingEnabled(_self->ob_itself, - inTracks); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_IsControlDragTrackingEnabled(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean outTracks; -#ifndef IsControlDragTrackingEnabled - PyMac_PRECHECK(IsControlDragTrackingEnabled); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = IsControlDragTrackingEnabled(_self->ob_itself, - &outTracks); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - outTracks); - return _res; -} - -static PyObject *CtlObj_GetControlBounds(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect bounds; -#ifndef GetControlBounds - PyMac_PRECHECK(GetControlBounds); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetControlBounds(_self->ob_itself, - &bounds); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &bounds); - return _res; -} - -static PyObject *CtlObj_IsControlHilited(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsControlHilited - PyMac_PRECHECK(IsControlHilited); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsControlHilited(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *CtlObj_GetControlHilite(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt16 _rv; -#ifndef GetControlHilite - PyMac_PRECHECK(GetControlHilite); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControlHilite(_self->ob_itself); - _res = Py_BuildValue("H", - _rv); - return _res; -} - -static PyObject *CtlObj_GetControlOwner(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; -#ifndef GetControlOwner - PyMac_PRECHECK(GetControlOwner); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControlOwner(_self->ob_itself); - _res = Py_BuildValue("O&", - WinObj_New, _rv); - return _res; -} - -static PyObject *CtlObj_GetControlDataHandle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; -#ifndef GetControlDataHandle - PyMac_PRECHECK(GetControlDataHandle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControlDataHandle(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *CtlObj_GetControlPopupMenuHandle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuHandle _rv; -#ifndef GetControlPopupMenuHandle - PyMac_PRECHECK(GetControlPopupMenuHandle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControlPopupMenuHandle(_self->ob_itself); - _res = Py_BuildValue("O&", - MenuObj_New, _rv); - return _res; -} - -static PyObject *CtlObj_GetControlPopupMenuID(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetControlPopupMenuID - PyMac_PRECHECK(GetControlPopupMenuID); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetControlPopupMenuID(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *CtlObj_SetControlDataHandle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle dataHandle; -#ifndef SetControlDataHandle - PyMac_PRECHECK(SetControlDataHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &dataHandle)) - return NULL; - SetControlDataHandle(_self->ob_itself, - dataHandle); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetControlBounds(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect bounds; -#ifndef SetControlBounds - PyMac_PRECHECK(SetControlBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &bounds)) - return NULL; - SetControlBounds(_self->ob_itself, - &bounds); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetControlPopupMenuHandle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuHandle popupMenu; -#ifndef SetControlPopupMenuHandle - PyMac_PRECHECK(SetControlPopupMenuHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - MenuObj_Convert, &popupMenu)) - return NULL; - SetControlPopupMenuHandle(_self->ob_itself, - popupMenu); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetControlPopupMenuID(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short menuID; -#ifndef SetControlPopupMenuID - PyMac_PRECHECK(SetControlPopupMenuID); -#endif - if (!PyArg_ParseTuple(_args, "h", - &menuID)) - return NULL; - SetControlPopupMenuID(_self->ob_itself, - menuID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetBevelButtonMenuValue(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 outValue; -#ifndef GetBevelButtonMenuValue - PyMac_PRECHECK(GetBevelButtonMenuValue); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetBevelButtonMenuValue(_self->ob_itself, - &outValue); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - outValue); - return _res; -} - -static PyObject *CtlObj_SetBevelButtonMenuValue(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inValue; -#ifndef SetBevelButtonMenuValue - PyMac_PRECHECK(SetBevelButtonMenuValue); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inValue)) - return NULL; - _err = SetBevelButtonMenuValue(_self->ob_itself, - inValue); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetBevelButtonMenuHandle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - MenuHandle outHandle; -#ifndef GetBevelButtonMenuHandle - PyMac_PRECHECK(GetBevelButtonMenuHandle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetBevelButtonMenuHandle(_self->ob_itself, - &outHandle); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - MenuObj_New, outHandle); - return _res; -} - -static PyObject *CtlObj_SetBevelButtonContentInfo(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ControlButtonContentInfo inContent; -#ifndef SetBevelButtonContentInfo - PyMac_PRECHECK(SetBevelButtonContentInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ControlButtonContentInfo_Convert, &inContent)) - return NULL; - _err = SetBevelButtonContentInfo(_self->ob_itself, - &inContent); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetBevelButtonTransform(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconTransformType transform; -#ifndef SetBevelButtonTransform - PyMac_PRECHECK(SetBevelButtonTransform); -#endif - if (!PyArg_ParseTuple(_args, "h", - &transform)) - return NULL; - _err = SetBevelButtonTransform(_self->ob_itself, - transform); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetDisclosureTriangleLastValue(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inValue; -#ifndef SetDisclosureTriangleLastValue - PyMac_PRECHECK(SetDisclosureTriangleLastValue); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inValue)) - return NULL; - _err = SetDisclosureTriangleLastValue(_self->ob_itself, - inValue); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetTabContentRect(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Rect outContentRect; -#ifndef GetTabContentRect - PyMac_PRECHECK(GetTabContentRect); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetTabContentRect(_self->ob_itself, - &outContentRect); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &outContentRect); - return _res; -} - -static PyObject *CtlObj_SetTabEnabled(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inTabToHilite; - Boolean inEnabled; -#ifndef SetTabEnabled - PyMac_PRECHECK(SetTabEnabled); -#endif - if (!PyArg_ParseTuple(_args, "hb", - &inTabToHilite, - &inEnabled)) - return NULL; - _err = SetTabEnabled(_self->ob_itself, - inTabToHilite, - inEnabled); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetImageWellContentInfo(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ControlButtonContentInfo inContent; -#ifndef SetImageWellContentInfo - PyMac_PRECHECK(SetImageWellContentInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ControlButtonContentInfo_Convert, &inContent)) - return NULL; - _err = SetImageWellContentInfo(_self->ob_itself, - &inContent); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetImageWellTransform(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconTransformType inTransform; -#ifndef SetImageWellTransform - PyMac_PRECHECK(SetImageWellTransform); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inTransform)) - return NULL; - _err = SetImageWellTransform(_self->ob_itself, - inTransform); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserViewStyle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType style; -#ifndef GetDataBrowserViewStyle - PyMac_PRECHECK(GetDataBrowserViewStyle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserViewStyle(_self->ob_itself, - &style); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildOSType, style); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserViewStyle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType style; -#ifndef SetDataBrowserViewStyle - PyMac_PRECHECK(SetDataBrowserViewStyle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &style)) - return NULL; - _err = SetDataBrowserViewStyle(_self->ob_itself, - style); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_EnableDataBrowserEditCommand(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - UInt32 command; -#ifndef EnableDataBrowserEditCommand - PyMac_PRECHECK(EnableDataBrowserEditCommand); -#endif - if (!PyArg_ParseTuple(_args, "l", - &command)) - return NULL; - _rv = EnableDataBrowserEditCommand(_self->ob_itself, - command); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *CtlObj_ExecuteDataBrowserEditCommand(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 command; -#ifndef ExecuteDataBrowserEditCommand - PyMac_PRECHECK(ExecuteDataBrowserEditCommand); -#endif - if (!PyArg_ParseTuple(_args, "l", - &command)) - return NULL; - _err = ExecuteDataBrowserEditCommand(_self->ob_itself, - command); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserSelectionAnchor(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 first; - UInt32 last; -#ifndef GetDataBrowserSelectionAnchor - PyMac_PRECHECK(GetDataBrowserSelectionAnchor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserSelectionAnchor(_self->ob_itself, - &first, - &last); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("ll", - first, - last); - return _res; -} - -static PyObject *CtlObj_MoveDataBrowserSelectionAnchor(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 direction; - Boolean extendSelection; -#ifndef MoveDataBrowserSelectionAnchor - PyMac_PRECHECK(MoveDataBrowserSelectionAnchor); -#endif - if (!PyArg_ParseTuple(_args, "lb", - &direction, - &extendSelection)) - return NULL; - _err = MoveDataBrowserSelectionAnchor(_self->ob_itself, - direction, - extendSelection); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_OpenDataBrowserContainer(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 container; -#ifndef OpenDataBrowserContainer - PyMac_PRECHECK(OpenDataBrowserContainer); -#endif - if (!PyArg_ParseTuple(_args, "l", - &container)) - return NULL; - _err = OpenDataBrowserContainer(_self->ob_itself, - container); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_CloseDataBrowserContainer(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 container; -#ifndef CloseDataBrowserContainer - PyMac_PRECHECK(CloseDataBrowserContainer); -#endif - if (!PyArg_ParseTuple(_args, "l", - &container)) - return NULL; - _err = CloseDataBrowserContainer(_self->ob_itself, - container); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SortDataBrowserContainer(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 container; - Boolean sortChildren; -#ifndef SortDataBrowserContainer - PyMac_PRECHECK(SortDataBrowserContainer); -#endif - if (!PyArg_ParseTuple(_args, "lb", - &container, - &sortChildren)) - return NULL; - _err = SortDataBrowserContainer(_self->ob_itself, - container, - sortChildren); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserItems(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 container; - Boolean recurse; - UInt32 state; - Handle items; -#ifndef GetDataBrowserItems - PyMac_PRECHECK(GetDataBrowserItems); -#endif - if (!PyArg_ParseTuple(_args, "lblO&", - &container, - &recurse, - &state, - ResObj_Convert, &items)) - return NULL; - _err = GetDataBrowserItems(_self->ob_itself, - container, - recurse, - state, - items); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserItemCount(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 container; - Boolean recurse; - UInt32 state; - UInt32 numItems; -#ifndef GetDataBrowserItemCount - PyMac_PRECHECK(GetDataBrowserItemCount); -#endif - if (!PyArg_ParseTuple(_args, "lbl", - &container, - &recurse, - &state)) - return NULL; - _err = GetDataBrowserItemCount(_self->ob_itself, - container, - recurse, - state, - &numItems); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - numItems); - return _res; -} - -static PyObject *CtlObj_IsDataBrowserItemSelected(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - UInt32 item; -#ifndef IsDataBrowserItemSelected - PyMac_PRECHECK(IsDataBrowserItemSelected); -#endif - if (!PyArg_ParseTuple(_args, "l", - &item)) - return NULL; - _rv = IsDataBrowserItemSelected(_self->ob_itself, - item); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *CtlObj_GetDataBrowserItemState(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 item; - UInt32 state; -#ifndef GetDataBrowserItemState - PyMac_PRECHECK(GetDataBrowserItemState); -#endif - if (!PyArg_ParseTuple(_args, "l", - &item)) - return NULL; - _err = GetDataBrowserItemState(_self->ob_itself, - item, - &state); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - state); - return _res; -} - -static PyObject *CtlObj_RevealDataBrowserItem(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 item; - UInt32 propertyID; - UInt8 options; -#ifndef RevealDataBrowserItem - PyMac_PRECHECK(RevealDataBrowserItem); -#endif - if (!PyArg_ParseTuple(_args, "llb", - &item, - &propertyID, - &options)) - return NULL; - _err = RevealDataBrowserItem(_self->ob_itself, - item, - propertyID, - options); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetDataBrowserActiveItems(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean active; -#ifndef SetDataBrowserActiveItems - PyMac_PRECHECK(SetDataBrowserActiveItems); -#endif - if (!PyArg_ParseTuple(_args, "b", - &active)) - return NULL; - _err = SetDataBrowserActiveItems(_self->ob_itself, - active); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserActiveItems(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean active; -#ifndef GetDataBrowserActiveItems - PyMac_PRECHECK(GetDataBrowserActiveItems); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserActiveItems(_self->ob_itself, - &active); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - active); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserScrollBarInset(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect insetRect; -#ifndef SetDataBrowserScrollBarInset - PyMac_PRECHECK(SetDataBrowserScrollBarInset); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = SetDataBrowserScrollBarInset(_self->ob_itself, - &insetRect); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &insetRect); - return _res; -} - -static PyObject *CtlObj_GetDataBrowserScrollBarInset(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect insetRect; -#ifndef GetDataBrowserScrollBarInset - PyMac_PRECHECK(GetDataBrowserScrollBarInset); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserScrollBarInset(_self->ob_itself, - &insetRect); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &insetRect); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserTarget(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 target; -#ifndef SetDataBrowserTarget - PyMac_PRECHECK(SetDataBrowserTarget); -#endif - if (!PyArg_ParseTuple(_args, "l", - &target)) - return NULL; - _err = SetDataBrowserTarget(_self->ob_itself, - target); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserTarget(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 target; -#ifndef GetDataBrowserTarget - PyMac_PRECHECK(GetDataBrowserTarget); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserTarget(_self->ob_itself, - &target); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - target); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserSortOrder(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt16 order; -#ifndef SetDataBrowserSortOrder - PyMac_PRECHECK(SetDataBrowserSortOrder); -#endif - if (!PyArg_ParseTuple(_args, "H", - &order)) - return NULL; - _err = SetDataBrowserSortOrder(_self->ob_itself, - order); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserSortOrder(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt16 order; -#ifndef GetDataBrowserSortOrder - PyMac_PRECHECK(GetDataBrowserSortOrder); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserSortOrder(_self->ob_itself, - &order); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - order); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserScrollPosition(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 top; - UInt32 left; -#ifndef SetDataBrowserScrollPosition - PyMac_PRECHECK(SetDataBrowserScrollPosition); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &top, - &left)) - return NULL; - _err = SetDataBrowserScrollPosition(_self->ob_itself, - top, - left); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserScrollPosition(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 top; - UInt32 left; -#ifndef GetDataBrowserScrollPosition - PyMac_PRECHECK(GetDataBrowserScrollPosition); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserScrollPosition(_self->ob_itself, - &top, - &left); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("ll", - top, - left); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserHasScrollBars(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean horiz; - Boolean vert; -#ifndef SetDataBrowserHasScrollBars - PyMac_PRECHECK(SetDataBrowserHasScrollBars); -#endif - if (!PyArg_ParseTuple(_args, "bb", - &horiz, - &vert)) - return NULL; - _err = SetDataBrowserHasScrollBars(_self->ob_itself, - horiz, - vert); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserHasScrollBars(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean horiz; - Boolean vert; -#ifndef GetDataBrowserHasScrollBars - PyMac_PRECHECK(GetDataBrowserHasScrollBars); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserHasScrollBars(_self->ob_itself, - &horiz, - &vert); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("bb", - horiz, - vert); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserSortProperty(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 property; -#ifndef SetDataBrowserSortProperty - PyMac_PRECHECK(SetDataBrowserSortProperty); -#endif - if (!PyArg_ParseTuple(_args, "l", - &property)) - return NULL; - _err = SetDataBrowserSortProperty(_self->ob_itself, - property); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserSortProperty(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 property; -#ifndef GetDataBrowserSortProperty - PyMac_PRECHECK(GetDataBrowserSortProperty); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserSortProperty(_self->ob_itself, - &property); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - property); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserSelectionFlags(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 selectionFlags; -#ifndef SetDataBrowserSelectionFlags - PyMac_PRECHECK(SetDataBrowserSelectionFlags); -#endif - if (!PyArg_ParseTuple(_args, "l", - &selectionFlags)) - return NULL; - _err = SetDataBrowserSelectionFlags(_self->ob_itself, - selectionFlags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserSelectionFlags(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 selectionFlags; -#ifndef GetDataBrowserSelectionFlags - PyMac_PRECHECK(GetDataBrowserSelectionFlags); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserSelectionFlags(_self->ob_itself, - &selectionFlags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - selectionFlags); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserPropertyFlags(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 property; - UInt32 flags; -#ifndef SetDataBrowserPropertyFlags - PyMac_PRECHECK(SetDataBrowserPropertyFlags); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &property, - &flags)) - return NULL; - _err = SetDataBrowserPropertyFlags(_self->ob_itself, - property, - flags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserPropertyFlags(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 property; - UInt32 flags; -#ifndef GetDataBrowserPropertyFlags - PyMac_PRECHECK(GetDataBrowserPropertyFlags); -#endif - if (!PyArg_ParseTuple(_args, "l", - &property)) - return NULL; - _err = GetDataBrowserPropertyFlags(_self->ob_itself, - property, - &flags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - flags); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserEditText(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef text; -#ifndef SetDataBrowserEditText - PyMac_PRECHECK(SetDataBrowserEditText); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &text)) - return NULL; - _err = SetDataBrowserEditText(_self->ob_itself, - text); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_CopyDataBrowserEditText(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef text; -#ifndef CopyDataBrowserEditText - PyMac_PRECHECK(CopyDataBrowserEditText); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = CopyDataBrowserEditText(_self->ob_itself, - &text); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CFStringRefObj_New, text); - return _res; -} - -static PyObject *CtlObj_GetDataBrowserEditText(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFMutableStringRef text; -#ifndef GetDataBrowserEditText - PyMac_PRECHECK(GetDataBrowserEditText); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFMutableStringRefObj_Convert, &text)) - return NULL; - _err = GetDataBrowserEditText(_self->ob_itself, - text); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetDataBrowserEditItem(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 item; - UInt32 property; -#ifndef SetDataBrowserEditItem - PyMac_PRECHECK(SetDataBrowserEditItem); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &item, - &property)) - return NULL; - _err = SetDataBrowserEditItem(_self->ob_itself, - item, - property); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserEditItem(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 item; - UInt32 property; -#ifndef GetDataBrowserEditItem - PyMac_PRECHECK(GetDataBrowserEditItem); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserEditItem(_self->ob_itself, - &item, - &property); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("ll", - item, - property); - return _res; -} - -static PyObject *CtlObj_GetDataBrowserItemPartBounds(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 item; - UInt32 property; - OSType part; - Rect bounds; -#ifndef GetDataBrowserItemPartBounds - PyMac_PRECHECK(GetDataBrowserItemPartBounds); -#endif - if (!PyArg_ParseTuple(_args, "llO&", - &item, - &property, - PyMac_GetOSType, &part)) - return NULL; - _err = GetDataBrowserItemPartBounds(_self->ob_itself, - item, - property, - part, - &bounds); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &bounds); - return _res; -} - -static PyObject *CtlObj_RemoveDataBrowserTableViewColumn(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 column; -#ifndef RemoveDataBrowserTableViewColumn - PyMac_PRECHECK(RemoveDataBrowserTableViewColumn); -#endif - if (!PyArg_ParseTuple(_args, "l", - &column)) - return NULL; - _err = RemoveDataBrowserTableViewColumn(_self->ob_itself, - column); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserTableViewColumnCount(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 numColumns; -#ifndef GetDataBrowserTableViewColumnCount - PyMac_PRECHECK(GetDataBrowserTableViewColumnCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserTableViewColumnCount(_self->ob_itself, - &numColumns); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - numColumns); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserTableViewHiliteStyle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 hiliteStyle; -#ifndef SetDataBrowserTableViewHiliteStyle - PyMac_PRECHECK(SetDataBrowserTableViewHiliteStyle); -#endif - if (!PyArg_ParseTuple(_args, "l", - &hiliteStyle)) - return NULL; - _err = SetDataBrowserTableViewHiliteStyle(_self->ob_itself, - hiliteStyle); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserTableViewHiliteStyle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 hiliteStyle; -#ifndef GetDataBrowserTableViewHiliteStyle - PyMac_PRECHECK(GetDataBrowserTableViewHiliteStyle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserTableViewHiliteStyle(_self->ob_itself, - &hiliteStyle); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - hiliteStyle); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserTableViewRowHeight(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt16 height; -#ifndef SetDataBrowserTableViewRowHeight - PyMac_PRECHECK(SetDataBrowserTableViewRowHeight); -#endif - if (!PyArg_ParseTuple(_args, "H", - &height)) - return NULL; - _err = SetDataBrowserTableViewRowHeight(_self->ob_itself, - height); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserTableViewRowHeight(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt16 height; -#ifndef GetDataBrowserTableViewRowHeight - PyMac_PRECHECK(GetDataBrowserTableViewRowHeight); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserTableViewRowHeight(_self->ob_itself, - &height); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - height); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserTableViewColumnWidth(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt16 width; -#ifndef SetDataBrowserTableViewColumnWidth - PyMac_PRECHECK(SetDataBrowserTableViewColumnWidth); -#endif - if (!PyArg_ParseTuple(_args, "H", - &width)) - return NULL; - _err = SetDataBrowserTableViewColumnWidth(_self->ob_itself, - width); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserTableViewColumnWidth(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt16 width; -#ifndef GetDataBrowserTableViewColumnWidth - PyMac_PRECHECK(GetDataBrowserTableViewColumnWidth); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserTableViewColumnWidth(_self->ob_itself, - &width); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - width); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserTableViewItemRowHeight(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 item; - UInt16 height; -#ifndef SetDataBrowserTableViewItemRowHeight - PyMac_PRECHECK(SetDataBrowserTableViewItemRowHeight); -#endif - if (!PyArg_ParseTuple(_args, "lH", - &item, - &height)) - return NULL; - _err = SetDataBrowserTableViewItemRowHeight(_self->ob_itself, - item, - height); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserTableViewItemRowHeight(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 item; - UInt16 height; -#ifndef GetDataBrowserTableViewItemRowHeight - PyMac_PRECHECK(GetDataBrowserTableViewItemRowHeight); -#endif - if (!PyArg_ParseTuple(_args, "l", - &item)) - return NULL; - _err = GetDataBrowserTableViewItemRowHeight(_self->ob_itself, - item, - &height); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - height); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserTableViewNamedColumnWidth(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 column; - UInt16 width; -#ifndef SetDataBrowserTableViewNamedColumnWidth - PyMac_PRECHECK(SetDataBrowserTableViewNamedColumnWidth); -#endif - if (!PyArg_ParseTuple(_args, "lH", - &column, - &width)) - return NULL; - _err = SetDataBrowserTableViewNamedColumnWidth(_self->ob_itself, - column, - width); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserTableViewNamedColumnWidth(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 column; - UInt16 width; -#ifndef GetDataBrowserTableViewNamedColumnWidth - PyMac_PRECHECK(GetDataBrowserTableViewNamedColumnWidth); -#endif - if (!PyArg_ParseTuple(_args, "l", - &column)) - return NULL; - _err = GetDataBrowserTableViewNamedColumnWidth(_self->ob_itself, - column, - &width); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - width); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserTableViewGeometry(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean variableWidthColumns; - Boolean variableHeightRows; -#ifndef SetDataBrowserTableViewGeometry - PyMac_PRECHECK(SetDataBrowserTableViewGeometry); -#endif - if (!PyArg_ParseTuple(_args, "bb", - &variableWidthColumns, - &variableHeightRows)) - return NULL; - _err = SetDataBrowserTableViewGeometry(_self->ob_itself, - variableWidthColumns, - variableHeightRows); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserTableViewGeometry(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean variableWidthColumns; - Boolean variableHeightRows; -#ifndef GetDataBrowserTableViewGeometry - PyMac_PRECHECK(GetDataBrowserTableViewGeometry); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserTableViewGeometry(_self->ob_itself, - &variableWidthColumns, - &variableHeightRows); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("bb", - variableWidthColumns, - variableHeightRows); - return _res; -} - -static PyObject *CtlObj_GetDataBrowserTableViewItemID(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 row; - UInt32 item; -#ifndef GetDataBrowserTableViewItemID - PyMac_PRECHECK(GetDataBrowserTableViewItemID); -#endif - if (!PyArg_ParseTuple(_args, "l", - &row)) - return NULL; - _err = GetDataBrowserTableViewItemID(_self->ob_itself, - row, - &item); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - item); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserTableViewItemRow(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 item; - UInt32 row; -#ifndef SetDataBrowserTableViewItemRow - PyMac_PRECHECK(SetDataBrowserTableViewItemRow); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &item, - &row)) - return NULL; - _err = SetDataBrowserTableViewItemRow(_self->ob_itself, - item, - row); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserTableViewItemRow(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 item; - UInt32 row; -#ifndef GetDataBrowserTableViewItemRow - PyMac_PRECHECK(GetDataBrowserTableViewItemRow); -#endif - if (!PyArg_ParseTuple(_args, "l", - &item)) - return NULL; - _err = GetDataBrowserTableViewItemRow(_self->ob_itself, - item, - &row); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - row); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserTableViewColumnPosition(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 column; - UInt32 position; -#ifndef SetDataBrowserTableViewColumnPosition - PyMac_PRECHECK(SetDataBrowserTableViewColumnPosition); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &column, - &position)) - return NULL; - _err = SetDataBrowserTableViewColumnPosition(_self->ob_itself, - column, - position); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserTableViewColumnPosition(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 column; - UInt32 position; -#ifndef GetDataBrowserTableViewColumnPosition - PyMac_PRECHECK(GetDataBrowserTableViewColumnPosition); -#endif - if (!PyArg_ParseTuple(_args, "l", - &column)) - return NULL; - _err = GetDataBrowserTableViewColumnPosition(_self->ob_itself, - column, - &position); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - position); - return _res; -} - -static PyObject *CtlObj_GetDataBrowserTableViewColumnProperty(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 column; - UInt32 property; -#ifndef GetDataBrowserTableViewColumnProperty - PyMac_PRECHECK(GetDataBrowserTableViewColumnProperty); -#endif - if (!PyArg_ParseTuple(_args, "l", - &column)) - return NULL; - _err = GetDataBrowserTableViewColumnProperty(_self->ob_itself, - column, - &property); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - property); - return _res; -} - -static PyObject *CtlObj_AutoSizeDataBrowserListViewColumns(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef AutoSizeDataBrowserListViewColumns - PyMac_PRECHECK(AutoSizeDataBrowserListViewColumns); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = AutoSizeDataBrowserListViewColumns(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_AddDataBrowserListViewColumn(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - DataBrowserListViewColumnDesc columnDesc; - UInt32 position; -#ifndef AddDataBrowserListViewColumn - PyMac_PRECHECK(AddDataBrowserListViewColumn); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - DataBrowserListViewColumnDesc_Convert, &columnDesc, - &position)) - return NULL; - _err = AddDataBrowserListViewColumn(_self->ob_itself, - &columnDesc, - position); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_SetDataBrowserListViewHeaderBtnHeight(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt16 height; -#ifndef SetDataBrowserListViewHeaderBtnHeight - PyMac_PRECHECK(SetDataBrowserListViewHeaderBtnHeight); -#endif - if (!PyArg_ParseTuple(_args, "H", - &height)) - return NULL; - _err = SetDataBrowserListViewHeaderBtnHeight(_self->ob_itself, - height); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserListViewHeaderBtnHeight(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt16 height; -#ifndef GetDataBrowserListViewHeaderBtnHeight - PyMac_PRECHECK(GetDataBrowserListViewHeaderBtnHeight); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserListViewHeaderBtnHeight(_self->ob_itself, - &height); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - height); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserListViewUsePlainBackground(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean usePlainBackground; -#ifndef SetDataBrowserListViewUsePlainBackground - PyMac_PRECHECK(SetDataBrowserListViewUsePlainBackground); -#endif - if (!PyArg_ParseTuple(_args, "b", - &usePlainBackground)) - return NULL; - _err = SetDataBrowserListViewUsePlainBackground(_self->ob_itself, - usePlainBackground); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserListViewUsePlainBackground(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean usePlainBackground; -#ifndef GetDataBrowserListViewUsePlainBackground - PyMac_PRECHECK(GetDataBrowserListViewUsePlainBackground); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserListViewUsePlainBackground(_self->ob_itself, - &usePlainBackground); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - usePlainBackground); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserListViewDisclosureColumn(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 column; - Boolean expandableRows; -#ifndef SetDataBrowserListViewDisclosureColumn - PyMac_PRECHECK(SetDataBrowserListViewDisclosureColumn); -#endif - if (!PyArg_ParseTuple(_args, "lb", - &column, - &expandableRows)) - return NULL; - _err = SetDataBrowserListViewDisclosureColumn(_self->ob_itself, - column, - expandableRows); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserListViewDisclosureColumn(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 column; - Boolean expandableRows; -#ifndef GetDataBrowserListViewDisclosureColumn - PyMac_PRECHECK(GetDataBrowserListViewDisclosureColumn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserListViewDisclosureColumn(_self->ob_itself, - &column, - &expandableRows); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("lb", - column, - expandableRows); - return _res; -} - -static PyObject *CtlObj_GetDataBrowserColumnViewPath(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Handle path; -#ifndef GetDataBrowserColumnViewPath - PyMac_PRECHECK(GetDataBrowserColumnViewPath); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &path)) - return NULL; - _err = GetDataBrowserColumnViewPath(_self->ob_itself, - path); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserColumnViewPathLength(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 pathLength; -#ifndef GetDataBrowserColumnViewPathLength - PyMac_PRECHECK(GetDataBrowserColumnViewPathLength); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserColumnViewPathLength(_self->ob_itself, - &pathLength); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - pathLength); - return _res; -} - -static PyObject *CtlObj_SetDataBrowserColumnViewDisplayType(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType propertyType; -#ifndef SetDataBrowserColumnViewDisplayType - PyMac_PRECHECK(SetDataBrowserColumnViewDisplayType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &propertyType)) - return NULL; - _err = SetDataBrowserColumnViewDisplayType(_self->ob_itself, - propertyType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *CtlObj_GetDataBrowserColumnViewDisplayType(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType propertyType; -#ifndef GetDataBrowserColumnViewDisplayType - PyMac_PRECHECK(GetDataBrowserColumnViewDisplayType); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDataBrowserColumnViewDisplayType(_self->ob_itself, - &propertyType); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildOSType, propertyType); - return _res; -} - -static PyObject *CtlObj_as_Resource(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; -#ifndef as_Resource - PyMac_PRECHECK(as_Resource); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = as_Resource(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *CtlObj_GetControlRect(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect rect; -#ifndef GetControlRect - PyMac_PRECHECK(GetControlRect); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetControlRect(_self->ob_itself, - &rect); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &rect); - return _res; -} - -static PyObject *CtlObj_DisposeControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - if (!PyArg_ParseTuple(_args, "")) - return NULL; - if ( _self->ob_itself ) { - SetControlReference(_self->ob_itself, (long)0); /* Make it forget about us */ - DisposeControl(_self->ob_itself); - _self->ob_itself = NULL; - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; - -} - -static PyObject *CtlObj_TrackControl(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - ControlPartCode _rv; - Point startPoint; - ControlActionUPP upp = 0; - PyObject *callback = 0; - - if (!PyArg_ParseTuple(_args, "O&|O", - PyMac_GetPoint, &startPoint, &callback)) - return NULL; - if (callback && callback != Py_None) { - if (PyInt_Check(callback) && PyInt_AS_LONG(callback) == -1) - upp = (ControlActionUPP)-1; - else { - settrackfunc(callback); - upp = mytracker_upp; - } - } - _rv = TrackControl(_self->ob_itself, - startPoint, - upp); - clrtrackfunc(); - _res = Py_BuildValue("h", - _rv); - return _res; - -} - -static PyObject *CtlObj_HandleControlClick(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - ControlPartCode _rv; - Point startPoint; - SInt16 modifiers; - ControlActionUPP upp = 0; - PyObject *callback = 0; - - if (!PyArg_ParseTuple(_args, "O&h|O", - PyMac_GetPoint, &startPoint, - &modifiers, - &callback)) - return NULL; - if (callback && callback != Py_None) { - if (PyInt_Check(callback) && PyInt_AS_LONG(callback) == -1) - upp = (ControlActionUPP)-1; - else { - settrackfunc(callback); - upp = mytracker_upp; - } - } - _rv = HandleControlClick(_self->ob_itself, - startPoint, - modifiers, - upp); - clrtrackfunc(); - _res = Py_BuildValue("h", - _rv); - return _res; - -} - -static PyObject *CtlObj_SetControlData(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - OSErr _err; - ControlPartCode inPart; - ResType inTagName; - Size bufferSize; - Ptr buffer; - - if (!PyArg_ParseTuple(_args, "hO&s#", - &inPart, - PyMac_GetOSType, &inTagName, - &buffer, &bufferSize)) - return NULL; - - _err = SetControlData(_self->ob_itself, - inPart, - inTagName, - bufferSize, - buffer); - - if (_err != noErr) - return PyMac_Error(_err); - _res = Py_None; - return _res; - -} - -static PyObject *CtlObj_GetControlData(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - OSErr _err; - ControlPartCode inPart; - ResType inTagName; - Size bufferSize; - Ptr buffer; - Size outSize; - - if (!PyArg_ParseTuple(_args, "hO&", - &inPart, - PyMac_GetOSType, &inTagName)) - return NULL; - - /* allocate a buffer for the data */ - _err = GetControlDataSize(_self->ob_itself, - inPart, - inTagName, - &bufferSize); - if (_err != noErr) - return PyMac_Error(_err); - buffer = PyMem_NEW(char, bufferSize); - if (buffer == NULL) - return PyErr_NoMemory(); - - _err = GetControlData(_self->ob_itself, - inPart, - inTagName, - bufferSize, - buffer, - &outSize); - - if (_err != noErr) { - PyMem_DEL(buffer); - return PyMac_Error(_err); - } - _res = Py_BuildValue("s#", buffer, outSize); - PyMem_DEL(buffer); - return _res; - -} - -static PyObject *CtlObj_SetControlData_Handle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - OSErr _err; - ControlPartCode inPart; - ResType inTagName; - Handle buffer; - - if (!PyArg_ParseTuple(_args, "hO&O&", - &inPart, - PyMac_GetOSType, &inTagName, - OptResObj_Convert, &buffer)) - return NULL; - - _err = SetControlData(_self->ob_itself, - inPart, - inTagName, - sizeof(buffer), - (Ptr)&buffer); - - if (_err != noErr) - return PyMac_Error(_err); - _res = Py_None; - return _res; - -} - -static PyObject *CtlObj_GetControlData_Handle(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - OSErr _err; - ControlPartCode inPart; - ResType inTagName; - Size bufferSize; - Handle hdl; - - if (!PyArg_ParseTuple(_args, "hO&", - &inPart, - PyMac_GetOSType, &inTagName)) - return NULL; - - /* Check it is handle-sized */ - _err = GetControlDataSize(_self->ob_itself, - inPart, - inTagName, - &bufferSize); - if (_err != noErr) - return PyMac_Error(_err); - if (bufferSize != sizeof(Handle)) { - PyErr_SetString(Ctl_Error, "GetControlDataSize() != sizeof(Handle)"); - return NULL; - } - - _err = GetControlData(_self->ob_itself, - inPart, - inTagName, - sizeof(Handle), - (Ptr)&hdl, - &bufferSize); - - if (_err != noErr) { - return PyMac_Error(_err); - } - _res = Py_BuildValue("O&", OptResObj_New, hdl); - return _res; - -} - -static PyObject *CtlObj_SetControlData_Callback(ControlObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - OSErr _err; - ControlPartCode inPart; - ResType inTagName; - PyObject *callback; - UniversalProcPtr c_callback; - - if (!PyArg_ParseTuple(_args, "hO&O", - &inPart, - PyMac_GetOSType, &inTagName, - &callback)) - return NULL; - - if ( setcallback((PyObject *)_self, inTagName, callback, &c_callback) < 0 ) - return NULL; - _err = SetControlData(_self->ob_itself, - inPart, - inTagName, - sizeof(c_callback), - (Ptr)&c_callback); - - if (_err != noErr) - return PyMac_Error(_err); - _res = Py_None; - return _res; - -} - -static PyMethodDef CtlObj_methods[] = { - {"HiliteControl", (PyCFunction)CtlObj_HiliteControl, 1, - PyDoc_STR("(ControlPartCode hiliteState) -> None")}, - {"ShowControl", (PyCFunction)CtlObj_ShowControl, 1, - PyDoc_STR("() -> None")}, - {"HideControl", (PyCFunction)CtlObj_HideControl, 1, - PyDoc_STR("() -> None")}, - {"IsControlActive", (PyCFunction)CtlObj_IsControlActive, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"IsControlVisible", (PyCFunction)CtlObj_IsControlVisible, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"ActivateControl", (PyCFunction)CtlObj_ActivateControl, 1, - PyDoc_STR("() -> None")}, - {"DeactivateControl", (PyCFunction)CtlObj_DeactivateControl, 1, - PyDoc_STR("() -> None")}, - {"SetControlVisibility", (PyCFunction)CtlObj_SetControlVisibility, 1, - PyDoc_STR("(Boolean inIsVisible, Boolean inDoDraw) -> None")}, - {"IsControlEnabled", (PyCFunction)CtlObj_IsControlEnabled, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"EnableControl", (PyCFunction)CtlObj_EnableControl, 1, - PyDoc_STR("() -> None")}, - {"DisableControl", (PyCFunction)CtlObj_DisableControl, 1, - PyDoc_STR("() -> None")}, - {"Draw1Control", (PyCFunction)CtlObj_Draw1Control, 1, - PyDoc_STR("() -> None")}, - {"GetBestControlRect", (PyCFunction)CtlObj_GetBestControlRect, 1, - PyDoc_STR("() -> (Rect outRect, SInt16 outBaseLineOffset)")}, - {"SetControlFontStyle", (PyCFunction)CtlObj_SetControlFontStyle, 1, - PyDoc_STR("(ControlFontStyleRec inStyle) -> None")}, - {"DrawControlInCurrentPort", (PyCFunction)CtlObj_DrawControlInCurrentPort, 1, - PyDoc_STR("() -> None")}, - {"SetUpControlBackground", (PyCFunction)CtlObj_SetUpControlBackground, 1, - PyDoc_STR("(SInt16 inDepth, Boolean inIsColorDevice) -> None")}, - {"SetUpControlTextColor", (PyCFunction)CtlObj_SetUpControlTextColor, 1, - PyDoc_STR("(SInt16 inDepth, Boolean inIsColorDevice) -> None")}, - {"DragControl", (PyCFunction)CtlObj_DragControl, 1, - PyDoc_STR("(Point startPoint, Rect limitRect, Rect slopRect, DragConstraint axis) -> None")}, - {"TestControl", (PyCFunction)CtlObj_TestControl, 1, - PyDoc_STR("(Point testPoint) -> (ControlPartCode _rv)")}, - {"HandleControlContextualMenuClick", (PyCFunction)CtlObj_HandleControlContextualMenuClick, 1, - PyDoc_STR("(Point inWhere) -> (Boolean menuDisplayed)")}, - {"GetControlClickActivation", (PyCFunction)CtlObj_GetControlClickActivation, 1, - PyDoc_STR("(Point inWhere, EventModifiers inModifiers) -> (ClickActivationResult outResult)")}, - {"HandleControlKey", (PyCFunction)CtlObj_HandleControlKey, 1, - PyDoc_STR("(SInt16 inKeyCode, SInt16 inCharCode, EventModifiers inModifiers) -> (ControlPartCode _rv)")}, - {"HandleControlSetCursor", (PyCFunction)CtlObj_HandleControlSetCursor, 1, - PyDoc_STR("(Point localPoint, EventModifiers modifiers) -> (Boolean cursorWasSet)")}, - {"MoveControl", (PyCFunction)CtlObj_MoveControl, 1, - PyDoc_STR("(SInt16 h, SInt16 v) -> None")}, - {"SizeControl", (PyCFunction)CtlObj_SizeControl, 1, - PyDoc_STR("(SInt16 w, SInt16 h) -> None")}, - {"SetControlTitle", (PyCFunction)CtlObj_SetControlTitle, 1, - PyDoc_STR("(Str255 title) -> None")}, - {"GetControlTitle", (PyCFunction)CtlObj_GetControlTitle, 1, - PyDoc_STR("() -> (Str255 title)")}, - {"SetControlTitleWithCFString", (PyCFunction)CtlObj_SetControlTitleWithCFString, 1, - PyDoc_STR("(CFStringRef inString) -> None")}, - {"CopyControlTitleAsCFString", (PyCFunction)CtlObj_CopyControlTitleAsCFString, 1, - PyDoc_STR("() -> (CFStringRef outString)")}, - {"GetControlValue", (PyCFunction)CtlObj_GetControlValue, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"SetControlValue", (PyCFunction)CtlObj_SetControlValue, 1, - PyDoc_STR("(SInt16 newValue) -> None")}, - {"GetControlMinimum", (PyCFunction)CtlObj_GetControlMinimum, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"SetControlMinimum", (PyCFunction)CtlObj_SetControlMinimum, 1, - PyDoc_STR("(SInt16 newMinimum) -> None")}, - {"GetControlMaximum", (PyCFunction)CtlObj_GetControlMaximum, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"SetControlMaximum", (PyCFunction)CtlObj_SetControlMaximum, 1, - PyDoc_STR("(SInt16 newMaximum) -> None")}, - {"GetControlViewSize", (PyCFunction)CtlObj_GetControlViewSize, 1, - PyDoc_STR("() -> (SInt32 _rv)")}, - {"SetControlViewSize", (PyCFunction)CtlObj_SetControlViewSize, 1, - PyDoc_STR("(SInt32 newViewSize) -> None")}, - {"GetControl32BitValue", (PyCFunction)CtlObj_GetControl32BitValue, 1, - PyDoc_STR("() -> (SInt32 _rv)")}, - {"SetControl32BitValue", (PyCFunction)CtlObj_SetControl32BitValue, 1, - PyDoc_STR("(SInt32 newValue) -> None")}, - {"GetControl32BitMaximum", (PyCFunction)CtlObj_GetControl32BitMaximum, 1, - PyDoc_STR("() -> (SInt32 _rv)")}, - {"SetControl32BitMaximum", (PyCFunction)CtlObj_SetControl32BitMaximum, 1, - PyDoc_STR("(SInt32 newMaximum) -> None")}, - {"GetControl32BitMinimum", (PyCFunction)CtlObj_GetControl32BitMinimum, 1, - PyDoc_STR("() -> (SInt32 _rv)")}, - {"SetControl32BitMinimum", (PyCFunction)CtlObj_SetControl32BitMinimum, 1, - PyDoc_STR("(SInt32 newMinimum) -> None")}, - {"IsValidControlHandle", (PyCFunction)CtlObj_IsValidControlHandle, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"SetControlID", (PyCFunction)CtlObj_SetControlID, 1, - PyDoc_STR("(ControlID inID) -> None")}, - {"GetControlID", (PyCFunction)CtlObj_GetControlID, 1, - PyDoc_STR("() -> (ControlID outID)")}, - {"SetControlCommandID", (PyCFunction)CtlObj_SetControlCommandID, 1, - PyDoc_STR("(UInt32 inCommandID) -> None")}, - {"GetControlCommandID", (PyCFunction)CtlObj_GetControlCommandID, 1, - PyDoc_STR("() -> (UInt32 outCommandID)")}, - {"RemoveControlProperty", (PyCFunction)CtlObj_RemoveControlProperty, 1, - PyDoc_STR("(OSType propertyCreator, OSType propertyTag) -> None")}, - {"GetControlPropertyAttributes", (PyCFunction)CtlObj_GetControlPropertyAttributes, 1, - PyDoc_STR("(OSType propertyCreator, OSType propertyTag) -> (UInt32 attributes)")}, - {"ChangeControlPropertyAttributes", (PyCFunction)CtlObj_ChangeControlPropertyAttributes, 1, - PyDoc_STR("(OSType propertyCreator, OSType propertyTag, UInt32 attributesToSet, UInt32 attributesToClear) -> None")}, - {"GetControlRegion", (PyCFunction)CtlObj_GetControlRegion, 1, - PyDoc_STR("(ControlPartCode inPart, RgnHandle outRegion) -> None")}, - {"GetControlVariant", (PyCFunction)CtlObj_GetControlVariant, 1, - PyDoc_STR("() -> (ControlVariant _rv)")}, - {"SetControlAction", (PyCFunction)CtlObj_SetControlAction, 1, - PyDoc_STR("(PyObject* actionProc) -> None")}, - {"SetControlReference", (PyCFunction)CtlObj_SetControlReference, 1, - PyDoc_STR("(SInt32 data) -> None")}, - {"GetControlReference", (PyCFunction)CtlObj_GetControlReference, 1, - PyDoc_STR("() -> (SInt32 _rv)")}, - {"EmbedControl", (PyCFunction)CtlObj_EmbedControl, 1, - PyDoc_STR("(ControlHandle inContainer) -> None")}, - {"AutoEmbedControl", (PyCFunction)CtlObj_AutoEmbedControl, 1, - PyDoc_STR("(WindowPtr inWindow) -> None")}, - {"GetSuperControl", (PyCFunction)CtlObj_GetSuperControl, 1, - PyDoc_STR("() -> (ControlHandle outParent)")}, - {"CountSubControls", (PyCFunction)CtlObj_CountSubControls, 1, - PyDoc_STR("() -> (UInt16 outNumChildren)")}, - {"GetIndexedSubControl", (PyCFunction)CtlObj_GetIndexedSubControl, 1, - PyDoc_STR("(UInt16 inIndex) -> (ControlHandle outSubControl)")}, - {"SetControlSupervisor", (PyCFunction)CtlObj_SetControlSupervisor, 1, - PyDoc_STR("(ControlHandle inBoss) -> None")}, - {"GetControlFeatures", (PyCFunction)CtlObj_GetControlFeatures, 1, - PyDoc_STR("() -> (UInt32 outFeatures)")}, - {"GetControlDataSize", (PyCFunction)CtlObj_GetControlDataSize, 1, - PyDoc_STR("(ControlPartCode inPart, ResType inTagName) -> (Size outMaxSize)")}, - {"HandleControlDragTracking", (PyCFunction)CtlObj_HandleControlDragTracking, 1, - PyDoc_STR("(DragTrackingMessage inMessage, DragReference inDrag) -> (Boolean outLikesDrag)")}, - {"HandleControlDragReceive", (PyCFunction)CtlObj_HandleControlDragReceive, 1, - PyDoc_STR("(DragReference inDrag) -> None")}, - {"SetControlDragTrackingEnabled", (PyCFunction)CtlObj_SetControlDragTrackingEnabled, 1, - PyDoc_STR("(Boolean inTracks) -> None")}, - {"IsControlDragTrackingEnabled", (PyCFunction)CtlObj_IsControlDragTrackingEnabled, 1, - PyDoc_STR("() -> (Boolean outTracks)")}, - {"GetControlBounds", (PyCFunction)CtlObj_GetControlBounds, 1, - PyDoc_STR("() -> (Rect bounds)")}, - {"IsControlHilited", (PyCFunction)CtlObj_IsControlHilited, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"GetControlHilite", (PyCFunction)CtlObj_GetControlHilite, 1, - PyDoc_STR("() -> (UInt16 _rv)")}, - {"GetControlOwner", (PyCFunction)CtlObj_GetControlOwner, 1, - PyDoc_STR("() -> (WindowPtr _rv)")}, - {"GetControlDataHandle", (PyCFunction)CtlObj_GetControlDataHandle, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {"GetControlPopupMenuHandle", (PyCFunction)CtlObj_GetControlPopupMenuHandle, 1, - PyDoc_STR("() -> (MenuHandle _rv)")}, - {"GetControlPopupMenuID", (PyCFunction)CtlObj_GetControlPopupMenuID, 1, - PyDoc_STR("() -> (short _rv)")}, - {"SetControlDataHandle", (PyCFunction)CtlObj_SetControlDataHandle, 1, - PyDoc_STR("(Handle dataHandle) -> None")}, - {"SetControlBounds", (PyCFunction)CtlObj_SetControlBounds, 1, - PyDoc_STR("(Rect bounds) -> None")}, - {"SetControlPopupMenuHandle", (PyCFunction)CtlObj_SetControlPopupMenuHandle, 1, - PyDoc_STR("(MenuHandle popupMenu) -> None")}, - {"SetControlPopupMenuID", (PyCFunction)CtlObj_SetControlPopupMenuID, 1, - PyDoc_STR("(short menuID) -> None")}, - {"GetBevelButtonMenuValue", (PyCFunction)CtlObj_GetBevelButtonMenuValue, 1, - PyDoc_STR("() -> (SInt16 outValue)")}, - {"SetBevelButtonMenuValue", (PyCFunction)CtlObj_SetBevelButtonMenuValue, 1, - PyDoc_STR("(SInt16 inValue) -> None")}, - {"GetBevelButtonMenuHandle", (PyCFunction)CtlObj_GetBevelButtonMenuHandle, 1, - PyDoc_STR("() -> (MenuHandle outHandle)")}, - {"SetBevelButtonContentInfo", (PyCFunction)CtlObj_SetBevelButtonContentInfo, 1, - PyDoc_STR("(ControlButtonContentInfo inContent) -> None")}, - {"SetBevelButtonTransform", (PyCFunction)CtlObj_SetBevelButtonTransform, 1, - PyDoc_STR("(IconTransformType transform) -> None")}, - {"SetDisclosureTriangleLastValue", (PyCFunction)CtlObj_SetDisclosureTriangleLastValue, 1, - PyDoc_STR("(SInt16 inValue) -> None")}, - {"GetTabContentRect", (PyCFunction)CtlObj_GetTabContentRect, 1, - PyDoc_STR("() -> (Rect outContentRect)")}, - {"SetTabEnabled", (PyCFunction)CtlObj_SetTabEnabled, 1, - PyDoc_STR("(SInt16 inTabToHilite, Boolean inEnabled) -> None")}, - {"SetImageWellContentInfo", (PyCFunction)CtlObj_SetImageWellContentInfo, 1, - PyDoc_STR("(ControlButtonContentInfo inContent) -> None")}, - {"SetImageWellTransform", (PyCFunction)CtlObj_SetImageWellTransform, 1, - PyDoc_STR("(IconTransformType inTransform) -> None")}, - {"GetDataBrowserViewStyle", (PyCFunction)CtlObj_GetDataBrowserViewStyle, 1, - PyDoc_STR("() -> (OSType style)")}, - {"SetDataBrowserViewStyle", (PyCFunction)CtlObj_SetDataBrowserViewStyle, 1, - PyDoc_STR("(OSType style) -> None")}, - {"EnableDataBrowserEditCommand", (PyCFunction)CtlObj_EnableDataBrowserEditCommand, 1, - PyDoc_STR("(UInt32 command) -> (Boolean _rv)")}, - {"ExecuteDataBrowserEditCommand", (PyCFunction)CtlObj_ExecuteDataBrowserEditCommand, 1, - PyDoc_STR("(UInt32 command) -> None")}, - {"GetDataBrowserSelectionAnchor", (PyCFunction)CtlObj_GetDataBrowserSelectionAnchor, 1, - PyDoc_STR("() -> (UInt32 first, UInt32 last)")}, - {"MoveDataBrowserSelectionAnchor", (PyCFunction)CtlObj_MoveDataBrowserSelectionAnchor, 1, - PyDoc_STR("(UInt32 direction, Boolean extendSelection) -> None")}, - {"OpenDataBrowserContainer", (PyCFunction)CtlObj_OpenDataBrowserContainer, 1, - PyDoc_STR("(UInt32 container) -> None")}, - {"CloseDataBrowserContainer", (PyCFunction)CtlObj_CloseDataBrowserContainer, 1, - PyDoc_STR("(UInt32 container) -> None")}, - {"SortDataBrowserContainer", (PyCFunction)CtlObj_SortDataBrowserContainer, 1, - PyDoc_STR("(UInt32 container, Boolean sortChildren) -> None")}, - {"GetDataBrowserItems", (PyCFunction)CtlObj_GetDataBrowserItems, 1, - PyDoc_STR("(UInt32 container, Boolean recurse, UInt32 state, Handle items) -> None")}, - {"GetDataBrowserItemCount", (PyCFunction)CtlObj_GetDataBrowserItemCount, 1, - PyDoc_STR("(UInt32 container, Boolean recurse, UInt32 state) -> (UInt32 numItems)")}, - {"IsDataBrowserItemSelected", (PyCFunction)CtlObj_IsDataBrowserItemSelected, 1, - PyDoc_STR("(UInt32 item) -> (Boolean _rv)")}, - {"GetDataBrowserItemState", (PyCFunction)CtlObj_GetDataBrowserItemState, 1, - PyDoc_STR("(UInt32 item) -> (UInt32 state)")}, - {"RevealDataBrowserItem", (PyCFunction)CtlObj_RevealDataBrowserItem, 1, - PyDoc_STR("(UInt32 item, UInt32 propertyID, UInt8 options) -> None")}, - {"SetDataBrowserActiveItems", (PyCFunction)CtlObj_SetDataBrowserActiveItems, 1, - PyDoc_STR("(Boolean active) -> None")}, - {"GetDataBrowserActiveItems", (PyCFunction)CtlObj_GetDataBrowserActiveItems, 1, - PyDoc_STR("() -> (Boolean active)")}, - {"SetDataBrowserScrollBarInset", (PyCFunction)CtlObj_SetDataBrowserScrollBarInset, 1, - PyDoc_STR("() -> (Rect insetRect)")}, - {"GetDataBrowserScrollBarInset", (PyCFunction)CtlObj_GetDataBrowserScrollBarInset, 1, - PyDoc_STR("() -> (Rect insetRect)")}, - {"SetDataBrowserTarget", (PyCFunction)CtlObj_SetDataBrowserTarget, 1, - PyDoc_STR("(UInt32 target) -> None")}, - {"GetDataBrowserTarget", (PyCFunction)CtlObj_GetDataBrowserTarget, 1, - PyDoc_STR("() -> (UInt32 target)")}, - {"SetDataBrowserSortOrder", (PyCFunction)CtlObj_SetDataBrowserSortOrder, 1, - PyDoc_STR("(UInt16 order) -> None")}, - {"GetDataBrowserSortOrder", (PyCFunction)CtlObj_GetDataBrowserSortOrder, 1, - PyDoc_STR("() -> (UInt16 order)")}, - {"SetDataBrowserScrollPosition", (PyCFunction)CtlObj_SetDataBrowserScrollPosition, 1, - PyDoc_STR("(UInt32 top, UInt32 left) -> None")}, - {"GetDataBrowserScrollPosition", (PyCFunction)CtlObj_GetDataBrowserScrollPosition, 1, - PyDoc_STR("() -> (UInt32 top, UInt32 left)")}, - {"SetDataBrowserHasScrollBars", (PyCFunction)CtlObj_SetDataBrowserHasScrollBars, 1, - PyDoc_STR("(Boolean horiz, Boolean vert) -> None")}, - {"GetDataBrowserHasScrollBars", (PyCFunction)CtlObj_GetDataBrowserHasScrollBars, 1, - PyDoc_STR("() -> (Boolean horiz, Boolean vert)")}, - {"SetDataBrowserSortProperty", (PyCFunction)CtlObj_SetDataBrowserSortProperty, 1, - PyDoc_STR("(UInt32 property) -> None")}, - {"GetDataBrowserSortProperty", (PyCFunction)CtlObj_GetDataBrowserSortProperty, 1, - PyDoc_STR("() -> (UInt32 property)")}, - {"SetDataBrowserSelectionFlags", (PyCFunction)CtlObj_SetDataBrowserSelectionFlags, 1, - PyDoc_STR("(UInt32 selectionFlags) -> None")}, - {"GetDataBrowserSelectionFlags", (PyCFunction)CtlObj_GetDataBrowserSelectionFlags, 1, - PyDoc_STR("() -> (UInt32 selectionFlags)")}, - {"SetDataBrowserPropertyFlags", (PyCFunction)CtlObj_SetDataBrowserPropertyFlags, 1, - PyDoc_STR("(UInt32 property, UInt32 flags) -> None")}, - {"GetDataBrowserPropertyFlags", (PyCFunction)CtlObj_GetDataBrowserPropertyFlags, 1, - PyDoc_STR("(UInt32 property) -> (UInt32 flags)")}, - {"SetDataBrowserEditText", (PyCFunction)CtlObj_SetDataBrowserEditText, 1, - PyDoc_STR("(CFStringRef text) -> None")}, - {"CopyDataBrowserEditText", (PyCFunction)CtlObj_CopyDataBrowserEditText, 1, - PyDoc_STR("() -> (CFStringRef text)")}, - {"GetDataBrowserEditText", (PyCFunction)CtlObj_GetDataBrowserEditText, 1, - PyDoc_STR("(CFMutableStringRef text) -> None")}, - {"SetDataBrowserEditItem", (PyCFunction)CtlObj_SetDataBrowserEditItem, 1, - PyDoc_STR("(UInt32 item, UInt32 property) -> None")}, - {"GetDataBrowserEditItem", (PyCFunction)CtlObj_GetDataBrowserEditItem, 1, - PyDoc_STR("() -> (UInt32 item, UInt32 property)")}, - {"GetDataBrowserItemPartBounds", (PyCFunction)CtlObj_GetDataBrowserItemPartBounds, 1, - PyDoc_STR("(UInt32 item, UInt32 property, OSType part) -> (Rect bounds)")}, - {"RemoveDataBrowserTableViewColumn", (PyCFunction)CtlObj_RemoveDataBrowserTableViewColumn, 1, - PyDoc_STR("(UInt32 column) -> None")}, - {"GetDataBrowserTableViewColumnCount", (PyCFunction)CtlObj_GetDataBrowserTableViewColumnCount, 1, - PyDoc_STR("() -> (UInt32 numColumns)")}, - {"SetDataBrowserTableViewHiliteStyle", (PyCFunction)CtlObj_SetDataBrowserTableViewHiliteStyle, 1, - PyDoc_STR("(UInt32 hiliteStyle) -> None")}, - {"GetDataBrowserTableViewHiliteStyle", (PyCFunction)CtlObj_GetDataBrowserTableViewHiliteStyle, 1, - PyDoc_STR("() -> (UInt32 hiliteStyle)")}, - {"SetDataBrowserTableViewRowHeight", (PyCFunction)CtlObj_SetDataBrowserTableViewRowHeight, 1, - PyDoc_STR("(UInt16 height) -> None")}, - {"GetDataBrowserTableViewRowHeight", (PyCFunction)CtlObj_GetDataBrowserTableViewRowHeight, 1, - PyDoc_STR("() -> (UInt16 height)")}, - {"SetDataBrowserTableViewColumnWidth", (PyCFunction)CtlObj_SetDataBrowserTableViewColumnWidth, 1, - PyDoc_STR("(UInt16 width) -> None")}, - {"GetDataBrowserTableViewColumnWidth", (PyCFunction)CtlObj_GetDataBrowserTableViewColumnWidth, 1, - PyDoc_STR("() -> (UInt16 width)")}, - {"SetDataBrowserTableViewItemRowHeight", (PyCFunction)CtlObj_SetDataBrowserTableViewItemRowHeight, 1, - PyDoc_STR("(UInt32 item, UInt16 height) -> None")}, - {"GetDataBrowserTableViewItemRowHeight", (PyCFunction)CtlObj_GetDataBrowserTableViewItemRowHeight, 1, - PyDoc_STR("(UInt32 item) -> (UInt16 height)")}, - {"SetDataBrowserTableViewNamedColumnWidth", (PyCFunction)CtlObj_SetDataBrowserTableViewNamedColumnWidth, 1, - PyDoc_STR("(UInt32 column, UInt16 width) -> None")}, - {"GetDataBrowserTableViewNamedColumnWidth", (PyCFunction)CtlObj_GetDataBrowserTableViewNamedColumnWidth, 1, - PyDoc_STR("(UInt32 column) -> (UInt16 width)")}, - {"SetDataBrowserTableViewGeometry", (PyCFunction)CtlObj_SetDataBrowserTableViewGeometry, 1, - PyDoc_STR("(Boolean variableWidthColumns, Boolean variableHeightRows) -> None")}, - {"GetDataBrowserTableViewGeometry", (PyCFunction)CtlObj_GetDataBrowserTableViewGeometry, 1, - PyDoc_STR("() -> (Boolean variableWidthColumns, Boolean variableHeightRows)")}, - {"GetDataBrowserTableViewItemID", (PyCFunction)CtlObj_GetDataBrowserTableViewItemID, 1, - PyDoc_STR("(UInt32 row) -> (UInt32 item)")}, - {"SetDataBrowserTableViewItemRow", (PyCFunction)CtlObj_SetDataBrowserTableViewItemRow, 1, - PyDoc_STR("(UInt32 item, UInt32 row) -> None")}, - {"GetDataBrowserTableViewItemRow", (PyCFunction)CtlObj_GetDataBrowserTableViewItemRow, 1, - PyDoc_STR("(UInt32 item) -> (UInt32 row)")}, - {"SetDataBrowserTableViewColumnPosition", (PyCFunction)CtlObj_SetDataBrowserTableViewColumnPosition, 1, - PyDoc_STR("(UInt32 column, UInt32 position) -> None")}, - {"GetDataBrowserTableViewColumnPosition", (PyCFunction)CtlObj_GetDataBrowserTableViewColumnPosition, 1, - PyDoc_STR("(UInt32 column) -> (UInt32 position)")}, - {"GetDataBrowserTableViewColumnProperty", (PyCFunction)CtlObj_GetDataBrowserTableViewColumnProperty, 1, - PyDoc_STR("(UInt32 column) -> (UInt32 property)")}, - {"AutoSizeDataBrowserListViewColumns", (PyCFunction)CtlObj_AutoSizeDataBrowserListViewColumns, 1, - PyDoc_STR("() -> None")}, - {"AddDataBrowserListViewColumn", (PyCFunction)CtlObj_AddDataBrowserListViewColumn, 1, - PyDoc_STR("(DataBrowserListViewColumnDesc columnDesc, UInt32 position) -> None")}, - {"SetDataBrowserListViewHeaderBtnHeight", (PyCFunction)CtlObj_SetDataBrowserListViewHeaderBtnHeight, 1, - PyDoc_STR("(UInt16 height) -> None")}, - {"GetDataBrowserListViewHeaderBtnHeight", (PyCFunction)CtlObj_GetDataBrowserListViewHeaderBtnHeight, 1, - PyDoc_STR("() -> (UInt16 height)")}, - {"SetDataBrowserListViewUsePlainBackground", (PyCFunction)CtlObj_SetDataBrowserListViewUsePlainBackground, 1, - PyDoc_STR("(Boolean usePlainBackground) -> None")}, - {"GetDataBrowserListViewUsePlainBackground", (PyCFunction)CtlObj_GetDataBrowserListViewUsePlainBackground, 1, - PyDoc_STR("() -> (Boolean usePlainBackground)")}, - {"SetDataBrowserListViewDisclosureColumn", (PyCFunction)CtlObj_SetDataBrowserListViewDisclosureColumn, 1, - PyDoc_STR("(UInt32 column, Boolean expandableRows) -> None")}, - {"GetDataBrowserListViewDisclosureColumn", (PyCFunction)CtlObj_GetDataBrowserListViewDisclosureColumn, 1, - PyDoc_STR("() -> (UInt32 column, Boolean expandableRows)")}, - {"GetDataBrowserColumnViewPath", (PyCFunction)CtlObj_GetDataBrowserColumnViewPath, 1, - PyDoc_STR("(Handle path) -> None")}, - {"GetDataBrowserColumnViewPathLength", (PyCFunction)CtlObj_GetDataBrowserColumnViewPathLength, 1, - PyDoc_STR("() -> (UInt32 pathLength)")}, - {"SetDataBrowserColumnViewDisplayType", (PyCFunction)CtlObj_SetDataBrowserColumnViewDisplayType, 1, - PyDoc_STR("(OSType propertyType) -> None")}, - {"GetDataBrowserColumnViewDisplayType", (PyCFunction)CtlObj_GetDataBrowserColumnViewDisplayType, 1, - PyDoc_STR("() -> (OSType propertyType)")}, - {"as_Resource", (PyCFunction)CtlObj_as_Resource, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {"GetControlRect", (PyCFunction)CtlObj_GetControlRect, 1, - PyDoc_STR("() -> (Rect rect)")}, - {"DisposeControl", (PyCFunction)CtlObj_DisposeControl, 1, - PyDoc_STR("() -> None")}, - {"TrackControl", (PyCFunction)CtlObj_TrackControl, 1, - PyDoc_STR("(Point startPoint [,trackercallback]) -> (ControlPartCode _rv)")}, - {"HandleControlClick", (PyCFunction)CtlObj_HandleControlClick, 1, - PyDoc_STR("(Point startPoint, Integer modifiers, [,trackercallback]) -> (ControlPartCode _rv)")}, - {"SetControlData", (PyCFunction)CtlObj_SetControlData, 1, - PyDoc_STR("(stuff) -> None")}, - {"GetControlData", (PyCFunction)CtlObj_GetControlData, 1, - PyDoc_STR("(part, type) -> String")}, - {"SetControlData_Handle", (PyCFunction)CtlObj_SetControlData_Handle, 1, - PyDoc_STR("(ResObj) -> None")}, - {"GetControlData_Handle", (PyCFunction)CtlObj_GetControlData_Handle, 1, - PyDoc_STR("(part, type) -> ResObj")}, - {"SetControlData_Callback", (PyCFunction)CtlObj_SetControlData_Callback, 1, - PyDoc_STR("(callbackfunc) -> None")}, - {NULL, NULL, 0} -}; - -#define CtlObj_getsetlist NULL - - -static int CtlObj_compare(ControlObject *self, ControlObject *other) -{ - unsigned long v, w; - - if (!CtlObj_Check((PyObject *)other)) - { - v=(unsigned long)self; - w=(unsigned long)other; - } - else - { - v=(unsigned long)self->ob_itself; - w=(unsigned long)other->ob_itself; - } - if( v < w ) return -1; - if( v > w ) return 1; - return 0; -} - -#define CtlObj_repr NULL - -static long CtlObj_hash(ControlObject *self) -{ - return (long)self->ob_itself; -} -#define CtlObj_tp_init 0 - -#define CtlObj_tp_alloc PyType_GenericAlloc - -static PyObject *CtlObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - ControlHandle itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CtlObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((ControlObject *)_self)->ob_itself = itself; - return _self; -} - -#define CtlObj_tp_free PyObject_Del - - -PyTypeObject Control_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Ctl.Control", /*tp_name*/ - sizeof(ControlObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) CtlObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) CtlObj_compare, /*tp_compare*/ - (reprfunc) CtlObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) CtlObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - CtlObj_methods, /* tp_methods */ - 0, /*tp_members*/ - CtlObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - CtlObj_tp_init, /* tp_init */ - CtlObj_tp_alloc, /* tp_alloc */ - CtlObj_tp_new, /* tp_new */ - CtlObj_tp_free, /* tp_free */ -}; - -/* -------------------- End object type Control --------------------- */ - - -static PyObject *Ctl_NewControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ControlHandle _rv; - WindowPtr owningWindow; - Rect boundsRect; - Str255 controlTitle; - Boolean initiallyVisible; - SInt16 initialValue; - SInt16 minimumValue; - SInt16 maximumValue; - SInt16 procID; - SInt32 controlReference; -#ifndef NewControl - PyMac_PRECHECK(NewControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&bhhhhl", - WinObj_Convert, &owningWindow, - PyMac_GetRect, &boundsRect, - PyMac_GetStr255, controlTitle, - &initiallyVisible, - &initialValue, - &minimumValue, - &maximumValue, - &procID, - &controlReference)) - return NULL; - _rv = NewControl(owningWindow, - &boundsRect, - controlTitle, - initiallyVisible, - initialValue, - minimumValue, - maximumValue, - procID, - controlReference); - _res = Py_BuildValue("O&", - CtlObj_New, _rv); - return _res; -} - -static PyObject *Ctl_GetNewControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ControlHandle _rv; - SInt16 resourceID; - WindowPtr owningWindow; -#ifndef GetNewControl - PyMac_PRECHECK(GetNewControl); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &resourceID, - WinObj_Convert, &owningWindow)) - return NULL; - _rv = GetNewControl(resourceID, - owningWindow); - _res = Py_BuildValue("O&", - CtlObj_New, _rv); - return _res; -} - -static PyObject *Ctl_DrawControls(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr theWindow; -#ifndef DrawControls - PyMac_PRECHECK(DrawControls); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &theWindow)) - return NULL; - DrawControls(theWindow); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Ctl_UpdateControls(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr inWindow; - RgnHandle inUpdateRegion; -#ifndef UpdateControls - PyMac_PRECHECK(UpdateControls); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - WinObj_Convert, &inWindow, - ResObj_Convert, &inUpdateRegion)) - return NULL; - UpdateControls(inWindow, - inUpdateRegion); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Ctl_FindControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ControlPartCode _rv; - Point testPoint; - WindowPtr theWindow; - ControlHandle theControl; -#ifndef FindControl - PyMac_PRECHECK(FindControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &testPoint, - WinObj_Convert, &theWindow)) - return NULL; - _rv = FindControl(testPoint, - theWindow, - &theControl); - _res = Py_BuildValue("hO&", - _rv, - CtlObj_WhichControl, theControl); - return _res; -} - -static PyObject *Ctl_IdleControls(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr inWindow; -#ifndef IdleControls - PyMac_PRECHECK(IdleControls); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - IdleControls(inWindow); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Ctl_GetControlByID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - ControlID inID; - ControlHandle outControl; -#ifndef GetControlByID - PyMac_PRECHECK(GetControlByID); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - WinObj_Convert, &inWindow, - PyControlID_Convert, &inID)) - return NULL; - _err = GetControlByID(inWindow, - &inID, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_WhichControl, outControl); - return _res; -} - -static PyObject *Ctl_DumpControlHierarchy(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - WindowPtr inWindow; - FSSpec inDumpFile; -#ifndef DumpControlHierarchy - PyMac_PRECHECK(DumpControlHierarchy); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - WinObj_Convert, &inWindow, - PyMac_GetFSSpec, &inDumpFile)) - return NULL; - _err = DumpControlHierarchy(inWindow, - &inDumpFile); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Ctl_CreateRootControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - WindowPtr inWindow; - ControlHandle outControl; -#ifndef CreateRootControl - PyMac_PRECHECK(CreateRootControl); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = CreateRootControl(inWindow, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_GetRootControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - WindowPtr inWindow; - ControlHandle outControl; -#ifndef GetRootControl - PyMac_PRECHECK(GetRootControl); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = GetRootControl(inWindow, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_WhichControl, outControl); - return _res; -} - -static PyObject *Ctl_GetKeyboardFocus(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - WindowPtr inWindow; - ControlHandle outControl; -#ifndef GetKeyboardFocus - PyMac_PRECHECK(GetKeyboardFocus); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = GetKeyboardFocus(inWindow, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_WhichControl, outControl); - return _res; -} - -static PyObject *Ctl_SetKeyboardFocus(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - WindowPtr inWindow; - ControlHandle inControl; - ControlFocusPart inPart; -#ifndef SetKeyboardFocus - PyMac_PRECHECK(SetKeyboardFocus); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - WinObj_Convert, &inWindow, - CtlObj_Convert, &inControl, - &inPart)) - return NULL; - _err = SetKeyboardFocus(inWindow, - inControl, - inPart); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Ctl_AdvanceKeyboardFocus(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - WindowPtr inWindow; -#ifndef AdvanceKeyboardFocus - PyMac_PRECHECK(AdvanceKeyboardFocus); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = AdvanceKeyboardFocus(inWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Ctl_ReverseKeyboardFocus(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - WindowPtr inWindow; -#ifndef ReverseKeyboardFocus - PyMac_PRECHECK(ReverseKeyboardFocus); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = ReverseKeyboardFocus(inWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Ctl_ClearKeyboardFocus(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - WindowPtr inWindow; -#ifndef ClearKeyboardFocus - PyMac_PRECHECK(ClearKeyboardFocus); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = ClearKeyboardFocus(inWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Ctl_SetAutomaticControlDragTrackingEnabledForWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - Boolean inTracks; -#ifndef SetAutomaticControlDragTrackingEnabledForWindow - PyMac_PRECHECK(SetAutomaticControlDragTrackingEnabledForWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - WinObj_Convert, &inWindow, - &inTracks)) - return NULL; - _err = SetAutomaticControlDragTrackingEnabledForWindow(inWindow, - inTracks); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Ctl_IsAutomaticControlDragTrackingEnabledForWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - Boolean outTracks; -#ifndef IsAutomaticControlDragTrackingEnabledForWindow - PyMac_PRECHECK(IsAutomaticControlDragTrackingEnabledForWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inWindow)) - return NULL; - _err = IsAutomaticControlDragTrackingEnabledForWindow(inWindow, - &outTracks); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - outTracks); - return _res; -} - -static PyObject *Ctl_CreateBevelButtonControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - CFStringRef title; - UInt16 thickness; - UInt16 behavior; - ControlButtonContentInfo info; - SInt16 menuID; - UInt16 menuBehavior; - UInt16 menuPlacement; - ControlHandle outControl; -#ifndef CreateBevelButtonControl - PyMac_PRECHECK(CreateBevelButtonControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&HHO&hHH", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - CFStringRefObj_Convert, &title, - &thickness, - &behavior, - ControlButtonContentInfo_Convert, &info, - &menuID, - &menuBehavior, - &menuPlacement)) - return NULL; - _err = CreateBevelButtonControl(window, - &boundsRect, - title, - thickness, - behavior, - &info, - menuID, - menuBehavior, - menuPlacement, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateSliderControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - SInt32 value; - SInt32 minimum; - SInt32 maximum; - UInt16 orientation; - UInt16 numTickMarks; - Boolean liveTracking; - PyObject* liveTrackingProc; - UniversalProcPtr c_callback; - ControlHandle outControl; -#ifndef CreateSliderControl - PyMac_PRECHECK(CreateSliderControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&lllHHbO", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - &value, - &minimum, - &maximum, - &orientation, - &numTickMarks, - &liveTracking, - &liveTrackingProc)) - return NULL; - _err = CreateSliderControl(window, - &boundsRect, - value, - minimum, - maximum, - orientation, - numTickMarks, - liveTracking, - myactionproc_upp, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - setcallback(_res, kMyControlActionProcTag, liveTrackingProc, &c_callback); - return _res; -} - -static PyObject *Ctl_CreateDisclosureTriangleControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - Rect inBoundsRect; - UInt16 inOrientation; - CFStringRef inTitle; - SInt32 inInitialValue; - Boolean inDrawTitle; - Boolean inAutoToggles; - ControlHandle outControl; -#ifndef CreateDisclosureTriangleControl - PyMac_PRECHECK(CreateDisclosureTriangleControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&HO&lbb", - WinObj_Convert, &inWindow, - PyMac_GetRect, &inBoundsRect, - &inOrientation, - CFStringRefObj_Convert, &inTitle, - &inInitialValue, - &inDrawTitle, - &inAutoToggles)) - return NULL; - _err = CreateDisclosureTriangleControl(inWindow, - &inBoundsRect, - inOrientation, - inTitle, - inInitialValue, - inDrawTitle, - inAutoToggles, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateProgressBarControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - SInt32 value; - SInt32 minimum; - SInt32 maximum; - Boolean indeterminate; - ControlHandle outControl; -#ifndef CreateProgressBarControl - PyMac_PRECHECK(CreateProgressBarControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&lllb", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - &value, - &minimum, - &maximum, - &indeterminate)) - return NULL; - _err = CreateProgressBarControl(window, - &boundsRect, - value, - minimum, - maximum, - indeterminate, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateRelevanceBarControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - SInt32 value; - SInt32 minimum; - SInt32 maximum; - ControlHandle outControl; -#ifndef CreateRelevanceBarControl - PyMac_PRECHECK(CreateRelevanceBarControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&lll", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - &value, - &minimum, - &maximum)) - return NULL; - _err = CreateRelevanceBarControl(window, - &boundsRect, - value, - minimum, - maximum, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateLittleArrowsControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - SInt32 value; - SInt32 minimum; - SInt32 maximum; - SInt32 increment; - ControlHandle outControl; -#ifndef CreateLittleArrowsControl - PyMac_PRECHECK(CreateLittleArrowsControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&llll", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - &value, - &minimum, - &maximum, - &increment)) - return NULL; - _err = CreateLittleArrowsControl(window, - &boundsRect, - value, - minimum, - maximum, - increment, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateChasingArrowsControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - ControlHandle outControl; -#ifndef CreateChasingArrowsControl - PyMac_PRECHECK(CreateChasingArrowsControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect)) - return NULL; - _err = CreateChasingArrowsControl(window, - &boundsRect, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateSeparatorControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - ControlHandle outControl; -#ifndef CreateSeparatorControl - PyMac_PRECHECK(CreateSeparatorControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect)) - return NULL; - _err = CreateSeparatorControl(window, - &boundsRect, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateGroupBoxControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - CFStringRef title; - Boolean primary; - ControlHandle outControl; -#ifndef CreateGroupBoxControl - PyMac_PRECHECK(CreateGroupBoxControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&b", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - CFStringRefObj_Convert, &title, - &primary)) - return NULL; - _err = CreateGroupBoxControl(window, - &boundsRect, - title, - primary, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateCheckGroupBoxControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - CFStringRef title; - SInt32 initialValue; - Boolean primary; - Boolean autoToggle; - ControlHandle outControl; -#ifndef CreateCheckGroupBoxControl - PyMac_PRECHECK(CreateCheckGroupBoxControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&lbb", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - CFStringRefObj_Convert, &title, - &initialValue, - &primary, - &autoToggle)) - return NULL; - _err = CreateCheckGroupBoxControl(window, - &boundsRect, - title, - initialValue, - primary, - autoToggle, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreatePopupGroupBoxControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - CFStringRef title; - Boolean primary; - SInt16 menuID; - Boolean variableWidth; - SInt16 titleWidth; - SInt16 titleJustification; - Style titleStyle; - ControlHandle outControl; -#ifndef CreatePopupGroupBoxControl - PyMac_PRECHECK(CreatePopupGroupBoxControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&bhbhhb", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - CFStringRefObj_Convert, &title, - &primary, - &menuID, - &variableWidth, - &titleWidth, - &titleJustification, - &titleStyle)) - return NULL; - _err = CreatePopupGroupBoxControl(window, - &boundsRect, - title, - primary, - menuID, - variableWidth, - titleWidth, - titleJustification, - titleStyle, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateImageWellControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - ControlButtonContentInfo info; - ControlHandle outControl; -#ifndef CreateImageWellControl - PyMac_PRECHECK(CreateImageWellControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - ControlButtonContentInfo_Convert, &info)) - return NULL; - _err = CreateImageWellControl(window, - &boundsRect, - &info, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreatePopupArrowControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - UInt16 orientation; - UInt16 size; - ControlHandle outControl; -#ifndef CreatePopupArrowControl - PyMac_PRECHECK(CreatePopupArrowControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&HH", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - &orientation, - &size)) - return NULL; - _err = CreatePopupArrowControl(window, - &boundsRect, - orientation, - size, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreatePlacardControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - ControlHandle outControl; -#ifndef CreatePlacardControl - PyMac_PRECHECK(CreatePlacardControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect)) - return NULL; - _err = CreatePlacardControl(window, - &boundsRect, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateClockControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - UInt16 clockType; - UInt32 clockFlags; - ControlHandle outControl; -#ifndef CreateClockControl - PyMac_PRECHECK(CreateClockControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&Hl", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - &clockType, - &clockFlags)) - return NULL; - _err = CreateClockControl(window, - &boundsRect, - clockType, - clockFlags, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateUserPaneControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - UInt32 features; - ControlHandle outControl; -#ifndef CreateUserPaneControl - PyMac_PRECHECK(CreateUserPaneControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - &features)) - return NULL; - _err = CreateUserPaneControl(window, - &boundsRect, - features, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateEditTextControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - CFStringRef text; - Boolean isPassword; - Boolean useInlineInput; - ControlFontStyleRec style; - ControlHandle outControl; -#ifndef CreateEditTextControl - PyMac_PRECHECK(CreateEditTextControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&bbO&", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - CFStringRefObj_Convert, &text, - &isPassword, - &useInlineInput, - ControlFontStyle_Convert, &style)) - return NULL; - _err = CreateEditTextControl(window, - &boundsRect, - text, - isPassword, - useInlineInput, - &style, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateStaticTextControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - CFStringRef text; - ControlFontStyleRec style; - ControlHandle outControl; -#ifndef CreateStaticTextControl - PyMac_PRECHECK(CreateStaticTextControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - CFStringRefObj_Convert, &text, - ControlFontStyle_Convert, &style)) - return NULL; - _err = CreateStaticTextControl(window, - &boundsRect, - text, - &style, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreatePictureControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - ControlButtonContentInfo content; - Boolean dontTrack; - ControlHandle outControl; -#ifndef CreatePictureControl - PyMac_PRECHECK(CreatePictureControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&b", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - ControlButtonContentInfo_Convert, &content, - &dontTrack)) - return NULL; - _err = CreatePictureControl(window, - &boundsRect, - &content, - dontTrack, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateIconControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - Rect inBoundsRect; - ControlButtonContentInfo inIconContent; - Boolean inDontTrack; - ControlHandle outControl; -#ifndef CreateIconControl - PyMac_PRECHECK(CreateIconControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&b", - WinObj_Convert, &inWindow, - PyMac_GetRect, &inBoundsRect, - ControlButtonContentInfo_Convert, &inIconContent, - &inDontTrack)) - return NULL; - _err = CreateIconControl(inWindow, - &inBoundsRect, - &inIconContent, - inDontTrack, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateWindowHeaderControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - Boolean isListHeader; - ControlHandle outControl; -#ifndef CreateWindowHeaderControl - PyMac_PRECHECK(CreateWindowHeaderControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&b", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - &isListHeader)) - return NULL; - _err = CreateWindowHeaderControl(window, - &boundsRect, - isListHeader, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreatePushButtonControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - CFStringRef title; - ControlHandle outControl; -#ifndef CreatePushButtonControl - PyMac_PRECHECK(CreatePushButtonControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - CFStringRefObj_Convert, &title)) - return NULL; - _err = CreatePushButtonControl(window, - &boundsRect, - title, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreatePushButtonWithIconControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - CFStringRef title; - ControlButtonContentInfo icon; - UInt16 iconAlignment; - ControlHandle outControl; -#ifndef CreatePushButtonWithIconControl - PyMac_PRECHECK(CreatePushButtonWithIconControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&H", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - CFStringRefObj_Convert, &title, - ControlButtonContentInfo_Convert, &icon, - &iconAlignment)) - return NULL; - _err = CreatePushButtonWithIconControl(window, - &boundsRect, - title, - &icon, - iconAlignment, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateRadioButtonControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - CFStringRef title; - SInt32 initialValue; - Boolean autoToggle; - ControlHandle outControl; -#ifndef CreateRadioButtonControl - PyMac_PRECHECK(CreateRadioButtonControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&lb", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - CFStringRefObj_Convert, &title, - &initialValue, - &autoToggle)) - return NULL; - _err = CreateRadioButtonControl(window, - &boundsRect, - title, - initialValue, - autoToggle, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateCheckBoxControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - CFStringRef title; - SInt32 initialValue; - Boolean autoToggle; - ControlHandle outControl; -#ifndef CreateCheckBoxControl - PyMac_PRECHECK(CreateCheckBoxControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&lb", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - CFStringRefObj_Convert, &title, - &initialValue, - &autoToggle)) - return NULL; - _err = CreateCheckBoxControl(window, - &boundsRect, - title, - initialValue, - autoToggle, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateScrollBarControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - SInt32 value; - SInt32 minimum; - SInt32 maximum; - SInt32 viewSize; - Boolean liveTracking; - PyObject* liveTrackingProc; - UniversalProcPtr c_callback; - ControlHandle outControl; -#ifndef CreateScrollBarControl - PyMac_PRECHECK(CreateScrollBarControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&llllbO", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - &value, - &minimum, - &maximum, - &viewSize, - &liveTracking, - &liveTrackingProc)) - return NULL; - _err = CreateScrollBarControl(window, - &boundsRect, - value, - minimum, - maximum, - viewSize, - liveTracking, - myactionproc_upp, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - setcallback(_res, kMyControlActionProcTag, liveTrackingProc, &c_callback); - return _res; -} - -static PyObject *Ctl_CreatePopupButtonControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - CFStringRef title; - SInt16 menuID; - Boolean variableWidth; - SInt16 titleWidth; - SInt16 titleJustification; - Style titleStyle; - ControlHandle outControl; -#ifndef CreatePopupButtonControl - PyMac_PRECHECK(CreatePopupButtonControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&hbhhb", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - CFStringRefObj_Convert, &title, - &menuID, - &variableWidth, - &titleWidth, - &titleJustification, - &titleStyle)) - return NULL; - _err = CreatePopupButtonControl(window, - &boundsRect, - title, - menuID, - variableWidth, - titleWidth, - titleJustification, - titleStyle, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateRadioGroupControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - ControlHandle outControl; -#ifndef CreateRadioGroupControl - PyMac_PRECHECK(CreateRadioGroupControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect)) - return NULL; - _err = CreateRadioGroupControl(window, - &boundsRect, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateScrollingTextBoxControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - SInt16 contentResID; - Boolean autoScroll; - UInt32 delayBeforeAutoScroll; - UInt32 delayBetweenAutoScroll; - UInt16 autoScrollAmount; - ControlHandle outControl; -#ifndef CreateScrollingTextBoxControl - PyMac_PRECHECK(CreateScrollingTextBoxControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hbllH", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - &contentResID, - &autoScroll, - &delayBeforeAutoScroll, - &delayBetweenAutoScroll, - &autoScrollAmount)) - return NULL; - _err = CreateScrollingTextBoxControl(window, - &boundsRect, - contentResID, - autoScroll, - delayBeforeAutoScroll, - delayBetweenAutoScroll, - autoScrollAmount, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateDisclosureButtonControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - Rect inBoundsRect; - SInt32 inValue; - Boolean inAutoToggles; - ControlHandle outControl; -#ifndef CreateDisclosureButtonControl - PyMac_PRECHECK(CreateDisclosureButtonControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&lb", - WinObj_Convert, &inWindow, - PyMac_GetRect, &inBoundsRect, - &inValue, - &inAutoToggles)) - return NULL; - _err = CreateDisclosureButtonControl(inWindow, - &inBoundsRect, - inValue, - inAutoToggles, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateRoundButtonControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inWindow; - Rect inBoundsRect; - SInt16 inSize; - ControlButtonContentInfo inContent; - ControlHandle outControl; -#ifndef CreateRoundButtonControl - PyMac_PRECHECK(CreateRoundButtonControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hO&", - WinObj_Convert, &inWindow, - PyMac_GetRect, &inBoundsRect, - &inSize, - ControlButtonContentInfo_Convert, &inContent)) - return NULL; - _err = CreateRoundButtonControl(inWindow, - &inBoundsRect, - inSize, - &inContent, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateDataBrowserControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - OSType style; - ControlHandle outControl; -#ifndef CreateDataBrowserControl - PyMac_PRECHECK(CreateDataBrowserControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - PyMac_GetOSType, &style)) - return NULL; - _err = CreateDataBrowserControl(window, - &boundsRect, - style, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_CreateEditUnicodeTextControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - CFStringRef text; - Boolean isPassword; - ControlFontStyleRec style; - ControlHandle outControl; -#ifndef CreateEditUnicodeTextControl - PyMac_PRECHECK(CreateEditUnicodeTextControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&bO&", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - CFStringRefObj_Convert, &text, - &isPassword, - ControlFontStyle_Convert, &style)) - return NULL; - _err = CreateEditUnicodeTextControl(window, - &boundsRect, - text, - isPassword, - &style, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *Ctl_FindControlUnderMouse(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ControlHandle _rv; - Point inWhere; - WindowPtr inWindow; - SInt16 outPart; -#ifndef FindControlUnderMouse - PyMac_PRECHECK(FindControlUnderMouse); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &inWhere, - WinObj_Convert, &inWindow)) - return NULL; - _rv = FindControlUnderMouse(inWhere, - inWindow, - &outPart); - _res = Py_BuildValue("O&h", - CtlObj_WhichControl, _rv, - outPart); - return _res; -} - -static PyObject *Ctl_as_Control(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ControlHandle _rv; - Handle h; -#ifndef as_Control - PyMac_PRECHECK(as_Control); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &h)) - return NULL; - _rv = as_Control(h); - _res = Py_BuildValue("O&", - CtlObj_New, _rv); - return _res; -} - -static PyObject *Ctl_CreateTabsControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr window; - Rect boundsRect; - UInt16 size; - UInt16 direction; - int i; - UInt16 numTabs; - ControlTabEntry tabArray[MAXTABS]; - ControlHandle outControl; - PyObject *tabArrayObj, *tabEntry; - -#ifndef CreateTabsControl - PyMac_PRECHECK(CreateTabsControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&HHO", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - &size, - &direction, - &tabArrayObj)) - return NULL; - - i = PySequence_Length(tabArrayObj); - if (i == -1) - return NULL; - if (i > MAXTABS) { - PyErr_SetString(Ctl_Error, "Too many tabs"); - return NULL; - } - numTabs = i; - for (i=0; i (ControlHandle _rv)")}, - {"GetNewControl", (PyCFunction)Ctl_GetNewControl, 1, - PyDoc_STR("(SInt16 resourceID, WindowPtr owningWindow) -> (ControlHandle _rv)")}, - {"DrawControls", (PyCFunction)Ctl_DrawControls, 1, - PyDoc_STR("(WindowPtr theWindow) -> None")}, - {"UpdateControls", (PyCFunction)Ctl_UpdateControls, 1, - PyDoc_STR("(WindowPtr inWindow, RgnHandle inUpdateRegion) -> None")}, - {"FindControl", (PyCFunction)Ctl_FindControl, 1, - PyDoc_STR("(Point testPoint, WindowPtr theWindow) -> (ControlPartCode _rv, ControlHandle theControl)")}, - {"IdleControls", (PyCFunction)Ctl_IdleControls, 1, - PyDoc_STR("(WindowPtr inWindow) -> None")}, - {"GetControlByID", (PyCFunction)Ctl_GetControlByID, 1, - PyDoc_STR("(WindowPtr inWindow, ControlID inID) -> (ControlHandle outControl)")}, - {"DumpControlHierarchy", (PyCFunction)Ctl_DumpControlHierarchy, 1, - PyDoc_STR("(WindowPtr inWindow, FSSpec inDumpFile) -> None")}, - {"CreateRootControl", (PyCFunction)Ctl_CreateRootControl, 1, - PyDoc_STR("(WindowPtr inWindow) -> (ControlHandle outControl)")}, - {"GetRootControl", (PyCFunction)Ctl_GetRootControl, 1, - PyDoc_STR("(WindowPtr inWindow) -> (ControlHandle outControl)")}, - {"GetKeyboardFocus", (PyCFunction)Ctl_GetKeyboardFocus, 1, - PyDoc_STR("(WindowPtr inWindow) -> (ControlHandle outControl)")}, - {"SetKeyboardFocus", (PyCFunction)Ctl_SetKeyboardFocus, 1, - PyDoc_STR("(WindowPtr inWindow, ControlHandle inControl, ControlFocusPart inPart) -> None")}, - {"AdvanceKeyboardFocus", (PyCFunction)Ctl_AdvanceKeyboardFocus, 1, - PyDoc_STR("(WindowPtr inWindow) -> None")}, - {"ReverseKeyboardFocus", (PyCFunction)Ctl_ReverseKeyboardFocus, 1, - PyDoc_STR("(WindowPtr inWindow) -> None")}, - {"ClearKeyboardFocus", (PyCFunction)Ctl_ClearKeyboardFocus, 1, - PyDoc_STR("(WindowPtr inWindow) -> None")}, - {"SetAutomaticControlDragTrackingEnabledForWindow", (PyCFunction)Ctl_SetAutomaticControlDragTrackingEnabledForWindow, 1, - PyDoc_STR("(WindowPtr inWindow, Boolean inTracks) -> None")}, - {"IsAutomaticControlDragTrackingEnabledForWindow", (PyCFunction)Ctl_IsAutomaticControlDragTrackingEnabledForWindow, 1, - PyDoc_STR("(WindowPtr inWindow) -> (Boolean outTracks)")}, - {"CreateBevelButtonControl", (PyCFunction)Ctl_CreateBevelButtonControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, CFStringRef title, UInt16 thickness, UInt16 behavior, ControlButtonContentInfo info, SInt16 menuID, UInt16 menuBehavior, UInt16 menuPlacement) -> (ControlHandle outControl)")}, - {"CreateSliderControl", (PyCFunction)Ctl_CreateSliderControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, SInt32 value, SInt32 minimum, SInt32 maximum, UInt16 orientation, UInt16 numTickMarks, Boolean liveTracking, PyObject* liveTrackingProc) -> (ControlHandle outControl)")}, - {"CreateDisclosureTriangleControl", (PyCFunction)Ctl_CreateDisclosureTriangleControl, 1, - PyDoc_STR("(WindowPtr inWindow, Rect inBoundsRect, UInt16 inOrientation, CFStringRef inTitle, SInt32 inInitialValue, Boolean inDrawTitle, Boolean inAutoToggles) -> (ControlHandle outControl)")}, - {"CreateProgressBarControl", (PyCFunction)Ctl_CreateProgressBarControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, SInt32 value, SInt32 minimum, SInt32 maximum, Boolean indeterminate) -> (ControlHandle outControl)")}, - {"CreateRelevanceBarControl", (PyCFunction)Ctl_CreateRelevanceBarControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, SInt32 value, SInt32 minimum, SInt32 maximum) -> (ControlHandle outControl)")}, - {"CreateLittleArrowsControl", (PyCFunction)Ctl_CreateLittleArrowsControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, SInt32 value, SInt32 minimum, SInt32 maximum, SInt32 increment) -> (ControlHandle outControl)")}, - {"CreateChasingArrowsControl", (PyCFunction)Ctl_CreateChasingArrowsControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect) -> (ControlHandle outControl)")}, - {"CreateSeparatorControl", (PyCFunction)Ctl_CreateSeparatorControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect) -> (ControlHandle outControl)")}, - {"CreateGroupBoxControl", (PyCFunction)Ctl_CreateGroupBoxControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, CFStringRef title, Boolean primary) -> (ControlHandle outControl)")}, - {"CreateCheckGroupBoxControl", (PyCFunction)Ctl_CreateCheckGroupBoxControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, CFStringRef title, SInt32 initialValue, Boolean primary, Boolean autoToggle) -> (ControlHandle outControl)")}, - {"CreatePopupGroupBoxControl", (PyCFunction)Ctl_CreatePopupGroupBoxControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, CFStringRef title, Boolean primary, SInt16 menuID, Boolean variableWidth, SInt16 titleWidth, SInt16 titleJustification, Style titleStyle) -> (ControlHandle outControl)")}, - {"CreateImageWellControl", (PyCFunction)Ctl_CreateImageWellControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, ControlButtonContentInfo info) -> (ControlHandle outControl)")}, - {"CreatePopupArrowControl", (PyCFunction)Ctl_CreatePopupArrowControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, UInt16 orientation, UInt16 size) -> (ControlHandle outControl)")}, - {"CreatePlacardControl", (PyCFunction)Ctl_CreatePlacardControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect) -> (ControlHandle outControl)")}, - {"CreateClockControl", (PyCFunction)Ctl_CreateClockControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, UInt16 clockType, UInt32 clockFlags) -> (ControlHandle outControl)")}, - {"CreateUserPaneControl", (PyCFunction)Ctl_CreateUserPaneControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, UInt32 features) -> (ControlHandle outControl)")}, - {"CreateEditTextControl", (PyCFunction)Ctl_CreateEditTextControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, CFStringRef text, Boolean isPassword, Boolean useInlineInput, ControlFontStyleRec style) -> (ControlHandle outControl)")}, - {"CreateStaticTextControl", (PyCFunction)Ctl_CreateStaticTextControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, CFStringRef text, ControlFontStyleRec style) -> (ControlHandle outControl)")}, - {"CreatePictureControl", (PyCFunction)Ctl_CreatePictureControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, ControlButtonContentInfo content, Boolean dontTrack) -> (ControlHandle outControl)")}, - {"CreateIconControl", (PyCFunction)Ctl_CreateIconControl, 1, - PyDoc_STR("(WindowPtr inWindow, Rect inBoundsRect, ControlButtonContentInfo inIconContent, Boolean inDontTrack) -> (ControlHandle outControl)")}, - {"CreateWindowHeaderControl", (PyCFunction)Ctl_CreateWindowHeaderControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, Boolean isListHeader) -> (ControlHandle outControl)")}, - {"CreatePushButtonControl", (PyCFunction)Ctl_CreatePushButtonControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, CFStringRef title) -> (ControlHandle outControl)")}, - {"CreatePushButtonWithIconControl", (PyCFunction)Ctl_CreatePushButtonWithIconControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, CFStringRef title, ControlButtonContentInfo icon, UInt16 iconAlignment) -> (ControlHandle outControl)")}, - {"CreateRadioButtonControl", (PyCFunction)Ctl_CreateRadioButtonControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, CFStringRef title, SInt32 initialValue, Boolean autoToggle) -> (ControlHandle outControl)")}, - {"CreateCheckBoxControl", (PyCFunction)Ctl_CreateCheckBoxControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, CFStringRef title, SInt32 initialValue, Boolean autoToggle) -> (ControlHandle outControl)")}, - {"CreateScrollBarControl", (PyCFunction)Ctl_CreateScrollBarControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, SInt32 value, SInt32 minimum, SInt32 maximum, SInt32 viewSize, Boolean liveTracking, PyObject* liveTrackingProc) -> (ControlHandle outControl)")}, - {"CreatePopupButtonControl", (PyCFunction)Ctl_CreatePopupButtonControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, CFStringRef title, SInt16 menuID, Boolean variableWidth, SInt16 titleWidth, SInt16 titleJustification, Style titleStyle) -> (ControlHandle outControl)")}, - {"CreateRadioGroupControl", (PyCFunction)Ctl_CreateRadioGroupControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect) -> (ControlHandle outControl)")}, - {"CreateScrollingTextBoxControl", (PyCFunction)Ctl_CreateScrollingTextBoxControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, SInt16 contentResID, Boolean autoScroll, UInt32 delayBeforeAutoScroll, UInt32 delayBetweenAutoScroll, UInt16 autoScrollAmount) -> (ControlHandle outControl)")}, - {"CreateDisclosureButtonControl", (PyCFunction)Ctl_CreateDisclosureButtonControl, 1, - PyDoc_STR("(WindowPtr inWindow, Rect inBoundsRect, SInt32 inValue, Boolean inAutoToggles) -> (ControlHandle outControl)")}, - {"CreateRoundButtonControl", (PyCFunction)Ctl_CreateRoundButtonControl, 1, - PyDoc_STR("(WindowPtr inWindow, Rect inBoundsRect, SInt16 inSize, ControlButtonContentInfo inContent) -> (ControlHandle outControl)")}, - {"CreateDataBrowserControl", (PyCFunction)Ctl_CreateDataBrowserControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, OSType style) -> (ControlHandle outControl)")}, - {"CreateEditUnicodeTextControl", (PyCFunction)Ctl_CreateEditUnicodeTextControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, CFStringRef text, Boolean isPassword, ControlFontStyleRec style) -> (ControlHandle outControl)")}, - {"FindControlUnderMouse", (PyCFunction)Ctl_FindControlUnderMouse, 1, - PyDoc_STR("(Point inWhere, WindowPtr inWindow) -> (ControlHandle _rv, SInt16 outPart)")}, - {"as_Control", (PyCFunction)Ctl_as_Control, 1, - PyDoc_STR("(Handle h) -> (ControlHandle _rv)")}, - {"CreateTabsControl", (PyCFunction)Ctl_CreateTabsControl, 1, - PyDoc_STR("(WindowPtr window, Rect boundsRect, UInt16 size, UInt16 direction, ControlTabEntry tabArray) -> (ControlHandle outControl)")}, - {NULL, NULL, 0} -}; - - - -static PyObject * -CtlObj_NewUnmanaged(ControlHandle itself) -{ - ControlObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - it = PyObject_NEW(ControlObject, &Control_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - it->ob_callbackdict = NULL; - return (PyObject *)it; -} - -static PyObject * -CtlObj_WhichControl(ControlHandle c) -{ - PyObject *it; - - if (c == NULL) - it = Py_None; - else { - it = (PyObject *) GetControlReference(c); - /* - ** If the refcon is zero or doesn't point back to the Python object - ** the control is not ours. Return a temporary object. - */ - if (it == NULL || ((ControlObject *)it)->ob_itself != c) - return CtlObj_NewUnmanaged(c); - } - Py_INCREF(it); - return it; -} - -static int -settrackfunc(PyObject *obj) -{ - if (tracker) { - PyErr_SetString(Ctl_Error, "Tracker function in use"); - return 0; - } - tracker = obj; - Py_INCREF(tracker); - return 1; -} - -static void -clrtrackfunc(void) -{ - Py_XDECREF(tracker); - tracker = 0; -} - -static pascal void -mytracker(ControlHandle ctl, short part) -{ - PyObject *args, *rv=0; - - args = Py_BuildValue("(O&i)", CtlObj_WhichControl, ctl, (int)part); - if (args && tracker) { - rv = PyEval_CallObject(tracker, args); - Py_DECREF(args); - } - if (rv) - Py_DECREF(rv); - else { - PySys_WriteStderr("TrackControl or HandleControlClick: exception in tracker function\n"); - PyErr_Print(); - } -} - -static int -setcallback(PyObject *myself, OSType which, PyObject *callback, UniversalProcPtr *uppp) -{ - ControlObject *self = (ControlObject *)myself; - char keybuf[9]; - - if ( which == kMyControlActionProcTag ) - *uppp = (UniversalProcPtr)myactionproc_upp; - else if ( which == kControlUserPaneKeyDownProcTag ) - *uppp = (UniversalProcPtr)mykeydownproc_upp; - else if ( which == kControlUserPaneFocusProcTag ) - *uppp = (UniversalProcPtr)myfocusproc_upp; - else if ( which == kControlUserPaneDrawProcTag ) - *uppp = (UniversalProcPtr)mydrawproc_upp; - else if ( which == kControlUserPaneIdleProcTag ) - *uppp = (UniversalProcPtr)myidleproc_upp; - else if ( which == kControlUserPaneHitTestProcTag ) - *uppp = (UniversalProcPtr)myhittestproc_upp; - else if ( which == kControlUserPaneTrackingProcTag ) - *uppp = (UniversalProcPtr)mytrackingproc_upp; - else - return -1; - /* Only now do we test for clearing of the callback: */ - if ( callback == Py_None ) - *uppp = NULL; - /* Create the dict if it doesn't exist yet (so we don't get such a dict for every control) */ - if ( self->ob_callbackdict == NULL ) - if ( (self->ob_callbackdict = PyDict_New()) == NULL ) - return -1; - /* And store the Python callback */ - sprintf(keybuf, "%x", (unsigned)which); - if (PyDict_SetItemString(self->ob_callbackdict, keybuf, callback) < 0) - return -1; - return 0; -} - -static PyObject * -callcallback(ControlObject *self, OSType which, PyObject *arglist) -{ - char keybuf[9]; - PyObject *func, *rv; - - sprintf(keybuf, "%x", (unsigned)which); - if ( self->ob_callbackdict == NULL || - (func = PyDict_GetItemString(self->ob_callbackdict, keybuf)) == NULL ) { - PySys_WriteStderr("Control callback %x without callback object\n", (unsigned)which); - return NULL; - } - rv = PyEval_CallObject(func, arglist); - if ( rv == NULL ) { - PySys_WriteStderr("Exception in control callback %x handler\n", (unsigned)which); - PyErr_Print(); - } - return rv; -} - -static pascal void -myactionproc(ControlHandle control, SInt16 part) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - arglist = Py_BuildValue("Oh", ctl_obj, part); - rv = callcallback(ctl_obj, kMyControlActionProcTag, arglist); - Py_XDECREF(arglist); - Py_XDECREF(rv); -} - -static pascal ControlPartCode -mykeydownproc(ControlHandle control, SInt16 keyCode, SInt16 charCode, SInt16 modifiers) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - short c_rv = 0; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - arglist = Py_BuildValue("Ohhh", ctl_obj, keyCode, charCode, modifiers); - rv = callcallback(ctl_obj, kControlUserPaneKeyDownProcTag, arglist); - Py_XDECREF(arglist); - if ( rv ) - if (!PyArg_Parse(rv, "h", &c_rv)) - PyErr_Clear(); - Py_XDECREF(rv); - return (ControlPartCode)c_rv; -} - -static pascal ControlPartCode -myfocusproc(ControlHandle control, ControlPartCode part) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - short c_rv = kControlFocusNoPart; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - arglist = Py_BuildValue("Oh", ctl_obj, part); - rv = callcallback(ctl_obj, kControlUserPaneFocusProcTag, arglist); - Py_XDECREF(arglist); - if ( rv ) - if (!PyArg_Parse(rv, "h", &c_rv)) - PyErr_Clear(); - Py_XDECREF(rv); - return (ControlPartCode)c_rv; -} - -static pascal void -mydrawproc(ControlHandle control, SInt16 part) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - arglist = Py_BuildValue("Oh", ctl_obj, part); - rv = callcallback(ctl_obj, kControlUserPaneDrawProcTag, arglist); - Py_XDECREF(arglist); - Py_XDECREF(rv); -} - -static pascal void -myidleproc(ControlHandle control) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - arglist = Py_BuildValue("O", ctl_obj); - rv = callcallback(ctl_obj, kControlUserPaneIdleProcTag, arglist); - Py_XDECREF(arglist); - Py_XDECREF(rv); -} - -static pascal ControlPartCode -myhittestproc(ControlHandle control, Point where) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - short c_rv = -1; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - arglist = Py_BuildValue("OO&", ctl_obj, PyMac_BuildPoint, where); - rv = callcallback(ctl_obj, kControlUserPaneHitTestProcTag, arglist); - Py_XDECREF(arglist); - /* Ignore errors, nothing we can do about them */ - if ( rv ) - if (!PyArg_Parse(rv, "h", &c_rv)) - PyErr_Clear(); - Py_XDECREF(rv); - return (ControlPartCode)c_rv; -} - -static pascal ControlPartCode -mytrackingproc(ControlHandle control, Point startPt, ControlActionUPP actionProc) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - short c_rv = -1; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - /* We cannot pass the actionProc without lots of work */ - arglist = Py_BuildValue("OO&", ctl_obj, PyMac_BuildPoint, startPt); - rv = callcallback(ctl_obj, kControlUserPaneTrackingProcTag, arglist); - Py_XDECREF(arglist); - if ( rv ) - if (!PyArg_Parse(rv, "h", &c_rv)) - PyErr_Clear(); - Py_XDECREF(rv); - return (ControlPartCode)c_rv; -} - -#else /* __LP64__ */ - -static PyMethodDef Ctl_methods[] = { - {NULL, NULL, 0} -}; - -#endif /* __LP64__ */ - -void init_Ctl(void) -{ - PyObject *m; - -#ifndef __LP64__ - PyObject *d; - - mytracker_upp = NewControlActionUPP(mytracker); - myactionproc_upp = NewControlActionUPP(myactionproc); - mykeydownproc_upp = NewControlUserPaneKeyDownUPP(mykeydownproc); - myfocusproc_upp = NewControlUserPaneFocusUPP(myfocusproc); - mydrawproc_upp = NewControlUserPaneDrawUPP(mydrawproc); - myidleproc_upp = NewControlUserPaneIdleUPP(myidleproc); - myhittestproc_upp = NewControlUserPaneHitTestUPP(myhittestproc); - mytrackingproc_upp = NewControlUserPaneTrackingUPP(mytrackingproc); - PyMac_INIT_TOOLBOX_OBJECT_NEW(ControlHandle, CtlObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ControlHandle, CtlObj_Convert); -#endif /* !__LP64__ */ - - m = Py_InitModule("_Ctl", Ctl_methods); - -#ifndef __LP64__ - d = PyModule_GetDict(m); - Ctl_Error = PyMac_GetOSErrException(); - if (Ctl_Error == NULL || - PyDict_SetItemString(d, "Error", Ctl_Error) != 0) - return; - Control_Type.ob_type = &PyType_Type; - if (PyType_Ready(&Control_Type) < 0) return; - Py_INCREF(&Control_Type); - PyModule_AddObject(m, "Control", (PyObject *)&Control_Type); - /* Backward-compatible name */ - Py_INCREF(&Control_Type); - PyModule_AddObject(m, "ControlType", (PyObject *)&Control_Type); -#endif /* !__LP64__ */ -} - -/* ======================== End module _Ctl ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/ctl/ctledit.py b/project/jni/python/src/Mac/Modules/ctl/ctledit.py deleted file mode 100644 index fdd9712c3..000000000 --- a/project/jni/python/src/Mac/Modules/ctl/ctledit.py +++ /dev/null @@ -1,45 +0,0 @@ -# FindControlUnderMouse() returns an existing control, not a new one, -# so create this one by hand. -f = Function(ExistingControlHandle, 'FindControlUnderMouse', - (Point, 'inWhere', InMode), - (WindowRef, 'inWindow', InMode), - (SInt16, 'outPart', OutMode), -) -functions.append(f) - -f = Function(ControlHandle, 'as_Control', - (Handle, 'h', InMode)) -functions.append(f) - -f = Method(Handle, 'as_Resource', (ControlHandle, 'ctl', InMode)) -methods.append(f) - -f = Method(void, 'GetControlRect', (ControlHandle, 'ctl', InMode), (Rect, 'rect', OutMode)) -methods.append(f) - -DisposeControl_body = """ - if (!PyArg_ParseTuple(_args, "")) - return NULL; - if ( _self->ob_itself ) { - SetControlReference(_self->ob_itself, (long)0); /* Make it forget about us */ - DisposeControl(_self->ob_itself); - _self->ob_itself = NULL; - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -""" - -f = ManualGenerator("DisposeControl", DisposeControl_body) -f.docstring = lambda : "() -> None" - -methods.append(f) - -# All CreateXxxXxxControl() functions return a new object in an output -# parameter; these should however be managed by us (we're creating them -# after all), so set the type to ControlRef. -for f in functions: - if f.name.startswith("Create"): - v = f.argumentList[-1] - if v.type == ExistingControlHandle: - v.type = ControlRef diff --git a/project/jni/python/src/Mac/Modules/ctl/ctlscan.py b/project/jni/python/src/Mac/Modules/ctl/ctlscan.py deleted file mode 100644 index 9cb30d15c..000000000 --- a/project/jni/python/src/Mac/Modules/ctl/ctlscan.py +++ /dev/null @@ -1,171 +0,0 @@ -# Scan , generating ctlgen.py. -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) - -from scantools import Scanner - -def main(): -# input = "Controls.h" # Universal Headers < 3.3 - input = ["Controls.h", "ControlDefinitions.h"] # Universal Headers >= 3.3 - output = "ctlgen.py" - defsoutput = TOOLBOXDIR + "Controls.py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now doing 'import ctlsupport' ===" - import ctlsupport - print "=== Done. It's up to you to compile Ctlmodule.c ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t in ("ControlHandle", "ControlRef") and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - self.defsfile.write("from Carbon.TextEdit import *\n") - self.defsfile.write("from Carbon.QuickDraw import *\n") - self.defsfile.write("from Carbon.Dragconst import *\n") - self.defsfile.write("from Carbon.CarbonEvents import *\n") - self.defsfile.write("from Carbon.Appearance import *\n") - self.defsfile.write("kDataBrowserItemAnyState = -1\n") - self.defsfile.write("kControlBevelButtonCenterPopupGlyphTag = -1\n") - self.defsfile.write("kDataBrowserClientPropertyFlagsMask = 0xFF000000\n") - self.defsfile.write("\n") - - def makeblacklistnames(self): - return [ - 'FindControlUnderMouse', # Generated manually, returns an existing control, not a new one. - 'DisposeControl', # Generated manually - 'KillControls', # Implied by close of dialog - 'SetCtlAction', - 'TrackControl', # Generated manually - 'HandleControlClick', # Generated manually - 'SetControlData', # Generated manually - 'GetControlData', # Generated manually - 'kControlBevelButtonCenterPopupGlyphTag', # Constant with funny definition - 'kDataBrowserClientPropertyFlagsMask', # ditto - 'kDataBrowserItemAnyState', # and ditto - # The following are unavailable for static 68k (appearance manager) -## 'GetBevelButtonMenuValue', -## 'SetBevelButtonMenuValue', -## 'GetBevelButtonMenuHandle', -## 'SetBevelButtonTransform', - 'SetBevelButtonGraphicAlignment', - 'SetBevelButtonTextAlignment', - 'SetBevelButtonTextPlacement', -## 'SetImageWellTransform', -## 'GetTabContentRect', -## 'SetTabEnabled', -## 'SetDisclosureTriangleLastValue', -## # Unavailable in CW Pro 3 libraries -## 'SetUpControlTextColor', -## # Unavailable in Jack's CW Pro 5.1 libraries -## 'GetControlRegion', -## 'RemoveControlProperty', -## 'IsValidControlHandle', -## 'SetControl32BitMinimum', -## 'GetControl32BitMinimum', -## 'SetControl32BitMaximum', -## 'GetControl32BitMaximum', -## 'SetControl32BitValue', -## 'GetControl32BitValue', -## 'SetControlViewSize', -## 'GetControlViewSize', - # Generally Bad News - 'GetControlProperty', - 'SetControlProperty', - 'GetControlPropertySize', - 'SendControlMessage', # Parameter changed from long to void* from UH3.3 to UH3.4 - 'CreateTabsControl', # wrote manually - 'GetControlAction', # too much effort for too little usefulness - - # too lazy for now - 'GetImageWellContentInfo', - 'GetBevelButtonContentInfo', - # OS8 only - 'GetAuxiliaryControlRecord', - 'SetControlColor', - ] - - def makeblacklisttypes(self): - return [ - 'ProcPtr', -# 'ControlActionUPP', - 'Ptr', - 'ControlDefSpec', # Don't know how to do this yet - 'ControlDefSpec_ptr', # ditto - 'Collection', # Ditto - # not-yet-supported stuff in Universal Headers 3.4: - 'ControlColorUPP', - 'ControlKind', # XXX easy: 2-tuple containing 2 OSType's -# 'ControlTabEntry_ptr', # XXX needed for tabs -# 'ControlButtonContentInfoPtr', -# 'ControlButtonContentInfo', # XXX ugh: a union -# 'ControlButtonContentInfo_ptr', # XXX ugh: a union - 'ListDefSpec_ptr', # XXX see _Listmodule.c, tricky but possible - 'DataBrowserItemID_ptr', # XXX array of UInt32, for BrowserView - 'DataBrowserItemUPP', - 'DataBrowserItemDataRef', # XXX void * - 'DataBrowserCallbacks', # difficult struct - 'DataBrowserCallbacks_ptr', - 'DataBrowserCustomCallbacks', - 'DataBrowserCustomCallbacks_ptr', -## 'DataBrowserTableViewColumnDesc', -## 'DataBrowserListViewColumnDesc', - 'CFDataRef', - 'DataBrowserListViewHeaderDesc', # difficult struct - ] - - def makerepairinstructions(self): - return [ - ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")], - [("InBuffer", "*", "*")]), - - ([("void", "*", "OutMode"), ("long", "*", "InMode"), - ("long", "*", "OutMode")], - [("VarVarOutBuffer", "*", "InOutMode")]), - -## # For TrackControl -## ([("ProcPtr", "actionProc", "InMode")], -## [("FakeType('(ControlActionUPP)0')", "*", "*")]), -## ([("ControlActionUPP", "actionProc", "InMode")], -## [("FakeType('(ControlActionUPP)0')", "*", "*")]), - - # For GetControlTitle - ([('Str255', 'title', 'InMode')], - [('Str255', 'title', 'OutMode')]), - - ([("ControlHandle", "*", "OutMode")], - [("ExistingControlHandle", "*", "*")]), - ([("ControlRef", "*", "OutMode")], # Ditto, for Universal Headers - [("ExistingControlHandle", "*", "*")]), - - ([("Rect_ptr", "*", "ReturnMode")], # GetControlBounds - [("void", "*", "ReturnMode")]), - - ([("DataBrowserListViewColumnDesc", "*", "OutMode")], - [("DataBrowserListViewColumnDesc", "*", "InMode")]), - - ([("ControlButtonContentInfoPtr", 'outContent', "InMode")], - [("ControlButtonContentInfoPtr", '*', "OutMode")]), - - ([("ControlButtonContentInfo", '*', "OutMode")], - [("ControlButtonContentInfo", '*', "InMode")]), - - ([("ControlActionUPP", 'liveTrackingProc', "InMode")], - [("ControlActionUPPNewControl", 'liveTrackingProc', "InMode")]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/ctl/ctlsupport.py b/project/jni/python/src/Mac/Modules/ctl/ctlsupport.py deleted file mode 100644 index d354d9427..000000000 --- a/project/jni/python/src/Mac/Modules/ctl/ctlsupport.py +++ /dev/null @@ -1,826 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'Controls.h' # The Apple header file -MODNAME = '_Ctl' # The name of the module -OBJECTNAME = 'Control' # The basic name of the objects used here - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Ctl' # The prefix for module-wide routines -OBJECTTYPE = OBJECTNAME + 'Handle' # The C type used to represent them -OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects - -ControlHandle = OpaqueByValueType(OBJECTTYPE, OBJECTPREFIX) -ControlRef = ControlHandle -ExistingControlHandle = OpaqueByValueType(OBJECTTYPE, "CtlObj_WhichControl", "BUG") - -RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") -CCTabHandle = OpaqueByValueType("CCTabHandle", "ResObj") -AuxCtlHandle = OpaqueByValueType("AuxCtlHandle", "ResObj") -ControlPartCode = Type("ControlPartCode", "h") -DragConstraint = Type("DragConstraint", "H") -ControlVariant = Type("ControlVariant", "h") -IconTransformType = Type("IconTransformType", "h") -EventModifiers = Type("EventModifiers", "H") -ClickActivationResult = Type("ClickActivationResult", "l") -ControlButtonGraphicAlignment = Type("ControlButtonGraphicAlignment", "h") -ControlButtonTextAlignment = Type("ControlButtonTextAlignment", "h") -ControlButtonTextPlacement = Type("ControlButtonTextPlacement", "h") -ControlContentType = Type("ControlContentType", "h") -ControlFocusPart = Type("ControlFocusPart", "h") - -ControlFontStyleRec = OpaqueType('ControlFontStyleRec', 'ControlFontStyle') -ControlFontStyleRec_ptr = ControlFontStyleRec -ControlID = OpaqueType('ControlID', 'PyControlID') -ControlID_ptr = ControlID - -DragTrackingMessage = Type("DragTrackingMessage", "h") -DragReference = OpaqueByValueType("DragReference", "DragObj") - -CFStringRef = OpaqueByValueType("CFStringRef", "CFStringRefObj") -CFMutableStringRef = OpaqueByValueType("CFMutableStringRef", "CFMutableStringRefObj") -CFDataRef = OpaqueByValueType("CFDataRef", "CFDataRefObj") - -ControlTabSize = UInt16 -ControlTabDirection = UInt16 -ControlPopupArrowOrientation = UInt16 -ControlPopupArrowSize = UInt16 -ControlClockType = UInt16 -ControlClockFlags = UInt32 -ControlRoundButtonSize = SInt16 -DataBrowserViewStyle = OSType -DataBrowserItemID = UInt32 -DataBrowserEditCommand = UInt32 -DataBrowserSelectionAnchorDirection = UInt32 -DataBrowserItemState = UInt32 -DataBrowserPropertyID = UInt32 -DataBrowserRevealOptions = UInt8 -DataBrowserSortOrder = UInt16 -DataBrowserSelectionFlags = UInt32 -DataBrowserPropertyFlags = UInt32 -DataBrowserPropertyPart = OSType -DataBrowserTableViewColumnID = DataBrowserPropertyID -#DataBrowserTableViewColumnDesc = DataBrowserPropertyDesc -DataBrowserTableViewHiliteStyle = UInt32 -DataBrowserTableViewRowIndex = UInt32 -DataBrowserTableViewColumnIndex = UInt32 -DataBrowserPropertyType = OSType -ControlDisclosureTriangleOrientation = UInt16 - -DataBrowserTableViewColumnDesc = OpaqueType("DataBrowserTableViewColumnDesc", - "DataBrowserTableViewColumnDesc") -DataBrowserListViewColumnDesc = OpaqueType("DataBrowserListViewColumnDesc", - "DataBrowserListViewColumnDesc") -ControlButtonContentInfo = OpaqueType("ControlButtonContentInfo", - "ControlButtonContentInfo") -ControlButtonContentInfoPtr = ControlButtonContentInfo_ptr = ControlButtonContentInfo - -ControlTabEntry_ptr = OpaqueType("ControlTabEntry", "ControlTabEntry") - -ControlBevelThickness = UInt16 -ControlBevelButtonBehavior = UInt16 -ControlBevelButtonMenuBehavior = UInt16 -ControlBevelButtonMenuPlacement = UInt16 -ControlPushButtonIconAlignment = UInt16 - -class ControlActionDefinition(Type): - def declare(self, name): - Output("%s %s;", self.typeName, name) - Output("UniversalProcPtr c_callback;") - def passInput(self, name): - return "myactionproc_upp" - def cleanup(self, name): - Output("setcallback((PyObject*)_self, kMyControlActionProcTag, actionProc, &c_callback);") - -class ControlActionDefinitionNewControl(ControlActionDefinition): - def cleanup(self, name): - Output("setcallback(_res, kMyControlActionProcTag, liveTrackingProc, &c_callback);") - -ControlActionUPP = ControlActionDefinition("PyObject*", "O") -ControlActionUPPNewControl = ControlActionDefinitionNewControl("PyObject*", "O") -ControlSliderOrientation = UInt16 - - -includestuff = includestuff + """ -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_CtlObj_New(ControlHandle); -extern int _CtlObj_Convert(PyObject *, ControlHandle *); - -#define CtlObj_New _CtlObj_New -#define CtlObj_Convert _CtlObj_Convert -#endif - -static PyObject *CtlObj_WhichControl(ControlHandle); - -#define as_Control(h) ((ControlHandle)h) -#define as_Resource(ctl) ((Handle)ctl) -#define GetControlRect(ctl, rectp) GetControlBounds(ctl, rectp) - -#define MAXTABS 32 /* maximum number of tabs that we support in a tabs control */ -/* -** Parse/generate ControlFontStyleRec records -*/ -#if 0 /* Not needed */ -static PyObject * -ControlFontStyle_New(ControlFontStyleRec *itself) -{ - - return Py_BuildValue("hhhhhhO&O&", itself->flags, itself->font, - itself->size, itself->style, itself->mode, itself->just, - QdRGB_New, &itself->foreColor, QdRGB_New, &itself->backColor); -} -#endif - -static int -ControlFontStyle_Convert(PyObject *v, ControlFontStyleRec *itself) -{ - return PyArg_Parse(v, "(hhhhhhO&O&)", &itself->flags, - &itself->font, &itself->size, &itself->style, &itself->mode, - &itself->just, QdRGB_Convert, &itself->foreColor, - QdRGB_Convert, &itself->backColor); -} - -/* -** Parse/generate ControlID records -*/ -static PyObject * -PyControlID_New(ControlID *itself) -{ - - return Py_BuildValue("O&l", PyMac_BuildOSType, itself->signature, itself->id); -} - -static int -PyControlID_Convert(PyObject *v, ControlID *itself) -{ - return PyArg_Parse(v, "(O&l)", PyMac_GetOSType, &itself->signature, &itself->id); -} - -/* -** generate DataBrowserListViewColumnDesc records -*/ -static int -DataBrowserTableViewColumnDesc_Convert(PyObject *v, DataBrowserTableViewColumnDesc *itself) -{ - return PyArg_Parse(v, "(lO&l)", - &itself->propertyID, - PyMac_GetOSType, &itself->propertyType, - &itself->propertyFlags); -} - -static int -ControlButtonContentInfo_Convert(PyObject *v, ControlButtonContentInfo *itself) -{ - return PyArg_Parse(v, "(hO&)", - &itself->contentType, - OptResObj_Convert, &itself->u.iconSuite); -} - -static int -DataBrowserListViewHeaderDesc_Convert(PyObject *v, DataBrowserListViewHeaderDesc *itself) -{ - itself->version = kDataBrowserListViewLatestHeaderDesc; - return PyArg_Parse(v, "(HHhO&HO&O&)", - &itself->minimumWidth, - &itself->maximumWidth, - &itself->titleOffset, - CFStringRefObj_Convert, &itself->titleString, - &itself->initialOrder, - ControlFontStyle_Convert, &itself->btnFontStyle, - ControlButtonContentInfo_Convert, &itself->btnContentInfo); -} - -static int -DataBrowserListViewColumnDesc_Convert(PyObject *v, DataBrowserListViewColumnDesc *itself) -{ - return PyArg_Parse(v, "(O&O&)", - DataBrowserTableViewColumnDesc_Convert, &itself->propertyDesc, - DataBrowserListViewHeaderDesc_Convert, &itself->headerBtnDesc); -} - -/* TrackControl and HandleControlClick callback support */ -#define kMyControlActionProcTag 'ACTN' /* not an official tag, only for internal use */ -static PyObject *tracker; -static ControlActionUPP mytracker_upp; -static ControlActionUPP myactionproc_upp; -static ControlUserPaneKeyDownUPP mykeydownproc_upp; -static ControlUserPaneFocusUPP myfocusproc_upp; -static ControlUserPaneDrawUPP mydrawproc_upp; -static ControlUserPaneIdleUPP myidleproc_upp; -static ControlUserPaneHitTestUPP myhittestproc_upp; -static ControlUserPaneTrackingUPP mytrackingproc_upp; - -static int settrackfunc(PyObject *); /* forward */ -static void clrtrackfunc(void); /* forward */ -static int setcallback(PyObject *, OSType, PyObject *, UniversalProcPtr *); -""" - -finalstuff = finalstuff + """ -static PyObject * -CtlObj_NewUnmanaged(ControlHandle itself) -{ - ControlObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - it = PyObject_NEW(ControlObject, &Control_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - it->ob_callbackdict = NULL; - return (PyObject *)it; -} - -static PyObject * -CtlObj_WhichControl(ControlHandle c) -{ - PyObject *it; - - if (c == NULL) - it = Py_None; - else { - it = (PyObject *) GetControlReference(c); - /* - ** If the refcon is zero or doesn't point back to the Python object - ** the control is not ours. Return a temporary object. - */ - if (it == NULL || ((ControlObject *)it)->ob_itself != c) - return CtlObj_NewUnmanaged(c); - } - Py_INCREF(it); - return it; -} - -static int -settrackfunc(PyObject *obj) -{ - if (tracker) { - PyErr_SetString(Ctl_Error, "Tracker function in use"); - return 0; - } - tracker = obj; - Py_INCREF(tracker); - return 1; -} - -static void -clrtrackfunc(void) -{ - Py_XDECREF(tracker); - tracker = 0; -} - -static pascal void -mytracker(ControlHandle ctl, short part) -{ - PyObject *args, *rv=0; - - args = Py_BuildValue("(O&i)", CtlObj_WhichControl, ctl, (int)part); - if (args && tracker) { - rv = PyEval_CallObject(tracker, args); - Py_DECREF(args); - } - if (rv) - Py_DECREF(rv); - else { - PySys_WriteStderr("TrackControl or HandleControlClick: exception in tracker function\\n"); - PyErr_Print(); - } -} - -static int -setcallback(PyObject *myself, OSType which, PyObject *callback, UniversalProcPtr *uppp) -{ - ControlObject *self = (ControlObject *)myself; - char keybuf[9]; - - if ( which == kMyControlActionProcTag ) - *uppp = (UniversalProcPtr)myactionproc_upp; - else if ( which == kControlUserPaneKeyDownProcTag ) - *uppp = (UniversalProcPtr)mykeydownproc_upp; - else if ( which == kControlUserPaneFocusProcTag ) - *uppp = (UniversalProcPtr)myfocusproc_upp; - else if ( which == kControlUserPaneDrawProcTag ) - *uppp = (UniversalProcPtr)mydrawproc_upp; - else if ( which == kControlUserPaneIdleProcTag ) - *uppp = (UniversalProcPtr)myidleproc_upp; - else if ( which == kControlUserPaneHitTestProcTag ) - *uppp = (UniversalProcPtr)myhittestproc_upp; - else if ( which == kControlUserPaneTrackingProcTag ) - *uppp = (UniversalProcPtr)mytrackingproc_upp; - else - return -1; - /* Only now do we test for clearing of the callback: */ - if ( callback == Py_None ) - *uppp = NULL; - /* Create the dict if it doesn't exist yet (so we don't get such a dict for every control) */ - if ( self->ob_callbackdict == NULL ) - if ( (self->ob_callbackdict = PyDict_New()) == NULL ) - return -1; - /* And store the Python callback */ - sprintf(keybuf, "%x", (unsigned)which); - if (PyDict_SetItemString(self->ob_callbackdict, keybuf, callback) < 0) - return -1; - return 0; -} - -static PyObject * -callcallback(ControlObject *self, OSType which, PyObject *arglist) -{ - char keybuf[9]; - PyObject *func, *rv; - - sprintf(keybuf, "%x", (unsigned)which); - if ( self->ob_callbackdict == NULL || - (func = PyDict_GetItemString(self->ob_callbackdict, keybuf)) == NULL ) { - PySys_WriteStderr("Control callback %x without callback object\\n", (unsigned)which); - return NULL; - } - rv = PyEval_CallObject(func, arglist); - if ( rv == NULL ) { - PySys_WriteStderr("Exception in control callback %x handler\\n", (unsigned)which); - PyErr_Print(); - } - return rv; -} - -static pascal void -myactionproc(ControlHandle control, SInt16 part) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - arglist = Py_BuildValue("Oh", ctl_obj, part); - rv = callcallback(ctl_obj, kMyControlActionProcTag, arglist); - Py_XDECREF(arglist); - Py_XDECREF(rv); -} - -static pascal ControlPartCode -mykeydownproc(ControlHandle control, SInt16 keyCode, SInt16 charCode, SInt16 modifiers) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - short c_rv = 0; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - arglist = Py_BuildValue("Ohhh", ctl_obj, keyCode, charCode, modifiers); - rv = callcallback(ctl_obj, kControlUserPaneKeyDownProcTag, arglist); - Py_XDECREF(arglist); - if ( rv ) - if (!PyArg_Parse(rv, "h", &c_rv)) - PyErr_Clear(); - Py_XDECREF(rv); - return (ControlPartCode)c_rv; -} - -static pascal ControlPartCode -myfocusproc(ControlHandle control, ControlPartCode part) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - short c_rv = kControlFocusNoPart; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - arglist = Py_BuildValue("Oh", ctl_obj, part); - rv = callcallback(ctl_obj, kControlUserPaneFocusProcTag, arglist); - Py_XDECREF(arglist); - if ( rv ) - if (!PyArg_Parse(rv, "h", &c_rv)) - PyErr_Clear(); - Py_XDECREF(rv); - return (ControlPartCode)c_rv; -} - -static pascal void -mydrawproc(ControlHandle control, SInt16 part) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - arglist = Py_BuildValue("Oh", ctl_obj, part); - rv = callcallback(ctl_obj, kControlUserPaneDrawProcTag, arglist); - Py_XDECREF(arglist); - Py_XDECREF(rv); -} - -static pascal void -myidleproc(ControlHandle control) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - arglist = Py_BuildValue("O", ctl_obj); - rv = callcallback(ctl_obj, kControlUserPaneIdleProcTag, arglist); - Py_XDECREF(arglist); - Py_XDECREF(rv); -} - -static pascal ControlPartCode -myhittestproc(ControlHandle control, Point where) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - short c_rv = -1; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - arglist = Py_BuildValue("OO&", ctl_obj, PyMac_BuildPoint, where); - rv = callcallback(ctl_obj, kControlUserPaneHitTestProcTag, arglist); - Py_XDECREF(arglist); - /* Ignore errors, nothing we can do about them */ - if ( rv ) - if (!PyArg_Parse(rv, "h", &c_rv)) - PyErr_Clear(); - Py_XDECREF(rv); - return (ControlPartCode)c_rv; -} - -static pascal ControlPartCode -mytrackingproc(ControlHandle control, Point startPt, ControlActionUPP actionProc) -{ - ControlObject *ctl_obj; - PyObject *arglist, *rv; - short c_rv = -1; - - ctl_obj = (ControlObject *)CtlObj_WhichControl(control); - /* We cannot pass the actionProc without lots of work */ - arglist = Py_BuildValue("OO&", ctl_obj, PyMac_BuildPoint, startPt); - rv = callcallback(ctl_obj, kControlUserPaneTrackingProcTag, arglist); - Py_XDECREF(arglist); - if ( rv ) - if (!PyArg_Parse(rv, "h", &c_rv)) - PyErr_Clear(); - Py_XDECREF(rv); - return (ControlPartCode)c_rv; -} -""" - -initstuff = initstuff + """ -mytracker_upp = NewControlActionUPP(mytracker); -myactionproc_upp = NewControlActionUPP(myactionproc); -mykeydownproc_upp = NewControlUserPaneKeyDownUPP(mykeydownproc); -myfocusproc_upp = NewControlUserPaneFocusUPP(myfocusproc); -mydrawproc_upp = NewControlUserPaneDrawUPP(mydrawproc); -myidleproc_upp = NewControlUserPaneIdleUPP(myidleproc); -myhittestproc_upp = NewControlUserPaneHitTestUPP(myhittestproc); -mytrackingproc_upp = NewControlUserPaneTrackingUPP(mytrackingproc); -PyMac_INIT_TOOLBOX_OBJECT_NEW(ControlHandle, CtlObj_New); -PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ControlHandle, CtlObj_Convert); -""" - -class MyObjectDefinition(PEP253Mixin, ObjectIdentityMixin, GlobalObjectDefinition): - def outputStructMembers(self): - GlobalObjectDefinition.outputStructMembers(self) - Output("PyObject *ob_callbackdict;") - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") - def outputInitStructMembers(self): - GlobalObjectDefinition.outputInitStructMembers(self) - Output("SetControlReference(itself, (long)it);") - Output("it->ob_callbackdict = NULL;") - def outputCleanupStructMembers(self): - Output("Py_XDECREF(self->ob_callbackdict);") - Output("if (self->ob_itself)SetControlReference(self->ob_itself, (long)0); /* Make it forget about us */") - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE) -module.addobject(object) - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -Method = OSErrWeakLinkMethodGenerator - -# Create and populate the lists -functions = [] -methods = [] -execfile(INPUTFILE) -execfile('ctledit.py') - -# add the populated lists to the generator groups -for f in functions: module.add(f) -for f in methods: object.add(f) - -# Manual generator for TrackControl, due to callback ideosyncracies -trackcontrol_body = """ -ControlPartCode _rv; -Point startPoint; -ControlActionUPP upp = 0; -PyObject *callback = 0; - -if (!PyArg_ParseTuple(_args, "O&|O", - PyMac_GetPoint, &startPoint, &callback)) - return NULL; -if (callback && callback != Py_None) { - if (PyInt_Check(callback) && PyInt_AS_LONG(callback) == -1) - upp = (ControlActionUPP)-1; - else { - settrackfunc(callback); - upp = mytracker_upp; - } -} -_rv = TrackControl(_self->ob_itself, - startPoint, - upp); -clrtrackfunc(); -_res = Py_BuildValue("h", - _rv); -return _res; -""" - -f = ManualGenerator("TrackControl", trackcontrol_body); -f.docstring = lambda: "(Point startPoint [,trackercallback]) -> (ControlPartCode _rv)" -object.add(f) - -# CJW - added 5/12/99 -# Manual generator for HandleControlClick, as for TrackControl -handlecontrolclick_body = """ -ControlPartCode _rv; -Point startPoint; -SInt16 modifiers; -ControlActionUPP upp = 0; -PyObject *callback = 0; - -if (!PyArg_ParseTuple(_args, "O&h|O", - PyMac_GetPoint, &startPoint, - &modifiers, - &callback)) - return NULL; -if (callback && callback != Py_None) { - if (PyInt_Check(callback) && PyInt_AS_LONG(callback) == -1) - upp = (ControlActionUPP)-1; - else { - settrackfunc(callback); - upp = mytracker_upp; - } -} -_rv = HandleControlClick(_self->ob_itself, - startPoint, - modifiers, - upp); -clrtrackfunc(); -_res = Py_BuildValue("h", - _rv); -return _res; -""" - -f = ManualGenerator("HandleControlClick", handlecontrolclick_body); -f.docstring = lambda: "(Point startPoint, Integer modifiers, [,trackercallback]) -> (ControlPartCode _rv)" -object.add(f) - -# Manual Generator for SetControlData -setcontroldata_body = """ -OSErr _err; -ControlPartCode inPart; -ResType inTagName; -Size bufferSize; -Ptr buffer; - -if (!PyArg_ParseTuple(_args, "hO&s#", - &inPart, - PyMac_GetOSType, &inTagName, - &buffer, &bufferSize)) - return NULL; - -_err = SetControlData(_self->ob_itself, - inPart, - inTagName, - bufferSize, - buffer); - -if (_err != noErr) - return PyMac_Error(_err); -_res = Py_None; -return _res; -""" - -f = ManualGenerator("SetControlData", setcontroldata_body); -f.docstring = lambda: "(stuff) -> None" -object.add(f) - -# Manual Generator for GetControlData -getcontroldata_body = """ -OSErr _err; -ControlPartCode inPart; -ResType inTagName; -Size bufferSize; -Ptr buffer; -Size outSize; - -if (!PyArg_ParseTuple(_args, "hO&", - &inPart, - PyMac_GetOSType, &inTagName)) - return NULL; - -/* allocate a buffer for the data */ -_err = GetControlDataSize(_self->ob_itself, - inPart, - inTagName, - &bufferSize); -if (_err != noErr) - return PyMac_Error(_err); -buffer = PyMem_NEW(char, bufferSize); -if (buffer == NULL) - return PyErr_NoMemory(); - -_err = GetControlData(_self->ob_itself, - inPart, - inTagName, - bufferSize, - buffer, - &outSize); - -if (_err != noErr) { - PyMem_DEL(buffer); - return PyMac_Error(_err); -} -_res = Py_BuildValue("s#", buffer, outSize); -PyMem_DEL(buffer); -return _res; -""" - -f = ManualGenerator("GetControlData", getcontroldata_body); -f.docstring = lambda: "(part, type) -> String" -object.add(f) - -# Manual Generator for SetControlData_Handle -setcontroldata_handle_body = """ -OSErr _err; -ControlPartCode inPart; -ResType inTagName; -Handle buffer; - -if (!PyArg_ParseTuple(_args, "hO&O&", - &inPart, - PyMac_GetOSType, &inTagName, - OptResObj_Convert, &buffer)) - return NULL; - -_err = SetControlData(_self->ob_itself, - inPart, - inTagName, - sizeof(buffer), - (Ptr)&buffer); - -if (_err != noErr) - return PyMac_Error(_err); -_res = Py_None; -return _res; -""" - -f = ManualGenerator("SetControlData_Handle", setcontroldata_handle_body); -f.docstring = lambda: "(ResObj) -> None" -object.add(f) - -# Manual Generator for GetControlData_Handle -getcontroldata_handle_body = """ -OSErr _err; -ControlPartCode inPart; -ResType inTagName; -Size bufferSize; -Handle hdl; - -if (!PyArg_ParseTuple(_args, "hO&", - &inPart, - PyMac_GetOSType, &inTagName)) - return NULL; - -/* Check it is handle-sized */ -_err = GetControlDataSize(_self->ob_itself, - inPart, - inTagName, - &bufferSize); -if (_err != noErr) - return PyMac_Error(_err); -if (bufferSize != sizeof(Handle)) { - PyErr_SetString(Ctl_Error, "GetControlDataSize() != sizeof(Handle)"); - return NULL; -} - -_err = GetControlData(_self->ob_itself, - inPart, - inTagName, - sizeof(Handle), - (Ptr)&hdl, - &bufferSize); - -if (_err != noErr) { - return PyMac_Error(_err); -} -_res = Py_BuildValue("O&", OptResObj_New, hdl); -return _res; -""" - -f = ManualGenerator("GetControlData_Handle", getcontroldata_handle_body); -f.docstring = lambda: "(part, type) -> ResObj" -object.add(f) - -# Manual Generator for SetControlData_Callback -setcontroldata_callback_body = """ -OSErr _err; -ControlPartCode inPart; -ResType inTagName; -PyObject *callback; -UniversalProcPtr c_callback; - -if (!PyArg_ParseTuple(_args, "hO&O", - &inPart, - PyMac_GetOSType, &inTagName, - &callback)) - return NULL; - -if ( setcallback((PyObject *)_self, inTagName, callback, &c_callback) < 0 ) - return NULL; -_err = SetControlData(_self->ob_itself, - inPart, - inTagName, - sizeof(c_callback), - (Ptr)&c_callback); - -if (_err != noErr) - return PyMac_Error(_err); -_res = Py_None; -return _res; -""" - -f = ManualGenerator("SetControlData_Callback", setcontroldata_callback_body); -f.docstring = lambda: "(callbackfunc) -> None" -object.add(f) - - - -createtabscontrol_body = """\ -OSStatus _err; -WindowPtr window; -Rect boundsRect; -UInt16 size; -UInt16 direction; -int i; -UInt16 numTabs; -ControlTabEntry tabArray[MAXTABS]; -ControlHandle outControl; -PyObject *tabArrayObj, *tabEntry; - -#ifndef CreateTabsControl -PyMac_PRECHECK(CreateTabsControl); -#endif -if (!PyArg_ParseTuple(_args, "O&O&HHO", - WinObj_Convert, &window, - PyMac_GetRect, &boundsRect, - &size, - &direction, - &tabArrayObj)) - return NULL; - -i = PySequence_Length(tabArrayObj); -if (i == -1) - return NULL; -if (i > MAXTABS) { - PyErr_SetString(Ctl_Error, "Too many tabs"); - return NULL; -} -numTabs = i; -for (i=0; i (ControlHandle outControl)" -module.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/dlg/_Dlgmodule.c b/project/jni/python/src/Mac/Modules/dlg/_Dlgmodule.c deleted file mode 100644 index 9afa4772d..000000000 --- a/project/jni/python/src/Mac/Modules/dlg/_Dlgmodule.c +++ /dev/null @@ -1,1609 +0,0 @@ - -/* ========================== Module _Dlg =========================== */ - -#include "Python.h" - -#ifndef __LP64__ - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_DlgObj_New(DialogRef); -extern PyObject *_DlgObj_WhichDialog(DialogRef); -extern int _DlgObj_Convert(PyObject *, DialogRef *); - -#define DlgObj_New _DlgObj_New -#define DlgObj_WhichDialog _DlgObj_WhichDialog -#define DlgObj_Convert _DlgObj_Convert -#endif - -/* XXX Shouldn't this be a stack? */ -static PyObject *Dlg_FilterProc_callback = NULL; - -static pascal Boolean Dlg_UnivFilterProc(DialogPtr dialog, - EventRecord *event, - short *itemHit) -{ - Boolean rv; - PyObject *args, *res; - PyObject *callback = Dlg_FilterProc_callback; - if (callback == NULL) - return 0; /* Default behavior */ - Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */ - args = Py_BuildValue("O&O&", DlgObj_WhichDialog, dialog, PyMac_BuildEventRecord, event); - if (args == NULL) - res = NULL; - else { - res = PyEval_CallObject(callback, args); - Py_DECREF(args); - } - if (res == NULL) { - PySys_WriteStderr("Exception in Dialog Filter\n"); - PyErr_Print(); - *itemHit = -1; /* Fake return item */ - return 1; /* We handled it */ - } - else { - Dlg_FilterProc_callback = callback; - if (PyInt_Check(res)) { - *itemHit = PyInt_AsLong(res); - rv = 1; - } - else - rv = PyObject_IsTrue(res); - } - Py_DECREF(res); - return rv; -} - -static ModalFilterUPP -Dlg_PassFilterProc(PyObject *callback) -{ - PyObject *tmp = Dlg_FilterProc_callback; - static ModalFilterUPP UnivFilterUpp = NULL; - - Dlg_FilterProc_callback = NULL; - if (callback == Py_None) { - Py_XDECREF(tmp); - return NULL; - } - Py_INCREF(callback); - Dlg_FilterProc_callback = callback; - Py_XDECREF(tmp); - if ( UnivFilterUpp == NULL ) - UnivFilterUpp = NewModalFilterUPP(&Dlg_UnivFilterProc); - return UnivFilterUpp; -} - -static PyObject *Dlg_UserItemProc_callback = NULL; - -static pascal void Dlg_UnivUserItemProc(DialogPtr dialog, - short item) -{ - PyObject *args, *res; - - if (Dlg_UserItemProc_callback == NULL) - return; /* Default behavior */ - Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */ - args = Py_BuildValue("O&h", DlgObj_WhichDialog, dialog, item); - if (args == NULL) - res = NULL; - else { - res = PyEval_CallObject(Dlg_UserItemProc_callback, args); - Py_DECREF(args); - } - if (res == NULL) { - PySys_WriteStderr("Exception in Dialog UserItem proc\n"); - PyErr_Print(); - } - Py_XDECREF(res); - return; -} - -#if 0 -/* -** Treating DialogObjects as WindowObjects is (I think) illegal under Carbon. -** However, as they are still identical under MacOS9 Carbon this is a problem, even -** if we neatly call GetDialogWindow() at the right places: there's one refcon field -** and it points to the DialogObject, so WinObj_WhichWindow will smartly return the -** dialog object, and therefore we still don't have a WindowObject. -** I'll leave the chaining code in place for now, with this comment to warn the -** unsuspecting victims (i.e. me, probably, in a few weeks:-) -*/ -extern PyMethodChain WinObj_chain; -#endif - -static PyObject *Dlg_Error; - -/* ----------------------- Object type Dialog ----------------------- */ - -PyTypeObject Dialog_Type; - -#define DlgObj_Check(x) ((x)->ob_type == &Dialog_Type || PyObject_TypeCheck((x), &Dialog_Type)) - -typedef struct DialogObject { - PyObject_HEAD - DialogPtr ob_itself; -} DialogObject; - -PyObject *DlgObj_New(DialogPtr itself) -{ - DialogObject *it; - if (itself == NULL) { Py_INCREF(Py_None); return Py_None; } - it = PyObject_NEW(DialogObject, &Dialog_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - SetWRefCon(GetDialogWindow(itself), (long)it); - return (PyObject *)it; -} - -int DlgObj_Convert(PyObject *v, DialogPtr *p_itself) -{ - if (v == Py_None) { *p_itself = NULL; return 1; } - if (PyInt_Check(v)) { *p_itself = (DialogPtr)PyInt_AsLong(v); - return 1; } - if (!DlgObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "Dialog required"); - return 0; - } - *p_itself = ((DialogObject *)v)->ob_itself; - return 1; -} - -static void DlgObj_dealloc(DialogObject *self) -{ - DisposeDialog(self->ob_itself); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *DlgObj_DrawDialog(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef DrawDialog - PyMac_PRECHECK(DrawDialog); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - DrawDialog(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_UpdateDialog(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle updateRgn; -#ifndef UpdateDialog - PyMac_PRECHECK(UpdateDialog); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &updateRgn)) - return NULL; - UpdateDialog(_self->ob_itself, - updateRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_HideDialogItem(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogItemIndex itemNo; -#ifndef HideDialogItem - PyMac_PRECHECK(HideDialogItem); -#endif - if (!PyArg_ParseTuple(_args, "h", - &itemNo)) - return NULL; - HideDialogItem(_self->ob_itself, - itemNo); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_ShowDialogItem(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogItemIndex itemNo; -#ifndef ShowDialogItem - PyMac_PRECHECK(ShowDialogItem); -#endif - if (!PyArg_ParseTuple(_args, "h", - &itemNo)) - return NULL; - ShowDialogItem(_self->ob_itself, - itemNo); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_FindDialogItem(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogItemIndexZeroBased _rv; - Point thePt; -#ifndef FindDialogItem - PyMac_PRECHECK(FindDialogItem); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &thePt)) - return NULL; - _rv = FindDialogItem(_self->ob_itself, - thePt); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *DlgObj_DialogCut(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef DialogCut - PyMac_PRECHECK(DialogCut); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - DialogCut(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_DialogPaste(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef DialogPaste - PyMac_PRECHECK(DialogPaste); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - DialogPaste(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_DialogCopy(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef DialogCopy - PyMac_PRECHECK(DialogCopy); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - DialogCopy(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_DialogDelete(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef DialogDelete - PyMac_PRECHECK(DialogDelete); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - DialogDelete(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_GetDialogItem(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogItemIndex itemNo; - DialogItemType itemType; - Handle item; - Rect box; -#ifndef GetDialogItem - PyMac_PRECHECK(GetDialogItem); -#endif - if (!PyArg_ParseTuple(_args, "h", - &itemNo)) - return NULL; - GetDialogItem(_self->ob_itself, - itemNo, - &itemType, - &item, - &box); - _res = Py_BuildValue("hO&O&", - itemType, - OptResObj_New, item, - PyMac_BuildRect, &box); - return _res; -} - -static PyObject *DlgObj_SetDialogItem(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogItemIndex itemNo; - DialogItemType itemType; - Handle item; - Rect box; -#ifndef SetDialogItem - PyMac_PRECHECK(SetDialogItem); -#endif - if (!PyArg_ParseTuple(_args, "hhO&O&", - &itemNo, - &itemType, - ResObj_Convert, &item, - PyMac_GetRect, &box)) - return NULL; - SetDialogItem(_self->ob_itself, - itemNo, - itemType, - item, - &box); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_SelectDialogItemText(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogItemIndex itemNo; - SInt16 strtSel; - SInt16 endSel; -#ifndef SelectDialogItemText - PyMac_PRECHECK(SelectDialogItemText); -#endif - if (!PyArg_ParseTuple(_args, "hhh", - &itemNo, - &strtSel, - &endSel)) - return NULL; - SelectDialogItemText(_self->ob_itself, - itemNo, - strtSel, - endSel); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_AppendDITL(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle theHandle; - DITLMethod method; -#ifndef AppendDITL - PyMac_PRECHECK(AppendDITL); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - ResObj_Convert, &theHandle, - &method)) - return NULL; - AppendDITL(_self->ob_itself, - theHandle, - method); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_CountDITL(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogItemIndex _rv; -#ifndef CountDITL - PyMac_PRECHECK(CountDITL); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CountDITL(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *DlgObj_ShortenDITL(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogItemIndex numberItems; -#ifndef ShortenDITL - PyMac_PRECHECK(ShortenDITL); -#endif - if (!PyArg_ParseTuple(_args, "h", - &numberItems)) - return NULL; - ShortenDITL(_self->ob_itself, - numberItems); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_InsertDialogItem(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - DialogItemIndex afterItem; - DialogItemType itemType; - Handle itemHandle; - Rect box; -#ifndef InsertDialogItem - PyMac_PRECHECK(InsertDialogItem); -#endif - if (!PyArg_ParseTuple(_args, "hhO&O&", - &afterItem, - &itemType, - ResObj_Convert, &itemHandle, - PyMac_GetRect, &box)) - return NULL; - _err = InsertDialogItem(_self->ob_itself, - afterItem, - itemType, - itemHandle, - &box); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_RemoveDialogItems(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - DialogItemIndex itemNo; - DialogItemIndex amountToRemove; - Boolean disposeItemData; -#ifndef RemoveDialogItems - PyMac_PRECHECK(RemoveDialogItems); -#endif - if (!PyArg_ParseTuple(_args, "hhb", - &itemNo, - &amountToRemove, - &disposeItemData)) - return NULL; - _err = RemoveDialogItems(_self->ob_itself, - itemNo, - amountToRemove, - disposeItemData); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_StdFilterProc(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - EventRecord event; - DialogItemIndex itemHit; -#ifndef StdFilterProc - PyMac_PRECHECK(StdFilterProc); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetEventRecord, &event, - &itemHit)) - return NULL; - _rv = StdFilterProc(_self->ob_itself, - &event, - &itemHit); - _res = Py_BuildValue("bO&h", - _rv, - PyMac_BuildEventRecord, &event, - itemHit); - return _res; -} - -static PyObject *DlgObj_SetDialogDefaultItem(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DialogItemIndex newItem; -#ifndef SetDialogDefaultItem - PyMac_PRECHECK(SetDialogDefaultItem); -#endif - if (!PyArg_ParseTuple(_args, "h", - &newItem)) - return NULL; - _err = SetDialogDefaultItem(_self->ob_itself, - newItem); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_SetDialogCancelItem(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DialogItemIndex newItem; -#ifndef SetDialogCancelItem - PyMac_PRECHECK(SetDialogCancelItem); -#endif - if (!PyArg_ParseTuple(_args, "h", - &newItem)) - return NULL; - _err = SetDialogCancelItem(_self->ob_itself, - newItem); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_SetDialogTracksCursor(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Boolean tracks; -#ifndef SetDialogTracksCursor - PyMac_PRECHECK(SetDialogTracksCursor); -#endif - if (!PyArg_ParseTuple(_args, "b", - &tracks)) - return NULL; - _err = SetDialogTracksCursor(_self->ob_itself, - tracks); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_AutoSizeDialog(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef AutoSizeDialog - PyMac_PRECHECK(AutoSizeDialog); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = AutoSizeDialog(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_GetDialogItemAsControl(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItemNo; - ControlHandle outControl; -#ifndef GetDialogItemAsControl - PyMac_PRECHECK(GetDialogItemAsControl); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inItemNo)) - return NULL; - _err = GetDialogItemAsControl(_self->ob_itself, - inItemNo, - &outControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CtlObj_New, outControl); - return _res; -} - -static PyObject *DlgObj_MoveDialogItem(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItemNo; - SInt16 inHoriz; - SInt16 inVert; -#ifndef MoveDialogItem - PyMac_PRECHECK(MoveDialogItem); -#endif - if (!PyArg_ParseTuple(_args, "hhh", - &inItemNo, - &inHoriz, - &inVert)) - return NULL; - _err = MoveDialogItem(_self->ob_itself, - inItemNo, - inHoriz, - inVert); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_SizeDialogItem(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItemNo; - SInt16 inWidth; - SInt16 inHeight; -#ifndef SizeDialogItem - PyMac_PRECHECK(SizeDialogItem); -#endif - if (!PyArg_ParseTuple(_args, "hhh", - &inItemNo, - &inWidth, - &inHeight)) - return NULL; - _err = SizeDialogItem(_self->ob_itself, - inItemNo, - inWidth, - inHeight); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_AppendDialogItemList(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 ditlID; - DITLMethod method; -#ifndef AppendDialogItemList - PyMac_PRECHECK(AppendDialogItemList); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &ditlID, - &method)) - return NULL; - _err = AppendDialogItemList(_self->ob_itself, - ditlID, - method); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_SetDialogTimeout(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - SInt16 inButtonToPress; - UInt32 inSecondsToWait; -#ifndef SetDialogTimeout - PyMac_PRECHECK(SetDialogTimeout); -#endif - if (!PyArg_ParseTuple(_args, "hl", - &inButtonToPress, - &inSecondsToWait)) - return NULL; - _err = SetDialogTimeout(_self->ob_itself, - inButtonToPress, - inSecondsToWait); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_GetDialogTimeout(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - SInt16 outButtonToPress; - UInt32 outSecondsToWait; - UInt32 outSecondsRemaining; -#ifndef GetDialogTimeout - PyMac_PRECHECK(GetDialogTimeout); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDialogTimeout(_self->ob_itself, - &outButtonToPress, - &outSecondsToWait, - &outSecondsRemaining); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("hll", - outButtonToPress, - outSecondsToWait, - outSecondsRemaining); - return _res; -} - -static PyObject *DlgObj_SetModalDialogEventMask(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - EventMask inMask; -#ifndef SetModalDialogEventMask - PyMac_PRECHECK(SetModalDialogEventMask); -#endif - if (!PyArg_ParseTuple(_args, "H", - &inMask)) - return NULL; - _err = SetModalDialogEventMask(_self->ob_itself, - inMask); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_GetModalDialogEventMask(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - EventMask outMask; -#ifndef GetModalDialogEventMask - PyMac_PRECHECK(GetModalDialogEventMask); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetModalDialogEventMask(_self->ob_itself, - &outMask); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - outMask); - return _res; -} - -static PyObject *DlgObj_GetDialogWindow(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; -#ifndef GetDialogWindow - PyMac_PRECHECK(GetDialogWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetDialogWindow(_self->ob_itself); - _res = Py_BuildValue("O&", - WinObj_New, _rv); - return _res; -} - -static PyObject *DlgObj_GetDialogTextEditHandle(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TEHandle _rv; -#ifndef GetDialogTextEditHandle - PyMac_PRECHECK(GetDialogTextEditHandle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetDialogTextEditHandle(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *DlgObj_GetDialogDefaultItem(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef GetDialogDefaultItem - PyMac_PRECHECK(GetDialogDefaultItem); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetDialogDefaultItem(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *DlgObj_GetDialogCancelItem(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef GetDialogCancelItem - PyMac_PRECHECK(GetDialogCancelItem); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetDialogCancelItem(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *DlgObj_GetDialogKeyboardFocusItem(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef GetDialogKeyboardFocusItem - PyMac_PRECHECK(GetDialogKeyboardFocusItem); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetDialogKeyboardFocusItem(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *DlgObj_SetPortDialogPort(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef SetPortDialogPort - PyMac_PRECHECK(SetPortDialogPort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - SetPortDialogPort(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DlgObj_GetDialogPort(DialogObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGrafPtr _rv; -#ifndef GetDialogPort - PyMac_PRECHECK(GetDialogPort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetDialogPort(_self->ob_itself); - _res = Py_BuildValue("O&", - GrafObj_New, _rv); - return _res; -} - -static PyMethodDef DlgObj_methods[] = { - {"DrawDialog", (PyCFunction)DlgObj_DrawDialog, 1, - PyDoc_STR("() -> None")}, - {"UpdateDialog", (PyCFunction)DlgObj_UpdateDialog, 1, - PyDoc_STR("(RgnHandle updateRgn) -> None")}, - {"HideDialogItem", (PyCFunction)DlgObj_HideDialogItem, 1, - PyDoc_STR("(DialogItemIndex itemNo) -> None")}, - {"ShowDialogItem", (PyCFunction)DlgObj_ShowDialogItem, 1, - PyDoc_STR("(DialogItemIndex itemNo) -> None")}, - {"FindDialogItem", (PyCFunction)DlgObj_FindDialogItem, 1, - PyDoc_STR("(Point thePt) -> (DialogItemIndexZeroBased _rv)")}, - {"DialogCut", (PyCFunction)DlgObj_DialogCut, 1, - PyDoc_STR("() -> None")}, - {"DialogPaste", (PyCFunction)DlgObj_DialogPaste, 1, - PyDoc_STR("() -> None")}, - {"DialogCopy", (PyCFunction)DlgObj_DialogCopy, 1, - PyDoc_STR("() -> None")}, - {"DialogDelete", (PyCFunction)DlgObj_DialogDelete, 1, - PyDoc_STR("() -> None")}, - {"GetDialogItem", (PyCFunction)DlgObj_GetDialogItem, 1, - PyDoc_STR("(DialogItemIndex itemNo) -> (DialogItemType itemType, Handle item, Rect box)")}, - {"SetDialogItem", (PyCFunction)DlgObj_SetDialogItem, 1, - PyDoc_STR("(DialogItemIndex itemNo, DialogItemType itemType, Handle item, Rect box) -> None")}, - {"SelectDialogItemText", (PyCFunction)DlgObj_SelectDialogItemText, 1, - PyDoc_STR("(DialogItemIndex itemNo, SInt16 strtSel, SInt16 endSel) -> None")}, - {"AppendDITL", (PyCFunction)DlgObj_AppendDITL, 1, - PyDoc_STR("(Handle theHandle, DITLMethod method) -> None")}, - {"CountDITL", (PyCFunction)DlgObj_CountDITL, 1, - PyDoc_STR("() -> (DialogItemIndex _rv)")}, - {"ShortenDITL", (PyCFunction)DlgObj_ShortenDITL, 1, - PyDoc_STR("(DialogItemIndex numberItems) -> None")}, - {"InsertDialogItem", (PyCFunction)DlgObj_InsertDialogItem, 1, - PyDoc_STR("(DialogItemIndex afterItem, DialogItemType itemType, Handle itemHandle, Rect box) -> None")}, - {"RemoveDialogItems", (PyCFunction)DlgObj_RemoveDialogItems, 1, - PyDoc_STR("(DialogItemIndex itemNo, DialogItemIndex amountToRemove, Boolean disposeItemData) -> None")}, - {"StdFilterProc", (PyCFunction)DlgObj_StdFilterProc, 1, - PyDoc_STR("(EventRecord event, DialogItemIndex itemHit) -> (Boolean _rv, EventRecord event, DialogItemIndex itemHit)")}, - {"SetDialogDefaultItem", (PyCFunction)DlgObj_SetDialogDefaultItem, 1, - PyDoc_STR("(DialogItemIndex newItem) -> None")}, - {"SetDialogCancelItem", (PyCFunction)DlgObj_SetDialogCancelItem, 1, - PyDoc_STR("(DialogItemIndex newItem) -> None")}, - {"SetDialogTracksCursor", (PyCFunction)DlgObj_SetDialogTracksCursor, 1, - PyDoc_STR("(Boolean tracks) -> None")}, - {"AutoSizeDialog", (PyCFunction)DlgObj_AutoSizeDialog, 1, - PyDoc_STR("() -> None")}, - {"GetDialogItemAsControl", (PyCFunction)DlgObj_GetDialogItemAsControl, 1, - PyDoc_STR("(SInt16 inItemNo) -> (ControlHandle outControl)")}, - {"MoveDialogItem", (PyCFunction)DlgObj_MoveDialogItem, 1, - PyDoc_STR("(SInt16 inItemNo, SInt16 inHoriz, SInt16 inVert) -> None")}, - {"SizeDialogItem", (PyCFunction)DlgObj_SizeDialogItem, 1, - PyDoc_STR("(SInt16 inItemNo, SInt16 inWidth, SInt16 inHeight) -> None")}, - {"AppendDialogItemList", (PyCFunction)DlgObj_AppendDialogItemList, 1, - PyDoc_STR("(SInt16 ditlID, DITLMethod method) -> None")}, - {"SetDialogTimeout", (PyCFunction)DlgObj_SetDialogTimeout, 1, - PyDoc_STR("(SInt16 inButtonToPress, UInt32 inSecondsToWait) -> None")}, - {"GetDialogTimeout", (PyCFunction)DlgObj_GetDialogTimeout, 1, - PyDoc_STR("() -> (SInt16 outButtonToPress, UInt32 outSecondsToWait, UInt32 outSecondsRemaining)")}, - {"SetModalDialogEventMask", (PyCFunction)DlgObj_SetModalDialogEventMask, 1, - PyDoc_STR("(EventMask inMask) -> None")}, - {"GetModalDialogEventMask", (PyCFunction)DlgObj_GetModalDialogEventMask, 1, - PyDoc_STR("() -> (EventMask outMask)")}, - {"GetDialogWindow", (PyCFunction)DlgObj_GetDialogWindow, 1, - PyDoc_STR("() -> (WindowPtr _rv)")}, - {"GetDialogTextEditHandle", (PyCFunction)DlgObj_GetDialogTextEditHandle, 1, - PyDoc_STR("() -> (TEHandle _rv)")}, - {"GetDialogDefaultItem", (PyCFunction)DlgObj_GetDialogDefaultItem, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"GetDialogCancelItem", (PyCFunction)DlgObj_GetDialogCancelItem, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"GetDialogKeyboardFocusItem", (PyCFunction)DlgObj_GetDialogKeyboardFocusItem, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"SetPortDialogPort", (PyCFunction)DlgObj_SetPortDialogPort, 1, - PyDoc_STR("() -> None")}, - {"GetDialogPort", (PyCFunction)DlgObj_GetDialogPort, 1, - PyDoc_STR("() -> (CGrafPtr _rv)")}, - {NULL, NULL, 0} -}; - -#define DlgObj_getsetlist NULL - - -static int DlgObj_compare(DialogObject *self, DialogObject *other) -{ - if ( self->ob_itself > other->ob_itself ) return 1; - if ( self->ob_itself < other->ob_itself ) return -1; - return 0; -} - -#define DlgObj_repr NULL - -static int DlgObj_hash(DialogObject *self) -{ - return (int)self->ob_itself; -} -#define DlgObj_tp_init 0 - -#define DlgObj_tp_alloc PyType_GenericAlloc - -static PyObject *DlgObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - DialogPtr itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, DlgObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((DialogObject *)_self)->ob_itself = itself; - return _self; -} - -#define DlgObj_tp_free PyObject_Del - - -PyTypeObject Dialog_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Dlg.Dialog", /*tp_name*/ - sizeof(DialogObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) DlgObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) DlgObj_compare, /*tp_compare*/ - (reprfunc) DlgObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) DlgObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - DlgObj_methods, /* tp_methods */ - 0, /*tp_members*/ - DlgObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - DlgObj_tp_init, /* tp_init */ - DlgObj_tp_alloc, /* tp_alloc */ - DlgObj_tp_new, /* tp_new */ - DlgObj_tp_free, /* tp_free */ -}; - -/* --------------------- End object type Dialog --------------------- */ - - -static PyObject *Dlg_NewDialog(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogPtr _rv; - Rect boundsRect; - Str255 title; - Boolean visible; - SInt16 procID; - WindowPtr behind; - Boolean goAwayFlag; - SInt32 refCon; - Handle items; -#ifndef NewDialog - PyMac_PRECHECK(NewDialog); -#endif - if (!PyArg_ParseTuple(_args, "O&O&bhO&blO&", - PyMac_GetRect, &boundsRect, - PyMac_GetStr255, title, - &visible, - &procID, - WinObj_Convert, &behind, - &goAwayFlag, - &refCon, - ResObj_Convert, &items)) - return NULL; - _rv = NewDialog((void *)0, - &boundsRect, - title, - visible, - procID, - behind, - goAwayFlag, - refCon, - items); - _res = Py_BuildValue("O&", - DlgObj_New, _rv); - return _res; -} - -static PyObject *Dlg_GetNewDialog(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogPtr _rv; - SInt16 dialogID; - WindowPtr behind; -#ifndef GetNewDialog - PyMac_PRECHECK(GetNewDialog); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &dialogID, - WinObj_Convert, &behind)) - return NULL; - _rv = GetNewDialog(dialogID, - (void *)0, - behind); - _res = Py_BuildValue("O&", - DlgObj_New, _rv); - return _res; -} - -static PyObject *Dlg_NewColorDialog(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogPtr _rv; - Rect boundsRect; - Str255 title; - Boolean visible; - SInt16 procID; - WindowPtr behind; - Boolean goAwayFlag; - SInt32 refCon; - Handle items; -#ifndef NewColorDialog - PyMac_PRECHECK(NewColorDialog); -#endif - if (!PyArg_ParseTuple(_args, "O&O&bhO&blO&", - PyMac_GetRect, &boundsRect, - PyMac_GetStr255, title, - &visible, - &procID, - WinObj_Convert, &behind, - &goAwayFlag, - &refCon, - ResObj_Convert, &items)) - return NULL; - _rv = NewColorDialog((void *)0, - &boundsRect, - title, - visible, - procID, - behind, - goAwayFlag, - refCon, - items); - _res = Py_BuildValue("O&", - DlgObj_New, _rv); - return _res; -} - -static PyObject *Dlg_ModalDialog(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PyObject* modalFilter; - DialogItemIndex itemHit; -#ifndef ModalDialog - PyMac_PRECHECK(ModalDialog); -#endif - if (!PyArg_ParseTuple(_args, "O", - &modalFilter)) - return NULL; - ModalDialog(Dlg_PassFilterProc(modalFilter), - &itemHit); - _res = Py_BuildValue("h", - itemHit); - return _res; -} - -static PyObject *Dlg_IsDialogEvent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - EventRecord theEvent; -#ifndef IsDialogEvent - PyMac_PRECHECK(IsDialogEvent); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetEventRecord, &theEvent)) - return NULL; - _rv = IsDialogEvent(&theEvent); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Dlg_DialogSelect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - EventRecord theEvent; - DialogPtr theDialog; - DialogItemIndex itemHit; -#ifndef DialogSelect - PyMac_PRECHECK(DialogSelect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetEventRecord, &theEvent)) - return NULL; - _rv = DialogSelect(&theEvent, - &theDialog, - &itemHit); - _res = Py_BuildValue("bO&h", - _rv, - DlgObj_WhichDialog, theDialog, - itemHit); - return _res; -} - -static PyObject *Dlg_Alert(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogItemIndex _rv; - SInt16 alertID; - PyObject* modalFilter; -#ifndef Alert - PyMac_PRECHECK(Alert); -#endif - if (!PyArg_ParseTuple(_args, "hO", - &alertID, - &modalFilter)) - return NULL; - _rv = Alert(alertID, - Dlg_PassFilterProc(modalFilter)); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Dlg_StopAlert(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogItemIndex _rv; - SInt16 alertID; - PyObject* modalFilter; -#ifndef StopAlert - PyMac_PRECHECK(StopAlert); -#endif - if (!PyArg_ParseTuple(_args, "hO", - &alertID, - &modalFilter)) - return NULL; - _rv = StopAlert(alertID, - Dlg_PassFilterProc(modalFilter)); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Dlg_NoteAlert(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogItemIndex _rv; - SInt16 alertID; - PyObject* modalFilter; -#ifndef NoteAlert - PyMac_PRECHECK(NoteAlert); -#endif - if (!PyArg_ParseTuple(_args, "hO", - &alertID, - &modalFilter)) - return NULL; - _rv = NoteAlert(alertID, - Dlg_PassFilterProc(modalFilter)); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Dlg_CautionAlert(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogItemIndex _rv; - SInt16 alertID; - PyObject* modalFilter; -#ifndef CautionAlert - PyMac_PRECHECK(CautionAlert); -#endif - if (!PyArg_ParseTuple(_args, "hO", - &alertID, - &modalFilter)) - return NULL; - _rv = CautionAlert(alertID, - Dlg_PassFilterProc(modalFilter)); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Dlg_ParamText(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Str255 param0; - Str255 param1; - Str255 param2; - Str255 param3; -#ifndef ParamText - PyMac_PRECHECK(ParamText); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - PyMac_GetStr255, param0, - PyMac_GetStr255, param1, - PyMac_GetStr255, param2, - PyMac_GetStr255, param3)) - return NULL; - ParamText(param0, - param1, - param2, - param3); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Dlg_GetDialogItemText(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle item; - Str255 text; -#ifndef GetDialogItemText - PyMac_PRECHECK(GetDialogItemText); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &item)) - return NULL; - GetDialogItemText(item, - text); - _res = Py_BuildValue("O&", - PyMac_BuildStr255, text); - return _res; -} - -static PyObject *Dlg_SetDialogItemText(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle item; - Str255 text; -#ifndef SetDialogItemText - PyMac_PRECHECK(SetDialogItemText); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &item, - PyMac_GetStr255, text)) - return NULL; - SetDialogItemText(item, - text); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Dlg_GetAlertStage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef GetAlertStage - PyMac_PRECHECK(GetAlertStage); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetAlertStage(); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Dlg_SetDialogFont(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 fontNum; -#ifndef SetDialogFont - PyMac_PRECHECK(SetDialogFont); -#endif - if (!PyArg_ParseTuple(_args, "h", - &fontNum)) - return NULL; - SetDialogFont(fontNum); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Dlg_ResetAlertStage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ResetAlertStage - PyMac_PRECHECK(ResetAlertStage); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ResetAlertStage(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Dlg_GetParamText(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Str255 param0; - Str255 param1; - Str255 param2; - Str255 param3; -#ifndef GetParamText - PyMac_PRECHECK(GetParamText); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - PyMac_GetStr255, param0, - PyMac_GetStr255, param1, - PyMac_GetStr255, param2, - PyMac_GetStr255, param3)) - return NULL; - GetParamText(param0, - param1, - param2, - param3); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Dlg_NewFeaturesDialog(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogPtr _rv; - Rect inBoundsRect; - Str255 inTitle; - Boolean inIsVisible; - SInt16 inProcID; - WindowPtr inBehind; - Boolean inGoAwayFlag; - SInt32 inRefCon; - Handle inItemListHandle; - UInt32 inFlags; -#ifndef NewFeaturesDialog - PyMac_PRECHECK(NewFeaturesDialog); -#endif - if (!PyArg_ParseTuple(_args, "O&O&bhO&blO&l", - PyMac_GetRect, &inBoundsRect, - PyMac_GetStr255, inTitle, - &inIsVisible, - &inProcID, - WinObj_Convert, &inBehind, - &inGoAwayFlag, - &inRefCon, - ResObj_Convert, &inItemListHandle, - &inFlags)) - return NULL; - _rv = NewFeaturesDialog((void *)0, - &inBoundsRect, - inTitle, - inIsVisible, - inProcID, - inBehind, - inGoAwayFlag, - inRefCon, - inItemListHandle, - inFlags); - _res = Py_BuildValue("O&", - DlgObj_New, _rv); - return _res; -} - -static PyObject *Dlg_GetDialogFromWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DialogPtr _rv; - WindowPtr window; -#ifndef GetDialogFromWindow - PyMac_PRECHECK(GetDialogFromWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &window)) - return NULL; - _rv = GetDialogFromWindow(window); - _res = Py_BuildValue("O&", - DlgObj_New, _rv); - return _res; -} - -static PyObject *Dlg_SetUserItemHandler(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - PyObject *new = NULL; - - - if (!PyArg_ParseTuple(_args, "|O", &new)) - return NULL; - - if (Dlg_UserItemProc_callback && new && new != Py_None) { - PyErr_SetString(Dlg_Error, "Another UserItemProc is already installed"); - return NULL; - } - - if (new == NULL || new == Py_None) { - new = NULL; - _res = Py_None; - Py_INCREF(Py_None); - } else { - Py_INCREF(new); - _res = Py_BuildValue("O&", ResObj_New, (Handle)NewUserItemUPP(Dlg_UnivUserItemProc)); - } - - Dlg_UserItemProc_callback = new; - return _res; - -} - -static PyMethodDef Dlg_methods[] = { - {"NewDialog", (PyCFunction)Dlg_NewDialog, 1, - PyDoc_STR("(Rect boundsRect, Str255 title, Boolean visible, SInt16 procID, WindowPtr behind, Boolean goAwayFlag, SInt32 refCon, Handle items) -> (DialogPtr _rv)")}, - {"GetNewDialog", (PyCFunction)Dlg_GetNewDialog, 1, - PyDoc_STR("(SInt16 dialogID, WindowPtr behind) -> (DialogPtr _rv)")}, - {"NewColorDialog", (PyCFunction)Dlg_NewColorDialog, 1, - PyDoc_STR("(Rect boundsRect, Str255 title, Boolean visible, SInt16 procID, WindowPtr behind, Boolean goAwayFlag, SInt32 refCon, Handle items) -> (DialogPtr _rv)")}, - {"ModalDialog", (PyCFunction)Dlg_ModalDialog, 1, - PyDoc_STR("(PyObject* modalFilter) -> (DialogItemIndex itemHit)")}, - {"IsDialogEvent", (PyCFunction)Dlg_IsDialogEvent, 1, - PyDoc_STR("(EventRecord theEvent) -> (Boolean _rv)")}, - {"DialogSelect", (PyCFunction)Dlg_DialogSelect, 1, - PyDoc_STR("(EventRecord theEvent) -> (Boolean _rv, DialogPtr theDialog, DialogItemIndex itemHit)")}, - {"Alert", (PyCFunction)Dlg_Alert, 1, - PyDoc_STR("(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)")}, - {"StopAlert", (PyCFunction)Dlg_StopAlert, 1, - PyDoc_STR("(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)")}, - {"NoteAlert", (PyCFunction)Dlg_NoteAlert, 1, - PyDoc_STR("(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)")}, - {"CautionAlert", (PyCFunction)Dlg_CautionAlert, 1, - PyDoc_STR("(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)")}, - {"ParamText", (PyCFunction)Dlg_ParamText, 1, - PyDoc_STR("(Str255 param0, Str255 param1, Str255 param2, Str255 param3) -> None")}, - {"GetDialogItemText", (PyCFunction)Dlg_GetDialogItemText, 1, - PyDoc_STR("(Handle item) -> (Str255 text)")}, - {"SetDialogItemText", (PyCFunction)Dlg_SetDialogItemText, 1, - PyDoc_STR("(Handle item, Str255 text) -> None")}, - {"GetAlertStage", (PyCFunction)Dlg_GetAlertStage, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"SetDialogFont", (PyCFunction)Dlg_SetDialogFont, 1, - PyDoc_STR("(SInt16 fontNum) -> None")}, - {"ResetAlertStage", (PyCFunction)Dlg_ResetAlertStage, 1, - PyDoc_STR("() -> None")}, - {"GetParamText", (PyCFunction)Dlg_GetParamText, 1, - PyDoc_STR("(Str255 param0, Str255 param1, Str255 param2, Str255 param3) -> None")}, - {"NewFeaturesDialog", (PyCFunction)Dlg_NewFeaturesDialog, 1, - PyDoc_STR("(Rect inBoundsRect, Str255 inTitle, Boolean inIsVisible, SInt16 inProcID, WindowPtr inBehind, Boolean inGoAwayFlag, SInt32 inRefCon, Handle inItemListHandle, UInt32 inFlags) -> (DialogPtr _rv)")}, - {"GetDialogFromWindow", (PyCFunction)Dlg_GetDialogFromWindow, 1, - PyDoc_STR("(WindowPtr window) -> (DialogPtr _rv)")}, - {"SetUserItemHandler", (PyCFunction)Dlg_SetUserItemHandler, 1, - PyDoc_STR(NULL)}, - {NULL, NULL, 0} -}; - - - -/* Return the WindowPtr corresponding to a DialogObject */ -#if 0 -WindowPtr -DlgObj_ConvertToWindow(PyObject *self) -{ - if ( DlgObj_Check(self) ) - return GetDialogWindow(((DialogObject *)self)->ob_itself); - return NULL; -} -#endif -/* Return the object corresponding to the dialog, or None */ - -PyObject * -DlgObj_WhichDialog(DialogPtr d) -{ - PyObject *it; - - if (d == NULL) { - it = Py_None; - Py_INCREF(it); - } else { - WindowPtr w = GetDialogWindow(d); - - it = (PyObject *) GetWRefCon(w); - if (it == NULL || ((DialogObject *)it)->ob_itself != d || !DlgObj_Check(it)) { -#if 0 - /* Should do this, but we don't have an ob_freeit for dialogs yet. */ - it = WinObj_New(w); - ((WindowObject *)it)->ob_freeit = NULL; -#else - it = Py_None; - Py_INCREF(it); -#endif - } else { - Py_INCREF(it); - } - } - return it; -} - -#else /* __LP64__ */ - -static PyMethodDef Dlg_methods[] = { - {NULL, NULL, 0} -}; - -#endif /* __LP64__ */ - - -void init_Dlg(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; - - - - PyMac_INIT_TOOLBOX_OBJECT_NEW(DialogPtr, DlgObj_New); - PyMac_INIT_TOOLBOX_OBJECT_NEW(DialogPtr, DlgObj_WhichDialog); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DialogPtr, DlgObj_Convert); -#endif /* !__LP64__ */ - - m = Py_InitModule("_Dlg", Dlg_methods); - -#ifndef __LP64__ - d = PyModule_GetDict(m); - Dlg_Error = PyMac_GetOSErrException(); - if (Dlg_Error == NULL || - PyDict_SetItemString(d, "Error", Dlg_Error) != 0) - return; - Dialog_Type.ob_type = &PyType_Type; - if (PyType_Ready(&Dialog_Type) < 0) return; - Py_INCREF(&Dialog_Type); - PyModule_AddObject(m, "Dialog", (PyObject *)&Dialog_Type); - /* Backward-compatible name */ - Py_INCREF(&Dialog_Type); - PyModule_AddObject(m, "DialogType", (PyObject *)&Dialog_Type); -#endif /* !__LP64__ */ -} - -/* ======================== End module _Dlg ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/dlg/dlgscan.py b/project/jni/python/src/Mac/Modules/dlg/dlgscan.py deleted file mode 100644 index a4d6d5b97..000000000 --- a/project/jni/python/src/Mac/Modules/dlg/dlgscan.py +++ /dev/null @@ -1,115 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) - -from scantools import Scanner - -LONG = "Dialogs" -SHORT = "dlg" -OBJECT = "DialogPtr" - -def main(): - input = LONG + ".h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t in ("DialogPtr", "DialogRef") and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def makeblacklistnames(self): - return [ - 'InitDialogs', - 'ErrorSound', - # Dialogs are disposed when the object is deleted - 'CloseDialog', - 'DisposDialog', - 'DisposeDialog', - 'UpdtDialog', - 'CouldAlert', - 'FreeAlert', - 'CouldDialog', - 'FreeDialog', - 'GetStdFilterProc', - 'GetDialogParent', -## # Can't find these in the CW Pro 3 libraries - 'SetDialogMovableModal', - 'GetDialogControlNotificationProc', - 'SetGrafPortOfDialog', # Funny, and probably not useful - # Can't find these: - 'CloseStandardSheet', - 'RunStandardAlert', - ] - - def makeblacklisttypes(self): - return [ - "AlertStdAlertParamPtr", # Too much work, for now - "AlertStdAlertParamRec", # ditto - "AlertStdAlertParamRec_ptr", # ditto - "AlertStdCFStringAlertParamPtr", # ditto - "AlertStdCFStringAlertParamRec", - "AlertStdCFStringAlertParamRec_ptr", - "QTModelessCallbackProcPtr", - ] - - def makerepairinstructions(self): - return [ - ([("Str255", "*", "InMode")], - [("*", "*", "OutMode")]), - - ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")], - [("InBuffer", "*", "*")]), - - ([("void", "*", "OutMode"), ("long", "*", "InMode"), - ("long", "*", "OutMode")], - [("VarVarOutBuffer", "*", "InOutMode")]), - - # GetDialogItem return handle is optional - ([("Handle", "item", "OutMode")], - [("OptHandle", "item", "OutMode")]), - - # NewDialog ETC. - ([("void", "*", "OutMode")], - [("NullStorage", "*", "InMode")]), - - ([("DialogPtr", "*", "OutMode")], - [("ExistingDialogPtr", "*", "*")]), - ([("DialogRef", "*", "OutMode")], - [("ExistingDialogPtr", "*", "*")]), - ([("WindowPtr", "*", "OutMode")], - [("ExistingWindowPtr", "*", "*")]), - ([("WindowPtr", "*", "ReturnMode")], - [("ExistingWindowPtr", "*", "*")]), - - # StdFilterProc - ([('EventRecord', 'event', 'OutMode'), - ('DialogItemIndex', 'itemHit', 'OutMode')], - [('EventRecord', 'event', 'InOutMode'), - ('DialogItemIndex', 'itemHit', 'InOutMode')]) - - ] - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/dlg/dlgsupport.py b/project/jni/python/src/Mac/Modules/dlg/dlgsupport.py deleted file mode 100644 index fa1442ec3..000000000 --- a/project/jni/python/src/Mac/Modules/dlg/dlgsupport.py +++ /dev/null @@ -1,278 +0,0 @@ -# This script generates the Dialogs interface for Python. -# It uses the "bgen" package to generate C code. -# It execs the file dlggen.py which contain the function definitions -# (dlggen.py was generated by dlgscan.py, scanning the header file). - -from macsupport import * - -# Create the type objects - -DialogPtr = OpaqueByValueType("DialogPtr", "DlgObj") -DialogRef = DialogPtr - -# An OptHandle is either a handle or None (in case NULL is passed in). -# This is needed for GetDialogItem(). -OptHandle = OpaqueByValueType("Handle", "OptResObj") - -ModalFilterProcPtr = InputOnlyType("PyObject*", "O") -ModalFilterProcPtr.passInput = lambda name: "Dlg_PassFilterProc(%s)" % name -ModalFilterUPP = ModalFilterProcPtr - -RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") -TEHandle = OpaqueByValueType("TEHandle", "ResObj") -CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj") - -DITLMethod = Type("DITLMethod", "h") -DialogItemIndex = Type("DialogItemIndex", "h") -DialogItemType = Type("DialogItemType", "h") -DialogItemIndexZeroBased = Type("DialogItemIndexZeroBased", "h") -AlertType = Type("AlertType", "h") -StringPtr = Str255 -EventMask = Type("EventMask", "H") - -includestuff = includestuff + """ -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_DlgObj_New(DialogRef); -extern PyObject *_DlgObj_WhichDialog(DialogRef); -extern int _DlgObj_Convert(PyObject *, DialogRef *); - -#define DlgObj_New _DlgObj_New -#define DlgObj_WhichDialog _DlgObj_WhichDialog -#define DlgObj_Convert _DlgObj_Convert -#endif - -/* XXX Shouldn't this be a stack? */ -static PyObject *Dlg_FilterProc_callback = NULL; - -static pascal Boolean Dlg_UnivFilterProc(DialogPtr dialog, - EventRecord *event, - short *itemHit) -{ - Boolean rv; - PyObject *args, *res; - PyObject *callback = Dlg_FilterProc_callback; - if (callback == NULL) - return 0; /* Default behavior */ - Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */ - args = Py_BuildValue("O&O&", DlgObj_WhichDialog, dialog, PyMac_BuildEventRecord, event); - if (args == NULL) - res = NULL; - else { - res = PyEval_CallObject(callback, args); - Py_DECREF(args); - } - if (res == NULL) { - PySys_WriteStderr("Exception in Dialog Filter\\n"); - PyErr_Print(); - *itemHit = -1; /* Fake return item */ - return 1; /* We handled it */ - } - else { - Dlg_FilterProc_callback = callback; - if (PyInt_Check(res)) { - *itemHit = PyInt_AsLong(res); - rv = 1; - } - else - rv = PyObject_IsTrue(res); - } - Py_DECREF(res); - return rv; -} - -static ModalFilterUPP -Dlg_PassFilterProc(PyObject *callback) -{ - PyObject *tmp = Dlg_FilterProc_callback; - static ModalFilterUPP UnivFilterUpp = NULL; - - Dlg_FilterProc_callback = NULL; - if (callback == Py_None) { - Py_XDECREF(tmp); - return NULL; - } - Py_INCREF(callback); - Dlg_FilterProc_callback = callback; - Py_XDECREF(tmp); - if ( UnivFilterUpp == NULL ) - UnivFilterUpp = NewModalFilterUPP(&Dlg_UnivFilterProc); - return UnivFilterUpp; -} - -static PyObject *Dlg_UserItemProc_callback = NULL; - -static pascal void Dlg_UnivUserItemProc(DialogPtr dialog, - short item) -{ - PyObject *args, *res; - - if (Dlg_UserItemProc_callback == NULL) - return; /* Default behavior */ - Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */ - args = Py_BuildValue("O&h", DlgObj_WhichDialog, dialog, item); - if (args == NULL) - res = NULL; - else { - res = PyEval_CallObject(Dlg_UserItemProc_callback, args); - Py_DECREF(args); - } - if (res == NULL) { - PySys_WriteStderr("Exception in Dialog UserItem proc\\n"); - PyErr_Print(); - } - Py_XDECREF(res); - return; -} - -#if 0 -/* -** Treating DialogObjects as WindowObjects is (I think) illegal under Carbon. -** However, as they are still identical under MacOS9 Carbon this is a problem, even -** if we neatly call GetDialogWindow() at the right places: there's one refcon field -** and it points to the DialogObject, so WinObj_WhichWindow will smartly return the -** dialog object, and therefore we still don't have a WindowObject. -** I'll leave the chaining code in place for now, with this comment to warn the -** unsuspecting victims (i.e. me, probably, in a few weeks:-) -*/ -extern PyMethodChain WinObj_chain; -#endif -""" - -finalstuff = finalstuff + """ -/* Return the WindowPtr corresponding to a DialogObject */ -#if 0 -WindowPtr -DlgObj_ConvertToWindow(PyObject *self) -{ - if ( DlgObj_Check(self) ) - return GetDialogWindow(((DialogObject *)self)->ob_itself); - return NULL; -} -#endif -/* Return the object corresponding to the dialog, or None */ - -PyObject * -DlgObj_WhichDialog(DialogPtr d) -{ - PyObject *it; - - if (d == NULL) { - it = Py_None; - Py_INCREF(it); - } else { - WindowPtr w = GetDialogWindow(d); - - it = (PyObject *) GetWRefCon(w); - if (it == NULL || ((DialogObject *)it)->ob_itself != d || !DlgObj_Check(it)) { -#if 0 - /* Should do this, but we don't have an ob_freeit for dialogs yet. */ - it = WinObj_New(w); - ((WindowObject *)it)->ob_freeit = NULL; -#else - it = Py_None; - Py_INCREF(it); -#endif - } else { - Py_INCREF(it); - } - } - return it; -} -""" - -initstuff = initstuff + """ - PyMac_INIT_TOOLBOX_OBJECT_NEW(DialogPtr, DlgObj_New); - PyMac_INIT_TOOLBOX_OBJECT_NEW(DialogPtr, DlgObj_WhichDialog); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DialogPtr, DlgObj_Convert); -""" - - -# Define a class which specializes our object definition -class MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - def __init__(self, name, prefix = None, itselftype = None): - GlobalObjectDefinition.__init__(self, name, prefix, itselftype) -## This won't work in Carbon, so we disable it for all MacPythons:-( -## But see the comment above:-(( -## self.basechain = "&WinObj_chain" - - def outputInitStructMembers(self): - GlobalObjectDefinition.outputInitStructMembers(self) - Output("SetWRefCon(GetDialogWindow(itself), (long)it);") - - def outputCheckNewArg(self): - Output("if (itself == NULL) { Py_INCREF(Py_None); return Py_None; }") - - def outputCheckConvertArg(self): - Output("if (v == Py_None) { *p_itself = NULL; return 1; }") - Output("if (PyInt_Check(v)) { *p_itself = (DialogPtr)PyInt_AsLong(v);") - Output(" return 1; }") - - def outputCompare(self): - Output() - Output("static int %s_compare(%s *self, %s *other)", self.prefix, self.objecttype, self.objecttype) - OutLbrace() - Output("if ( self->ob_itself > other->ob_itself ) return 1;") - Output("if ( self->ob_itself < other->ob_itself ) return -1;") - Output("return 0;") - OutRbrace() - - def outputHash(self): - Output() - Output("static int %s_hash(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("return (int)self->ob_itself;") - OutRbrace() - - def outputFreeIt(self, itselfname): - Output("DisposeDialog(%s);", itselfname) - -# Create the generator groups and link them -module = MacModule('_Dlg', 'Dlg', includestuff, finalstuff, initstuff) -object = MyObjectDefinition('Dialog', 'DlgObj', 'DialogPtr') -module.addobject(object) - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -Method = OSErrWeakLinkMethodGenerator - -# Create and populate the lists -functions = [] -methods = [] -execfile("dlggen.py") - -# add the populated lists to the generator groups -for f in functions: module.add(f) -for f in methods: object.add(f) - -setuseritembody = """ - PyObject *new = NULL; - - - if (!PyArg_ParseTuple(_args, "|O", &new)) - return NULL; - - if (Dlg_UserItemProc_callback && new && new != Py_None) { - PyErr_SetString(Dlg_Error, "Another UserItemProc is already installed"); - return NULL; - } - - if (new == NULL || new == Py_None) { - new = NULL; - _res = Py_None; - Py_INCREF(Py_None); - } else { - Py_INCREF(new); - _res = Py_BuildValue("O&", ResObj_New, (Handle)NewUserItemUPP(Dlg_UnivUserItemProc)); - } - - Dlg_UserItemProc_callback = new; - return _res; -""" -f = ManualGenerator("SetUserItemHandler", setuseritembody) -module.add(f) - -# generate output -SetOutputFileName('_Dlgmodule.c') -module.generate() diff --git a/project/jni/python/src/Mac/Modules/drag/_Dragmodule.c b/project/jni/python/src/Mac/Modules/drag/_Dragmodule.c deleted file mode 100644 index 797fb321c..000000000 --- a/project/jni/python/src/Mac/Modules/drag/_Dragmodule.c +++ /dev/null @@ -1,1158 +0,0 @@ - -/* ========================== Module _Drag ========================== */ - -#include "Python.h" - -#ifndef __LP64__ - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -/* Callback glue routines */ -DragTrackingHandlerUPP dragglue_TrackingHandlerUPP; -DragReceiveHandlerUPP dragglue_ReceiveHandlerUPP; -DragSendDataUPP dragglue_SendDataUPP; -#if 0 -DragInputUPP dragglue_InputUPP; -DragDrawingUPP dragglue_DrawingUPP; -#endif - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_DragObj_New(DragRef); -extern int _DragObj_Convert(PyObject *, DragRef *); - -#define DragObj_New _DragObj_New -#define DragObj_Convert _DragObj_Convert -#endif - -static PyObject *Drag_Error; - -/* ---------------------- Object type DragObj ----------------------- */ - -PyTypeObject DragObj_Type; - -#define DragObj_Check(x) ((x)->ob_type == &DragObj_Type || PyObject_TypeCheck((x), &DragObj_Type)) - -typedef struct DragObjObject { - PyObject_HEAD - DragRef ob_itself; - PyObject *sendproc; -} DragObjObject; - -PyObject *DragObj_New(DragRef itself) -{ - DragObjObject *it; - if (itself == NULL) { - PyErr_SetString(Drag_Error,"Cannot create null Drag"); - return NULL; - } - it = PyObject_NEW(DragObjObject, &DragObj_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - it->sendproc = NULL; - return (PyObject *)it; -} - -int DragObj_Convert(PyObject *v, DragRef *p_itself) -{ - if (!DragObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "DragObj required"); - return 0; - } - *p_itself = ((DragObjObject *)v)->ob_itself; - return 1; -} - -static void DragObj_dealloc(DragObjObject *self) -{ - Py_XDECREF(self->sendproc); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *DragObj_DisposeDrag(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef DisposeDrag - PyMac_PRECHECK(DisposeDrag); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = DisposeDrag(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DragObj_AddDragItemFlavor(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ItemReference theItemRef; - FlavorType theType; - char *dataPtr__in__; - long dataPtr__len__; - int dataPtr__in_len__; - FlavorFlags theFlags; -#ifndef AddDragItemFlavor - PyMac_PRECHECK(AddDragItemFlavor); -#endif - if (!PyArg_ParseTuple(_args, "lO&z#l", - &theItemRef, - PyMac_GetOSType, &theType, - &dataPtr__in__, &dataPtr__in_len__, - &theFlags)) - return NULL; - dataPtr__len__ = dataPtr__in_len__; - _err = AddDragItemFlavor(_self->ob_itself, - theItemRef, - theType, - dataPtr__in__, dataPtr__len__, - theFlags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DragObj_SetDragItemFlavorData(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ItemReference theItemRef; - FlavorType theType; - char *dataPtr__in__; - long dataPtr__len__; - int dataPtr__in_len__; - UInt32 dataOffset; -#ifndef SetDragItemFlavorData - PyMac_PRECHECK(SetDragItemFlavorData); -#endif - if (!PyArg_ParseTuple(_args, "lO&z#l", - &theItemRef, - PyMac_GetOSType, &theType, - &dataPtr__in__, &dataPtr__in_len__, - &dataOffset)) - return NULL; - dataPtr__len__ = dataPtr__in_len__; - _err = SetDragItemFlavorData(_self->ob_itself, - theItemRef, - theType, - dataPtr__in__, dataPtr__len__, - dataOffset); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DragObj_SetDragImage(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - PixMapHandle imagePixMap; - RgnHandle imageRgn; - Point imageOffsetPt; - DragImageFlags theImageFlags; -#ifndef SetDragImage - PyMac_PRECHECK(SetDragImage); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&l", - ResObj_Convert, &imagePixMap, - ResObj_Convert, &imageRgn, - PyMac_GetPoint, &imageOffsetPt, - &theImageFlags)) - return NULL; - _err = SetDragImage(_self->ob_itself, - imagePixMap, - imageRgn, - imageOffsetPt, - theImageFlags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DragObj_ChangeDragBehaviors(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DragBehaviors inBehaviorsToSet; - DragBehaviors inBehaviorsToClear; -#ifndef ChangeDragBehaviors - PyMac_PRECHECK(ChangeDragBehaviors); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &inBehaviorsToSet, - &inBehaviorsToClear)) - return NULL; - _err = ChangeDragBehaviors(_self->ob_itself, - inBehaviorsToSet, - inBehaviorsToClear); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DragObj_TrackDrag(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - EventRecord theEvent; - RgnHandle theRegion; -#ifndef TrackDrag - PyMac_PRECHECK(TrackDrag); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetEventRecord, &theEvent, - ResObj_Convert, &theRegion)) - return NULL; - _err = TrackDrag(_self->ob_itself, - &theEvent, - theRegion); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DragObj_CountDragItems(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UInt16 numItems; -#ifndef CountDragItems - PyMac_PRECHECK(CountDragItems); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = CountDragItems(_self->ob_itself, - &numItems); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - numItems); - return _res; -} - -static PyObject *DragObj_GetDragItemReferenceNumber(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UInt16 index; - ItemReference theItemRef; -#ifndef GetDragItemReferenceNumber - PyMac_PRECHECK(GetDragItemReferenceNumber); -#endif - if (!PyArg_ParseTuple(_args, "H", - &index)) - return NULL; - _err = GetDragItemReferenceNumber(_self->ob_itself, - index, - &theItemRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - theItemRef); - return _res; -} - -static PyObject *DragObj_CountDragItemFlavors(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ItemReference theItemRef; - UInt16 numFlavors; -#ifndef CountDragItemFlavors - PyMac_PRECHECK(CountDragItemFlavors); -#endif - if (!PyArg_ParseTuple(_args, "l", - &theItemRef)) - return NULL; - _err = CountDragItemFlavors(_self->ob_itself, - theItemRef, - &numFlavors); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - numFlavors); - return _res; -} - -static PyObject *DragObj_GetFlavorType(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ItemReference theItemRef; - UInt16 index; - FlavorType theType; -#ifndef GetFlavorType - PyMac_PRECHECK(GetFlavorType); -#endif - if (!PyArg_ParseTuple(_args, "lH", - &theItemRef, - &index)) - return NULL; - _err = GetFlavorType(_self->ob_itself, - theItemRef, - index, - &theType); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildOSType, theType); - return _res; -} - -static PyObject *DragObj_GetFlavorFlags(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ItemReference theItemRef; - FlavorType theType; - FlavorFlags theFlags; -#ifndef GetFlavorFlags - PyMac_PRECHECK(GetFlavorFlags); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &theItemRef, - PyMac_GetOSType, &theType)) - return NULL; - _err = GetFlavorFlags(_self->ob_itself, - theItemRef, - theType, - &theFlags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - theFlags); - return _res; -} - -static PyObject *DragObj_GetFlavorDataSize(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ItemReference theItemRef; - FlavorType theType; - Size dataSize; -#ifndef GetFlavorDataSize - PyMac_PRECHECK(GetFlavorDataSize); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &theItemRef, - PyMac_GetOSType, &theType)) - return NULL; - _err = GetFlavorDataSize(_self->ob_itself, - theItemRef, - theType, - &dataSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - dataSize); - return _res; -} - -static PyObject *DragObj_GetFlavorData(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ItemReference theItemRef; - FlavorType theType; - char *dataPtr__out__; - long dataPtr__len__; - int dataPtr__in_len__; - UInt32 dataOffset; -#ifndef GetFlavorData - PyMac_PRECHECK(GetFlavorData); -#endif - if (!PyArg_ParseTuple(_args, "lO&il", - &theItemRef, - PyMac_GetOSType, &theType, - &dataPtr__in_len__, - &dataOffset)) - return NULL; - if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL) - { - PyErr_NoMemory(); - goto dataPtr__error__; - } - dataPtr__len__ = dataPtr__in_len__; - _err = GetFlavorData(_self->ob_itself, - theItemRef, - theType, - dataPtr__out__, &dataPtr__len__, - dataOffset); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("s#", - dataPtr__out__, (int)dataPtr__len__); - free(dataPtr__out__); - dataPtr__error__: ; - return _res; -} - -static PyObject *DragObj_GetDragItemBounds(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ItemReference theItemRef; - Rect itemBounds; -#ifndef GetDragItemBounds - PyMac_PRECHECK(GetDragItemBounds); -#endif - if (!PyArg_ParseTuple(_args, "l", - &theItemRef)) - return NULL; - _err = GetDragItemBounds(_self->ob_itself, - theItemRef, - &itemBounds); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &itemBounds); - return _res; -} - -static PyObject *DragObj_SetDragItemBounds(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ItemReference theItemRef; - Rect itemBounds; -#ifndef SetDragItemBounds - PyMac_PRECHECK(SetDragItemBounds); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &theItemRef, - PyMac_GetRect, &itemBounds)) - return NULL; - _err = SetDragItemBounds(_self->ob_itself, - theItemRef, - &itemBounds); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DragObj_GetDropLocation(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEDesc dropLocation; -#ifndef GetDropLocation - PyMac_PRECHECK(GetDropLocation); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDropLocation(_self->ob_itself, - &dropLocation); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &dropLocation); - return _res; -} - -static PyObject *DragObj_SetDropLocation(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AEDesc dropLocation; -#ifndef SetDropLocation - PyMac_PRECHECK(SetDropLocation); -#endif - if (!PyArg_ParseTuple(_args, "O&", - AEDesc_Convert, &dropLocation)) - return NULL; - _err = SetDropLocation(_self->ob_itself, - &dropLocation); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DragObj_GetDragAttributes(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DragAttributes flags; -#ifndef GetDragAttributes - PyMac_PRECHECK(GetDragAttributes); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDragAttributes(_self->ob_itself, - &flags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - flags); - return _res; -} - -static PyObject *DragObj_GetDragMouse(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Point mouse; - Point globalPinnedMouse; -#ifndef GetDragMouse - PyMac_PRECHECK(GetDragMouse); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDragMouse(_self->ob_itself, - &mouse, - &globalPinnedMouse); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - PyMac_BuildPoint, mouse, - PyMac_BuildPoint, globalPinnedMouse); - return _res; -} - -static PyObject *DragObj_SetDragMouse(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Point globalPinnedMouse; -#ifndef SetDragMouse - PyMac_PRECHECK(SetDragMouse); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &globalPinnedMouse)) - return NULL; - _err = SetDragMouse(_self->ob_itself, - globalPinnedMouse); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DragObj_GetDragOrigin(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Point globalInitialMouse; -#ifndef GetDragOrigin - PyMac_PRECHECK(GetDragOrigin); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDragOrigin(_self->ob_itself, - &globalInitialMouse); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, globalInitialMouse); - return _res; -} - -static PyObject *DragObj_GetDragModifiers(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 modifiers; - SInt16 mouseDownModifiers; - SInt16 mouseUpModifiers; -#ifndef GetDragModifiers - PyMac_PRECHECK(GetDragModifiers); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDragModifiers(_self->ob_itself, - &modifiers, - &mouseDownModifiers, - &mouseUpModifiers); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("hhh", - modifiers, - mouseDownModifiers, - mouseUpModifiers); - return _res; -} - -static PyObject *DragObj_ShowDragHilite(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - RgnHandle hiliteFrame; - Boolean inside; -#ifndef ShowDragHilite - PyMac_PRECHECK(ShowDragHilite); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - ResObj_Convert, &hiliteFrame, - &inside)) - return NULL; - _err = ShowDragHilite(_self->ob_itself, - hiliteFrame, - inside); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DragObj_HideDragHilite(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef HideDragHilite - PyMac_PRECHECK(HideDragHilite); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = HideDragHilite(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DragObj_DragPreScroll(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 dH; - SInt16 dV; -#ifndef DragPreScroll - PyMac_PRECHECK(DragPreScroll); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &dH, - &dV)) - return NULL; - _err = DragPreScroll(_self->ob_itself, - dH, - dV); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DragObj_DragPostScroll(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef DragPostScroll - PyMac_PRECHECK(DragPostScroll); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = DragPostScroll(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *DragObj_UpdateDragHilite(DragObjObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - RgnHandle updateRgn; -#ifndef UpdateDragHilite - PyMac_PRECHECK(UpdateDragHilite); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &updateRgn)) - return NULL; - _err = UpdateDragHilite(_self->ob_itself, - updateRgn); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef DragObj_methods[] = { - {"DisposeDrag", (PyCFunction)DragObj_DisposeDrag, 1, - PyDoc_STR("() -> None")}, - {"AddDragItemFlavor", (PyCFunction)DragObj_AddDragItemFlavor, 1, - PyDoc_STR("(ItemReference theItemRef, FlavorType theType, Buffer dataPtr, FlavorFlags theFlags) -> None")}, - {"SetDragItemFlavorData", (PyCFunction)DragObj_SetDragItemFlavorData, 1, - PyDoc_STR("(ItemReference theItemRef, FlavorType theType, Buffer dataPtr, UInt32 dataOffset) -> None")}, - {"SetDragImage", (PyCFunction)DragObj_SetDragImage, 1, - PyDoc_STR("(PixMapHandle imagePixMap, RgnHandle imageRgn, Point imageOffsetPt, DragImageFlags theImageFlags) -> None")}, - {"ChangeDragBehaviors", (PyCFunction)DragObj_ChangeDragBehaviors, 1, - PyDoc_STR("(DragBehaviors inBehaviorsToSet, DragBehaviors inBehaviorsToClear) -> None")}, - {"TrackDrag", (PyCFunction)DragObj_TrackDrag, 1, - PyDoc_STR("(EventRecord theEvent, RgnHandle theRegion) -> None")}, - {"CountDragItems", (PyCFunction)DragObj_CountDragItems, 1, - PyDoc_STR("() -> (UInt16 numItems)")}, - {"GetDragItemReferenceNumber", (PyCFunction)DragObj_GetDragItemReferenceNumber, 1, - PyDoc_STR("(UInt16 index) -> (ItemReference theItemRef)")}, - {"CountDragItemFlavors", (PyCFunction)DragObj_CountDragItemFlavors, 1, - PyDoc_STR("(ItemReference theItemRef) -> (UInt16 numFlavors)")}, - {"GetFlavorType", (PyCFunction)DragObj_GetFlavorType, 1, - PyDoc_STR("(ItemReference theItemRef, UInt16 index) -> (FlavorType theType)")}, - {"GetFlavorFlags", (PyCFunction)DragObj_GetFlavorFlags, 1, - PyDoc_STR("(ItemReference theItemRef, FlavorType theType) -> (FlavorFlags theFlags)")}, - {"GetFlavorDataSize", (PyCFunction)DragObj_GetFlavorDataSize, 1, - PyDoc_STR("(ItemReference theItemRef, FlavorType theType) -> (Size dataSize)")}, - {"GetFlavorData", (PyCFunction)DragObj_GetFlavorData, 1, - PyDoc_STR("(ItemReference theItemRef, FlavorType theType, Buffer dataPtr, UInt32 dataOffset) -> (Buffer dataPtr)")}, - {"GetDragItemBounds", (PyCFunction)DragObj_GetDragItemBounds, 1, - PyDoc_STR("(ItemReference theItemRef) -> (Rect itemBounds)")}, - {"SetDragItemBounds", (PyCFunction)DragObj_SetDragItemBounds, 1, - PyDoc_STR("(ItemReference theItemRef, Rect itemBounds) -> None")}, - {"GetDropLocation", (PyCFunction)DragObj_GetDropLocation, 1, - PyDoc_STR("() -> (AEDesc dropLocation)")}, - {"SetDropLocation", (PyCFunction)DragObj_SetDropLocation, 1, - PyDoc_STR("(AEDesc dropLocation) -> None")}, - {"GetDragAttributes", (PyCFunction)DragObj_GetDragAttributes, 1, - PyDoc_STR("() -> (DragAttributes flags)")}, - {"GetDragMouse", (PyCFunction)DragObj_GetDragMouse, 1, - PyDoc_STR("() -> (Point mouse, Point globalPinnedMouse)")}, - {"SetDragMouse", (PyCFunction)DragObj_SetDragMouse, 1, - PyDoc_STR("(Point globalPinnedMouse) -> None")}, - {"GetDragOrigin", (PyCFunction)DragObj_GetDragOrigin, 1, - PyDoc_STR("() -> (Point globalInitialMouse)")}, - {"GetDragModifiers", (PyCFunction)DragObj_GetDragModifiers, 1, - PyDoc_STR("() -> (SInt16 modifiers, SInt16 mouseDownModifiers, SInt16 mouseUpModifiers)")}, - {"ShowDragHilite", (PyCFunction)DragObj_ShowDragHilite, 1, - PyDoc_STR("(RgnHandle hiliteFrame, Boolean inside) -> None")}, - {"HideDragHilite", (PyCFunction)DragObj_HideDragHilite, 1, - PyDoc_STR("() -> None")}, - {"DragPreScroll", (PyCFunction)DragObj_DragPreScroll, 1, - PyDoc_STR("(SInt16 dH, SInt16 dV) -> None")}, - {"DragPostScroll", (PyCFunction)DragObj_DragPostScroll, 1, - PyDoc_STR("() -> None")}, - {"UpdateDragHilite", (PyCFunction)DragObj_UpdateDragHilite, 1, - PyDoc_STR("(RgnHandle updateRgn) -> None")}, - {NULL, NULL, 0} -}; - -#define DragObj_getsetlist NULL - - -#define DragObj_compare NULL - -#define DragObj_repr NULL - -#define DragObj_hash NULL -#define DragObj_tp_init 0 - -#define DragObj_tp_alloc PyType_GenericAlloc - -static PyObject *DragObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - DragRef itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, DragObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((DragObjObject *)_self)->ob_itself = itself; - return _self; -} - -#define DragObj_tp_free PyObject_Del - - -PyTypeObject DragObj_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Drag.DragObj", /*tp_name*/ - sizeof(DragObjObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) DragObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) DragObj_compare, /*tp_compare*/ - (reprfunc) DragObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) DragObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - DragObj_methods, /* tp_methods */ - 0, /*tp_members*/ - DragObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - DragObj_tp_init, /* tp_init */ - DragObj_tp_alloc, /* tp_alloc */ - DragObj_tp_new, /* tp_new */ - DragObj_tp_free, /* tp_free */ -}; - -/* -------------------- End object type DragObj --------------------- */ - - -static PyObject *Drag_NewDrag(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DragRef theDrag; -#ifndef NewDrag - PyMac_PRECHECK(NewDrag); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = NewDrag(&theDrag); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - DragObj_New, theDrag); - return _res; -} - -static PyObject *Drag_GetDragHiliteColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - WindowPtr window; - RGBColor color; -#ifndef GetDragHiliteColor - PyMac_PRECHECK(GetDragHiliteColor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &window)) - return NULL; - _err = GetDragHiliteColor(window, - &color); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - QdRGB_New, &color); - return _res; -} - -static PyObject *Drag_WaitMouseMoved(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point initialMouse; -#ifndef WaitMouseMoved - PyMac_PRECHECK(WaitMouseMoved); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &initialMouse)) - return NULL; - _rv = WaitMouseMoved(initialMouse); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Drag_ZoomRects(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Rect fromRect; - Rect toRect; - SInt16 zoomSteps; - ZoomAcceleration acceleration; -#ifndef ZoomRects - PyMac_PRECHECK(ZoomRects); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hh", - PyMac_GetRect, &fromRect, - PyMac_GetRect, &toRect, - &zoomSteps, - &acceleration)) - return NULL; - _err = ZoomRects(&fromRect, - &toRect, - zoomSteps, - acceleration); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Drag_ZoomRegion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - RgnHandle region; - Point zoomDistance; - SInt16 zoomSteps; - ZoomAcceleration acceleration; -#ifndef ZoomRegion - PyMac_PRECHECK(ZoomRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hh", - ResObj_Convert, ®ion, - PyMac_GetPoint, &zoomDistance, - &zoomSteps, - &acceleration)) - return NULL; - _err = ZoomRegion(region, - zoomDistance, - zoomSteps, - acceleration); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Drag_InstallTrackingHandler(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - PyObject *callback; - WindowPtr theWindow = NULL; - OSErr _err; - - if ( !PyArg_ParseTuple(_args, "O|O&", &callback, WinObj_Convert, &theWindow) ) - return NULL; - Py_INCREF(callback); /* Cannot decref later, too bad */ - _err = InstallTrackingHandler(dragglue_TrackingHandlerUPP, theWindow, (void *)callback); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; - -} - -static PyObject *Drag_InstallReceiveHandler(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - PyObject *callback; - WindowPtr theWindow = NULL; - OSErr _err; - - if ( !PyArg_ParseTuple(_args, "O|O&", &callback, WinObj_Convert, &theWindow) ) - return NULL; - Py_INCREF(callback); /* Cannot decref later, too bad */ - _err = InstallReceiveHandler(dragglue_ReceiveHandlerUPP, theWindow, (void *)callback); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; - -} - -static PyObject *Drag_RemoveTrackingHandler(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - WindowPtr theWindow = NULL; - OSErr _err; - - if ( !PyArg_ParseTuple(_args, "|O&", WinObj_Convert, &theWindow) ) - return NULL; - _err = RemoveTrackingHandler(dragglue_TrackingHandlerUPP, theWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; - -} - -static PyObject *Drag_RemoveReceiveHandler(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - WindowPtr theWindow = NULL; - OSErr _err; - - if ( !PyArg_ParseTuple(_args, "|O&", WinObj_Convert, &theWindow) ) - return NULL; - _err = RemoveReceiveHandler(dragglue_ReceiveHandlerUPP, theWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; - -} - -static PyMethodDef Drag_methods[] = { - {"NewDrag", (PyCFunction)Drag_NewDrag, 1, - PyDoc_STR("() -> (DragRef theDrag)")}, - {"GetDragHiliteColor", (PyCFunction)Drag_GetDragHiliteColor, 1, - PyDoc_STR("(WindowPtr window) -> (RGBColor color)")}, - {"WaitMouseMoved", (PyCFunction)Drag_WaitMouseMoved, 1, - PyDoc_STR("(Point initialMouse) -> (Boolean _rv)")}, - {"ZoomRects", (PyCFunction)Drag_ZoomRects, 1, - PyDoc_STR("(Rect fromRect, Rect toRect, SInt16 zoomSteps, ZoomAcceleration acceleration) -> None")}, - {"ZoomRegion", (PyCFunction)Drag_ZoomRegion, 1, - PyDoc_STR("(RgnHandle region, Point zoomDistance, SInt16 zoomSteps, ZoomAcceleration acceleration) -> None")}, - {"InstallTrackingHandler", (PyCFunction)Drag_InstallTrackingHandler, 1, - PyDoc_STR(NULL)}, - {"InstallReceiveHandler", (PyCFunction)Drag_InstallReceiveHandler, 1, - PyDoc_STR(NULL)}, - {"RemoveTrackingHandler", (PyCFunction)Drag_RemoveTrackingHandler, 1, - PyDoc_STR(NULL)}, - {"RemoveReceiveHandler", (PyCFunction)Drag_RemoveReceiveHandler, 1, - PyDoc_STR(NULL)}, - {NULL, NULL, 0} -}; - - - -static pascal OSErr -dragglue_TrackingHandler(DragTrackingMessage theMessage, WindowPtr theWindow, - void *handlerRefCon, DragReference theDrag) -{ - PyObject *args, *rv; - int i; - - args = Py_BuildValue("hO&O&", theMessage, DragObj_New, theDrag, WinObj_WhichWindow, theWindow); - if ( args == NULL ) - return -1; - rv = PyEval_CallObject((PyObject *)handlerRefCon, args); - Py_DECREF(args); - if ( rv == NULL ) { - PySys_WriteStderr("Drag: Exception in TrackingHandler\n"); - PyErr_Print(); - return -1; - } - i = -1; - if ( rv == Py_None ) - i = 0; - else - PyArg_Parse(rv, "l", &i); - Py_DECREF(rv); - return i; -} - -static pascal OSErr -dragglue_ReceiveHandler(WindowPtr theWindow, void *handlerRefCon, - DragReference theDrag) -{ - PyObject *args, *rv; - int i; - - args = Py_BuildValue("O&O&", DragObj_New, theDrag, WinObj_WhichWindow, theWindow); - if ( args == NULL ) - return -1; - rv = PyEval_CallObject((PyObject *)handlerRefCon, args); - Py_DECREF(args); - if ( rv == NULL ) { - PySys_WriteStderr("Drag: Exception in ReceiveHandler\n"); - PyErr_Print(); - return -1; - } - i = -1; - if ( rv == Py_None ) - i = 0; - else - PyArg_Parse(rv, "l", &i); - Py_DECREF(rv); - return i; -} - -static pascal OSErr -dragglue_SendData(FlavorType theType, void *dragSendRefCon, - ItemReference theItem, DragReference theDrag) -{ - DragObjObject *self = (DragObjObject *)dragSendRefCon; - PyObject *args, *rv; - int i; - - if ( self->sendproc == NULL ) - return -1; - args = Py_BuildValue("O&l", PyMac_BuildOSType, theType, theItem); - if ( args == NULL ) - return -1; - rv = PyEval_CallObject(self->sendproc, args); - Py_DECREF(args); - if ( rv == NULL ) { - PySys_WriteStderr("Drag: Exception in SendDataHandler\n"); - PyErr_Print(); - return -1; - } - i = -1; - if ( rv == Py_None ) - i = 0; - else - PyArg_Parse(rv, "l", &i); - Py_DECREF(rv); - return i; -} - -#if 0 -static pascal OSErr -dragglue_Input(Point *mouse, short *modifiers, - void *dragSendRefCon, DragReference theDrag) -{ - return 0; -} - -static pascal OSErr -dragglue_Drawing(xxxx - void *dragSendRefCon, DragReference theDrag) -{ - return 0; -} -#endif -#else /* __LP64__ */ -static PyMethodDef Drag_methods[] = { - {NULL, NULL, 0} -}; -#endif /* __LP64__ */ - - -void init_Drag(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; - - - - PyMac_INIT_TOOLBOX_OBJECT_NEW(DragRef, DragObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DragRef, DragObj_Convert); -#endif /* !__LP64__ */ - - - m = Py_InitModule("_Drag", Drag_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - Drag_Error = PyMac_GetOSErrException(); - if (Drag_Error == NULL || - PyDict_SetItemString(d, "Error", Drag_Error) != 0) - return; - DragObj_Type.ob_type = &PyType_Type; - if (PyType_Ready(&DragObj_Type) < 0) return; - Py_INCREF(&DragObj_Type); - PyModule_AddObject(m, "DragObj", (PyObject *)&DragObj_Type); - /* Backward-compatible name */ - Py_INCREF(&DragObj_Type); - PyModule_AddObject(m, "DragObjType", (PyObject *)&DragObj_Type); - - dragglue_TrackingHandlerUPP = NewDragTrackingHandlerUPP(dragglue_TrackingHandler); - dragglue_ReceiveHandlerUPP = NewDragReceiveHandlerUPP(dragglue_ReceiveHandler); - dragglue_SendDataUPP = NewDragSendDataUPP(dragglue_SendData); -#if 0 - dragglue_InputUPP = NewDragInputUPP(dragglue_Input); - dragglue_DrawingUPP = NewDragDrawingUPP(dragglue_Drawing); -#endif - -#endif /* !__LP64__ */ - -} - -/* ======================== End module _Drag ======================== */ - diff --git a/project/jni/python/src/Mac/Modules/drag/dragscan.py b/project/jni/python/src/Mac/Modules/drag/dragscan.py deleted file mode 100644 index bd419c4a6..000000000 --- a/project/jni/python/src/Mac/Modules/drag/dragscan.py +++ /dev/null @@ -1,79 +0,0 @@ -# Scan , generating draggen.py. -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR, INCLUDEDIR -sys.path.append(BGENDIR) - -from scantools import Scanner - -MISSING_DEFINES=""" -kDragHasLeftSenderWindow = (1 << 0) -kDragInsideSenderApplication = (1 << 1) -kDragInsideSenderWindow = (1 << 2) -kDragRegionAndImage = (1 << 4) -flavorSenderOnly = (1 << 0) -flavorSenderTranslated = (1 << 1) -flavorNotSaved = (1 << 2) -flavorSystemTranslated = (1 << 8) -""" - - -def main(): - input = INCLUDEDIR + "Drag.h" - output = "draggen.py" - defsoutput = TOOLBOXDIR + "Dragconst.py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now doing 'import dragsupport' ===" - import dragsupport - print "=== Done. It's up to you to compile Dragmodule.c ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t in ('DragReference', 'DragRef') and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - self.defsfile.write("from Carbon.TextEdit import *\n") - self.defsfile.write("from Carbon.QuickDraw import *\n") - self.defsfile.write("fkDragActionAll = -1\n") - self.defsfile.write("\n") - # Defines unparseable in Drag.h - self.defsfile.write(MISSING_DEFINES) - - def makeblacklistnames(self): - return [ - "kDragActionAll", - ] - - def makeblacklisttypes(self): - return [ - "DragTrackingHandlerUPP", - "DragReceiveHandlerUPP", - "DragSendDataUPP", - "DragInputUPP", - "DragDrawingUPP", - ] - - def makerepairinstructions(self): - return [ - ([("void_ptr", "*", "InMode"), ("Size", "*", "InMode")], - [("OptionalInBuffer", "*", "*")]), - - ([("void", "*", "OutMode"), ("Size", "*", "OutMode")], - [("VarOutBuffer", "*", "InOutMode")]), - - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/drag/dragsupport.py b/project/jni/python/src/Mac/Modules/drag/dragsupport.py deleted file mode 100644 index 45838efde..000000000 --- a/project/jni/python/src/Mac/Modules/drag/dragsupport.py +++ /dev/null @@ -1,293 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'Drag.h' # The Apple header file -MODNAME = '_Drag' # The name of the module -OBJECTNAME = 'DragObj' # The basic name of the objects used here - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Drag' # The prefix for module-wide routines -OBJECTTYPE = 'DragRef' # The C type used to represent them -OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects - -DragRef = OpaqueByValueType(OBJECTTYPE, OBJECTPREFIX) -DragItemRef = Type("ItemReference", "l") -# Old names -DragReference = DragRef -ItemReference = DragItemRef - -PixMapHandle = OpaqueByValueType("PixMapHandle", "ResObj") -RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") -AEDesc = OpaqueType('AEDesc') -AEDesc_ptr = AEDesc -RGBColor = OpaqueType("RGBColor", "QdRGB") - -FlavorType = OSTypeType("FlavorType") -DragAttributes = Type("DragAttributes", "l") -DragBehaviors = Type("DragBehaviors", "l") -DragImageFlags = Type("DragImageFlags", "l") -DragImageTranslucency = Type("DragImageTranslucency", "l") -DragRegionMessage = Type("DragRegionMessage", "h") -ZoomAcceleration = Type("ZoomAcceleration", "h") -FlavorFlags = Type("FlavorFlags", "l") -DragTrackingMessage = Type("DragTrackingMessage", "h") - -includestuff = includestuff + """ -#include - -/* Callback glue routines */ -DragTrackingHandlerUPP dragglue_TrackingHandlerUPP; -DragReceiveHandlerUPP dragglue_ReceiveHandlerUPP; -DragSendDataUPP dragglue_SendDataUPP; -#if 0 -DragInputUPP dragglue_InputUPP; -DragDrawingUPP dragglue_DrawingUPP; -#endif - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_DragObj_New(DragRef); -extern int _DragObj_Convert(PyObject *, DragRef *); - -#define DragObj_New _DragObj_New -#define DragObj_Convert _DragObj_Convert -#endif -""" - -finalstuff = finalstuff + """ -static pascal OSErr -dragglue_TrackingHandler(DragTrackingMessage theMessage, WindowPtr theWindow, - void *handlerRefCon, DragReference theDrag) -{ - PyObject *args, *rv; - int i; - - args = Py_BuildValue("hO&O&", theMessage, DragObj_New, theDrag, WinObj_WhichWindow, theWindow); - if ( args == NULL ) - return -1; - rv = PyEval_CallObject((PyObject *)handlerRefCon, args); - Py_DECREF(args); - if ( rv == NULL ) { - PySys_WriteStderr("Drag: Exception in TrackingHandler\\n"); - PyErr_Print(); - return -1; - } - i = -1; - if ( rv == Py_None ) - i = 0; - else - PyArg_Parse(rv, "l", &i); - Py_DECREF(rv); - return i; -} - -static pascal OSErr -dragglue_ReceiveHandler(WindowPtr theWindow, void *handlerRefCon, - DragReference theDrag) -{ - PyObject *args, *rv; - int i; - - args = Py_BuildValue("O&O&", DragObj_New, theDrag, WinObj_WhichWindow, theWindow); - if ( args == NULL ) - return -1; - rv = PyEval_CallObject((PyObject *)handlerRefCon, args); - Py_DECREF(args); - if ( rv == NULL ) { - PySys_WriteStderr("Drag: Exception in ReceiveHandler\\n"); - PyErr_Print(); - return -1; - } - i = -1; - if ( rv == Py_None ) - i = 0; - else - PyArg_Parse(rv, "l", &i); - Py_DECREF(rv); - return i; -} - -static pascal OSErr -dragglue_SendData(FlavorType theType, void *dragSendRefCon, - ItemReference theItem, DragReference theDrag) -{ - DragObjObject *self = (DragObjObject *)dragSendRefCon; - PyObject *args, *rv; - int i; - - if ( self->sendproc == NULL ) - return -1; - args = Py_BuildValue("O&l", PyMac_BuildOSType, theType, theItem); - if ( args == NULL ) - return -1; - rv = PyEval_CallObject(self->sendproc, args); - Py_DECREF(args); - if ( rv == NULL ) { - PySys_WriteStderr("Drag: Exception in SendDataHandler\\n"); - PyErr_Print(); - return -1; - } - i = -1; - if ( rv == Py_None ) - i = 0; - else - PyArg_Parse(rv, "l", &i); - Py_DECREF(rv); - return i; -} - -#if 0 -static pascal OSErr -dragglue_Input(Point *mouse, short *modifiers, - void *dragSendRefCon, DragReference theDrag) -{ - return 0; -} - -static pascal OSErr -dragglue_Drawing(xxxx - void *dragSendRefCon, DragReference theDrag) -{ - return 0; -} -#endif - -""" - -initstuff = initstuff + """ - PyMac_INIT_TOOLBOX_OBJECT_NEW(DragRef, DragObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DragRef, DragObj_Convert); -""" - -variablestuff = """ -dragglue_TrackingHandlerUPP = NewDragTrackingHandlerUPP(dragglue_TrackingHandler); -dragglue_ReceiveHandlerUPP = NewDragReceiveHandlerUPP(dragglue_ReceiveHandler); -dragglue_SendDataUPP = NewDragSendDataUPP(dragglue_SendData); -#if 0 -dragglue_InputUPP = NewDragInputUPP(dragglue_Input); -dragglue_DrawingUPP = NewDragDrawingUPP(dragglue_Drawing); -#endif -""" - -class MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - def outputCheckNewArg(self): - Output("""if (itself == NULL) { - PyErr_SetString(Drag_Error,"Cannot create null Drag"); - return NULL; - }""") - def outputFreeIt(self, itselfname): - ## Output("DisposeDrag(%s);", itselfname) - Output("Py_XDECREF(self->sendproc);") - ## Output("Py_XDECREF(self->inputproc);") - ## Output("Py_XDECREF(self->drawingproc);") - - def outputStructMembers(self): - GlobalObjectDefinition.outputStructMembers(self) - Output("PyObject *sendproc;") - ## Output("PyObject *inputproc;") - ## Output("PyObject *drawingproc;") - - def outputInitStructMembers(self): - GlobalObjectDefinition.outputInitStructMembers(self) - Output("it->sendproc = NULL;") - ## Output("it->inputproc = NULL;") - ## Output("it->drawingproc = NULL;") - - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff, variablestuff) -object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE) -module.addobject(object) - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -Method = OSErrWeakLinkMethodGenerator - -# Create and populate the lists -functions = [] -methods = [] -execfile(INPUTFILE) - -# add the populated lists to the generator groups -for f in functions: module.add(f) -for f in methods: object.add(f) - -# Manual generators for the callbacks - -installtracking_body = """ - PyObject *callback; - WindowPtr theWindow = NULL; - OSErr _err; - - if ( !PyArg_ParseTuple(_args, "O|O&", &callback, WinObj_Convert, &theWindow) ) - return NULL; - Py_INCREF(callback); /* Cannot decref later, too bad */ - _err = InstallTrackingHandler(dragglue_TrackingHandlerUPP, theWindow, (void *)callback); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -""" -installtracking = ManualGenerator("InstallTrackingHandler", installtracking_body) -module.add(installtracking) - -installreceive_body = """ - PyObject *callback; - WindowPtr theWindow = NULL; - OSErr _err; - - if ( !PyArg_ParseTuple(_args, "O|O&", &callback, WinObj_Convert, &theWindow) ) - return NULL; - Py_INCREF(callback); /* Cannot decref later, too bad */ - _err = InstallReceiveHandler(dragglue_ReceiveHandlerUPP, theWindow, (void *)callback); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -""" -installreceive = ManualGenerator("InstallReceiveHandler", installreceive_body) -module.add(installreceive) - -removetracking_body = """ - WindowPtr theWindow = NULL; - OSErr _err; - - if ( !PyArg_ParseTuple(_args, "|O&", WinObj_Convert, &theWindow) ) - return NULL; - _err = RemoveTrackingHandler(dragglue_TrackingHandlerUPP, theWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -""" -removetracking = ManualGenerator("RemoveTrackingHandler", removetracking_body) -module.add(removetracking) - -removereceive_body = """ - WindowPtr theWindow = NULL; - OSErr _err; - - if ( !PyArg_ParseTuple(_args, "|O&", WinObj_Convert, &theWindow) ) - return NULL; - _err = RemoveReceiveHandler(dragglue_ReceiveHandlerUPP, theWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -""" -removereceive = ManualGenerator("RemoveReceiveHandler", removereceive_body) -module.add(removereceive) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/evt/_Evtmodule.c b/project/jni/python/src/Mac/Modules/evt/_Evtmodule.c deleted file mode 100644 index 04f3b23c9..000000000 --- a/project/jni/python/src/Mac/Modules/evt/_Evtmodule.c +++ /dev/null @@ -1,559 +0,0 @@ - -/* ========================== Module _Evt =========================== */ - -#include "Python.h" - -#ifndef __LP64__ - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - - -static PyObject *Evt_Error; - -static PyObject *Evt_GetMouse(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point mouseLoc; -#ifndef GetMouse - PyMac_PRECHECK(GetMouse); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetMouse(&mouseLoc); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, mouseLoc); - return _res; -} - -static PyObject *Evt_Button(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef Button - PyMac_PRECHECK(Button); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = Button(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Evt_StillDown(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef StillDown - PyMac_PRECHECK(StillDown); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = StillDown(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Evt_WaitMouseUp(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef WaitMouseUp - PyMac_PRECHECK(WaitMouseUp); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = WaitMouseUp(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Evt_GetCaretTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt32 _rv; -#ifndef GetCaretTime - PyMac_PRECHECK(GetCaretTime); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetCaretTime(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Evt_GetKeys(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - KeyMap theKeys__out__; -#ifndef GetKeys - PyMac_PRECHECK(GetKeys); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetKeys(theKeys__out__); - _res = Py_BuildValue("s#", - (char *)&theKeys__out__, (int)sizeof(KeyMap)); - return _res; -} - -static PyObject *Evt_GetDblTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt32 _rv; -#ifndef GetDblTime - PyMac_PRECHECK(GetDblTime); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetDblTime(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Evt_SetEventMask(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventMask value; -#ifndef SetEventMask - PyMac_PRECHECK(SetEventMask); -#endif - if (!PyArg_ParseTuple(_args, "H", - &value)) - return NULL; - SetEventMask(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Evt_GetNextEvent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - EventMask eventMask; - EventRecord theEvent; -#ifndef GetNextEvent - PyMac_PRECHECK(GetNextEvent); -#endif - if (!PyArg_ParseTuple(_args, "H", - &eventMask)) - return NULL; - _rv = GetNextEvent(eventMask, - &theEvent); - _res = Py_BuildValue("bO&", - _rv, - PyMac_BuildEventRecord, &theEvent); - return _res; -} - -static PyObject *Evt_EventAvail(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - EventMask eventMask; - EventRecord theEvent; -#ifndef EventAvail - PyMac_PRECHECK(EventAvail); -#endif - if (!PyArg_ParseTuple(_args, "H", - &eventMask)) - return NULL; - _rv = EventAvail(eventMask, - &theEvent); - _res = Py_BuildValue("bO&", - _rv, - PyMac_BuildEventRecord, &theEvent); - return _res; -} - -static PyObject *Evt_PostEvent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - EventKind eventNum; - UInt32 eventMsg; -#ifndef PostEvent - PyMac_PRECHECK(PostEvent); -#endif - if (!PyArg_ParseTuple(_args, "Hl", - &eventNum, - &eventMsg)) - return NULL; - _err = PostEvent(eventNum, - eventMsg); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Evt_FlushEvents(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventMask whichMask; - EventMask stopMask; -#ifndef FlushEvents - PyMac_PRECHECK(FlushEvents); -#endif - if (!PyArg_ParseTuple(_args, "HH", - &whichMask, - &stopMask)) - return NULL; - FlushEvents(whichMask, - stopMask); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Evt_GetGlobalMouse(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point globalMouse; -#ifndef GetGlobalMouse - PyMac_PRECHECK(GetGlobalMouse); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetGlobalMouse(&globalMouse); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, globalMouse); - return _res; -} - -static PyObject *Evt_GetCurrentKeyModifiers(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt32 _rv; -#ifndef GetCurrentKeyModifiers - PyMac_PRECHECK(GetCurrentKeyModifiers); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetCurrentKeyModifiers(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Evt_CheckEventQueueForUserCancel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef CheckEventQueueForUserCancel - PyMac_PRECHECK(CheckEventQueueForUserCancel); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CheckEventQueueForUserCancel(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Evt_KeyScript(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short code; -#ifndef KeyScript - PyMac_PRECHECK(KeyScript); -#endif - if (!PyArg_ParseTuple(_args, "h", - &code)) - return NULL; - KeyScript(code); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Evt_IsCmdChar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - EventRecord event; - short test; -#ifndef IsCmdChar - PyMac_PRECHECK(IsCmdChar); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetEventRecord, &event, - &test)) - return NULL; - _rv = IsCmdChar(&event, - test); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Evt_LMGetKeyThresh(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef LMGetKeyThresh - PyMac_PRECHECK(LMGetKeyThresh); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetKeyThresh(); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Evt_LMSetKeyThresh(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 value; -#ifndef LMSetKeyThresh - PyMac_PRECHECK(LMSetKeyThresh); -#endif - if (!PyArg_ParseTuple(_args, "h", - &value)) - return NULL; - LMSetKeyThresh(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Evt_LMGetKeyRepThresh(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef LMGetKeyRepThresh - PyMac_PRECHECK(LMGetKeyRepThresh); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetKeyRepThresh(); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Evt_LMSetKeyRepThresh(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 value; -#ifndef LMSetKeyRepThresh - PyMac_PRECHECK(LMSetKeyRepThresh); -#endif - if (!PyArg_ParseTuple(_args, "h", - &value)) - return NULL; - LMSetKeyRepThresh(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Evt_LMGetKbdLast(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt8 _rv; -#ifndef LMGetKbdLast - PyMac_PRECHECK(LMGetKbdLast); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetKbdLast(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Evt_LMSetKbdLast(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt8 value; -#ifndef LMSetKbdLast - PyMac_PRECHECK(LMSetKbdLast); -#endif - if (!PyArg_ParseTuple(_args, "b", - &value)) - return NULL; - LMSetKbdLast(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Evt_LMGetKbdType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt8 _rv; -#ifndef LMGetKbdType - PyMac_PRECHECK(LMGetKbdType); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetKbdType(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Evt_LMSetKbdType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt8 value; -#ifndef LMSetKbdType - PyMac_PRECHECK(LMSetKbdType); -#endif - if (!PyArg_ParseTuple(_args, "b", - &value)) - return NULL; - LMSetKbdType(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Evt_TickCount(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt32 _rv; -#ifndef TickCount - PyMac_PRECHECK(TickCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TickCount(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Evt_WaitNextEvent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - Boolean _rv; - EventMask eventMask; - EventRecord theEvent; - UInt32 sleep; - Handle mouseregion = (Handle)0; - - if (!PyArg_ParseTuple(_args, "Hl|O&", - &eventMask, - &sleep, - OptResObj_Convert, &mouseregion)) - return NULL; - _rv = WaitNextEvent(eventMask, - &theEvent, - sleep, - (RgnHandle)mouseregion); - _res = Py_BuildValue("bO&", - _rv, - PyMac_BuildEventRecord, &theEvent); - return _res; - -} - -static PyMethodDef Evt_methods[] = { - {"GetMouse", (PyCFunction)Evt_GetMouse, 1, - PyDoc_STR("() -> (Point mouseLoc)")}, - {"Button", (PyCFunction)Evt_Button, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"StillDown", (PyCFunction)Evt_StillDown, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"WaitMouseUp", (PyCFunction)Evt_WaitMouseUp, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"GetCaretTime", (PyCFunction)Evt_GetCaretTime, 1, - PyDoc_STR("() -> (UInt32 _rv)")}, - {"GetKeys", (PyCFunction)Evt_GetKeys, 1, - PyDoc_STR("() -> (KeyMap theKeys)")}, - {"GetDblTime", (PyCFunction)Evt_GetDblTime, 1, - PyDoc_STR("() -> (UInt32 _rv)")}, - {"SetEventMask", (PyCFunction)Evt_SetEventMask, 1, - PyDoc_STR("(EventMask value) -> None")}, - {"GetNextEvent", (PyCFunction)Evt_GetNextEvent, 1, - PyDoc_STR("(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)")}, - {"EventAvail", (PyCFunction)Evt_EventAvail, 1, - PyDoc_STR("(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)")}, - {"PostEvent", (PyCFunction)Evt_PostEvent, 1, - PyDoc_STR("(EventKind eventNum, UInt32 eventMsg) -> None")}, - {"FlushEvents", (PyCFunction)Evt_FlushEvents, 1, - PyDoc_STR("(EventMask whichMask, EventMask stopMask) -> None")}, - {"GetGlobalMouse", (PyCFunction)Evt_GetGlobalMouse, 1, - PyDoc_STR("() -> (Point globalMouse)")}, - {"GetCurrentKeyModifiers", (PyCFunction)Evt_GetCurrentKeyModifiers, 1, - PyDoc_STR("() -> (UInt32 _rv)")}, - {"CheckEventQueueForUserCancel", (PyCFunction)Evt_CheckEventQueueForUserCancel, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"KeyScript", (PyCFunction)Evt_KeyScript, 1, - PyDoc_STR("(short code) -> None")}, - {"IsCmdChar", (PyCFunction)Evt_IsCmdChar, 1, - PyDoc_STR("(EventRecord event, short test) -> (Boolean _rv)")}, - {"LMGetKeyThresh", (PyCFunction)Evt_LMGetKeyThresh, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"LMSetKeyThresh", (PyCFunction)Evt_LMSetKeyThresh, 1, - PyDoc_STR("(SInt16 value) -> None")}, - {"LMGetKeyRepThresh", (PyCFunction)Evt_LMGetKeyRepThresh, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"LMSetKeyRepThresh", (PyCFunction)Evt_LMSetKeyRepThresh, 1, - PyDoc_STR("(SInt16 value) -> None")}, - {"LMGetKbdLast", (PyCFunction)Evt_LMGetKbdLast, 1, - PyDoc_STR("() -> (UInt8 _rv)")}, - {"LMSetKbdLast", (PyCFunction)Evt_LMSetKbdLast, 1, - PyDoc_STR("(UInt8 value) -> None")}, - {"LMGetKbdType", (PyCFunction)Evt_LMGetKbdType, 1, - PyDoc_STR("() -> (UInt8 _rv)")}, - {"LMSetKbdType", (PyCFunction)Evt_LMSetKbdType, 1, - PyDoc_STR("(UInt8 value) -> None")}, - {"TickCount", (PyCFunction)Evt_TickCount, 1, - PyDoc_STR("() -> (UInt32 _rv)")}, - {"WaitNextEvent", (PyCFunction)Evt_WaitNextEvent, 1, - PyDoc_STR("(EventMask eventMask, UInt32 sleep [,RegionHandle]) -> (Boolean _rv, EventRecord theEvent)")}, - {NULL, NULL, 0} -}; - - -#else /* __LP64__ */ - -static PyMethodDef Evt_methods[] = { - {NULL, NULL, 0} -}; -#endif /* __LP64__ */ - - -void init_Evt(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; -#endif /* __LP64__ */ - - - - - m = Py_InitModule("_Evt", Evt_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - Evt_Error = PyMac_GetOSErrException(); - if (Evt_Error == NULL || - PyDict_SetItemString(d, "Error", Evt_Error) != 0) - return; -#endif /* __LP64__ */ -} - -/* ======================== End module _Evt ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/evt/evtedit.py b/project/jni/python/src/Mac/Modules/evt/evtedit.py deleted file mode 100644 index 02087e14c..000000000 --- a/project/jni/python/src/Mac/Modules/evt/evtedit.py +++ /dev/null @@ -1,9 +0,0 @@ -f = Function(void, 'SystemClick', - (EventRecord_ptr, 'theEvent', InMode), - (WindowPtr, 'theWindow', InMode), -) -functions.append(f) - -f = Function(UInt32, 'TickCount', -) -functions.append(f) diff --git a/project/jni/python/src/Mac/Modules/evt/evtscan.py b/project/jni/python/src/Mac/Modules/evt/evtscan.py deleted file mode 100644 index ea0692cfe..000000000 --- a/project/jni/python/src/Mac/Modules/evt/evtscan.py +++ /dev/null @@ -1,80 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner - -LONG = "Events" -SHORT = "evt" -OBJECT = "NOTUSED" - -def main(): - input = LONG + ".h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - # This is non-functional today - if t == OBJECT and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def makeblacklistnames(self): - return [ - "KeyTranslate", - "GetEventMask", # I cannot seem to find this routine... - "WaitNextEvent", # Manually generated because of optional region - # Constants with funny definitions - "osEvtMessageMask", - # OS8 calls - 'SystemEvent', - 'SystemTask', - 'SystemClick', - 'GetOSEvent', - 'OSEventAvail', - ] - - def makeblacklisttypes(self): - return [ - "EvQElPtr", "QHdrPtr" - ] - - def makerepairinstructions(self): - return [ - ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")], - [("InBuffer", "*", "*")]), - - ([("void", "*", "OutMode"), ("long", "*", "InMode"), - ("long", "*", "OutMode")], - [("VarVarOutBuffer", "*", "InOutMode")]), - - ([("void", "wStorage", "OutMode")], - [("NullStorage", "*", "InMode")]), - - # GetKeys - ([('KeyMap', 'theKeys', 'InMode')], - [('*', '*', 'OutMode')]), - - # GetTicker - ([('unsigned long', '*', '*')], - [('unsigned_long', '*', '*')]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/evt/evtsupport.py b/project/jni/python/src/Mac/Modules/evt/evtsupport.py deleted file mode 100644 index f58da14a6..000000000 --- a/project/jni/python/src/Mac/Modules/evt/evtsupport.py +++ /dev/null @@ -1,92 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'Events.h' # The Apple header file -MODNAME = '_Evt' # The name of the module -OBJECTNAME = 'Event' # The basic name of the objects used here -KIND = 'Record' # Usually 'Ptr' or 'Handle' - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Evt' # The prefix for module-wide routines -OBJECTTYPE = OBJECTNAME + KIND # The C type used to represent them -OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects - -#WindowPeek = OpaqueByValueType("WindowPeek", OBJECTPREFIX) - -RgnHandle = FakeType("(RgnHandle)0") -# XXXX Should be next, but this will break a lot of code... -# RgnHandle = OpaqueByValueType("RgnHandle", "OptResObj") - -KeyMap = ArrayOutputBufferType("KeyMap") -##MacOSEventKind = Type("MacOSEventKind", "h") # Old-style -##MacOSEventMask = Type("MacOSEventMask", "h") # Old-style -EventMask = Type("EventMask", "H") -EventKind = Type("EventKind", "H") - -includestuff = includestuff + """ -#include - -""" - -# From here on it's basically all boiler plate... - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -##Method = OSErrWeakLinkMethodGenerator - -# Create and populate the lists -functions = [] -execfile(INPUTFILE) - -# Move TickCount here, for convenience -f = Function(UInt32, 'TickCount', -) -functions.append(f) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) - -WaitNextEvent_body = """ -Boolean _rv; -EventMask eventMask; -EventRecord theEvent; -UInt32 sleep; -Handle mouseregion = (Handle)0; - -if (!PyArg_ParseTuple(_args, "Hl|O&", - &eventMask, - &sleep, - OptResObj_Convert, &mouseregion)) - return NULL; -_rv = WaitNextEvent(eventMask, - &theEvent, - sleep, - (RgnHandle)mouseregion); -_res = Py_BuildValue("bO&", - _rv, - PyMac_BuildEventRecord, &theEvent); -return _res; -""" -f = ManualGenerator("WaitNextEvent", WaitNextEvent_body); -f.docstring = lambda: "(EventMask eventMask, UInt32 sleep [,RegionHandle]) -> (Boolean _rv, EventRecord theEvent)" -module.add(f) - - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/file/_Filemodule.c b/project/jni/python/src/Mac/Modules/file/_Filemodule.c deleted file mode 100644 index 22e12ecbb..000000000 --- a/project/jni/python/src/Mac/Modules/file/_Filemodule.c +++ /dev/null @@ -1,3410 +0,0 @@ - -/* ========================== Module _File ========================== */ - -#include "Python.h" - - - -#include "pymactoolbox.h" - -#ifndef HAVE_OSX105_SDK -typedef SInt16 FSIORefNum; -#endif - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE - -#ifndef __LP64__ -extern int _PyMac_GetFSSpec(PyObject *v, FSSpec *spec); -extern PyObject *_PyMac_BuildFSSpec(FSSpec *spec); -#define PyMac_BuildFSSpec _PyMac_BuildFSSpec -#endif /* __LP64__*/ - -extern int _PyMac_GetFSRef(PyObject *v, FSRef *fsr); -extern PyObject *_PyMac_BuildFSRef(FSRef *spec); -#define PyMac_BuildFSRef _PyMac_BuildFSRef -#define PyMac_GetFSSpec _PyMac_GetFSSpec -#define PyMac_GetFSRef _PyMac_GetFSRef - -#else /* !USE_TOOLBOX_OBJECT_GLUE */ - -#ifndef __LP64__ -extern int PyMac_GetFSSpec(PyObject *v, FSSpec *spec); -extern PyObject *PyMac_BuildFSSpec(FSSpec *spec); -#endif /* !__LP64__*/ - -extern int PyMac_GetFSRef(PyObject *v, FSRef *fsr); -extern PyObject *PyMac_BuildFSRef(FSRef *spec); - -#endif /* !USE_TOOLBOX_OBJECT_GLUE */ - -/* Forward declarations */ -static PyObject *FSRef_New(FSRef *itself); -#ifndef __LP64__ -static PyObject *FInfo_New(FInfo *itself); - -static PyObject *FSSpec_New(FSSpec *itself); -#define FSSpec_Convert PyMac_GetFSSpec -#endif /* !__LP64__ */ - -static PyObject *Alias_New(AliasHandle itself); -#ifndef __LP64__ -static int FInfo_Convert(PyObject *v, FInfo *p_itself); -#endif /* !__LP64__ */ -#define FSRef_Convert PyMac_GetFSRef -static int Alias_Convert(PyObject *v, AliasHandle *p_itself); - -/* -** UTCDateTime records -*/ -static int -UTCDateTime_Convert(PyObject *v, UTCDateTime *ptr) -{ - return PyArg_Parse(v, "(HlH)", &ptr->highSeconds, &ptr->lowSeconds, &ptr->fraction); -} - -static PyObject * -UTCDateTime_New(UTCDateTime *ptr) -{ - return Py_BuildValue("(HlH)", ptr->highSeconds, ptr->lowSeconds, ptr->fraction); -} - -/* -** Optional fsspec and fsref pointers. None will pass NULL -*/ -#ifndef __LP64__ -static int -myPyMac_GetOptFSSpecPtr(PyObject *v, FSSpec **spec) -{ - if (v == Py_None) { - *spec = NULL; - return 1; - } - return PyMac_GetFSSpec(v, *spec); -} -#endif /* !__LP64__ */ - -static int -myPyMac_GetOptFSRefPtr(PyObject *v, FSRef **ref) -{ - if (v == Py_None) { - *ref = NULL; - return 1; - } - return PyMac_GetFSRef(v, *ref); -} - -/* -** Parse/generate objsect -*/ -static PyObject * -PyMac_BuildHFSUniStr255(HFSUniStr255 *itself) -{ - - return Py_BuildValue("u#", itself->unicode, itself->length); -} - -#ifndef __LP64__ -static OSErr -_PyMac_GetFullPathname(FSSpec *fss, char *path, int len) -{ - FSRef fsr; - OSErr err; - - *path = '\0'; - err = FSpMakeFSRef(fss, &fsr); - if (err == fnfErr) { - /* FSSpecs can point to non-existing files, fsrefs can't. */ - FSSpec fss2; - int tocopy; - - err = FSMakeFSSpec(fss->vRefNum, fss->parID, - (unsigned char*)"", &fss2); - if (err) - return err; - err = FSpMakeFSRef(&fss2, &fsr); - if (err) - return err; - err = (OSErr)FSRefMakePath(&fsr, (unsigned char*)path, len-1); - if (err) - return err; - /* This part is not 100% safe: we append the filename part, but - ** I'm not sure that we don't run afoul of the various 8bit - ** encodings here. Will have to look this up at some point... - */ - strcat(path, "/"); - tocopy = fss->name[0]; - if ((strlen(path) + tocopy) >= len) - tocopy = len - strlen(path) - 1; - if (tocopy > 0) - strncat(path, (char*)fss->name+1, tocopy); - } - else { - if (err) - return err; - err = (OSErr)FSRefMakePath(&fsr, (unsigned char*)path, len); - if (err) - return err; - } - return 0; -} -#endif /* !__LP64__ */ - - -static PyObject *File_Error; - -/* ------------------- Object type FSCatalogInfo -------------------- */ - -static PyTypeObject FSCatalogInfo_Type; - -#define FSCatalogInfo_Check(x) ((x)->ob_type == &FSCatalogInfo_Type || PyObject_TypeCheck((x), &FSCatalogInfo_Type)) - -typedef struct FSCatalogInfoObject { - PyObject_HEAD - FSCatalogInfo ob_itself; -} FSCatalogInfoObject; - -static PyObject *FSCatalogInfo_New(FSCatalogInfo *itself) -{ - FSCatalogInfoObject *it; - if (itself == NULL) { Py_INCREF(Py_None); return Py_None; } - it = PyObject_NEW(FSCatalogInfoObject, &FSCatalogInfo_Type); - if (it == NULL) return NULL; - it->ob_itself = *itself; - return (PyObject *)it; -} - -static int FSCatalogInfo_Convert(PyObject *v, FSCatalogInfo *p_itself) -{ - if (!FSCatalogInfo_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "FSCatalogInfo required"); - return 0; - } - *p_itself = ((FSCatalogInfoObject *)v)->ob_itself; - return 1; -} - -static void FSCatalogInfo_dealloc(FSCatalogInfoObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyMethodDef FSCatalogInfo_methods[] = { - {NULL, NULL, 0} -}; - -static PyObject *FSCatalogInfo_get_nodeFlags(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("H", self->ob_itself.nodeFlags); -} - -static int FSCatalogInfo_set_nodeFlags(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "H", &self->ob_itself.nodeFlags)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_volume(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("h", self->ob_itself.volume); -} - -static int FSCatalogInfo_set_volume(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "h", &self->ob_itself.volume)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_parentDirID(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("l", self->ob_itself.parentDirID); -} - -static int FSCatalogInfo_set_parentDirID(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "l", &self->ob_itself.parentDirID)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_nodeID(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("l", self->ob_itself.nodeID); -} - -static int FSCatalogInfo_set_nodeID(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "l", &self->ob_itself.nodeID)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_createDate(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("O&", UTCDateTime_New, &self->ob_itself.createDate); -} - -static int FSCatalogInfo_set_createDate(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "O&", UTCDateTime_Convert, &self->ob_itself.createDate)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_contentModDate(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("O&", UTCDateTime_New, &self->ob_itself.contentModDate); -} - -static int FSCatalogInfo_set_contentModDate(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "O&", UTCDateTime_Convert, &self->ob_itself.contentModDate)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_attributeModDate(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("O&", UTCDateTime_New, &self->ob_itself.attributeModDate); -} - -static int FSCatalogInfo_set_attributeModDate(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "O&", UTCDateTime_Convert, &self->ob_itself.attributeModDate)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_accessDate(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("O&", UTCDateTime_New, &self->ob_itself.accessDate); -} - -static int FSCatalogInfo_set_accessDate(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "O&", UTCDateTime_Convert, &self->ob_itself.accessDate)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_backupDate(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("O&", UTCDateTime_New, &self->ob_itself.backupDate); -} - -static int FSCatalogInfo_set_backupDate(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "O&", UTCDateTime_Convert, &self->ob_itself.backupDate)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_permissions(FSCatalogInfoObject *self, void *closure) -{ - FSPermissionInfo* info = (FSPermissionInfo*)&(self->ob_itself.permissions); - return Py_BuildValue("(llll)", info->userID, info->groupID, info->userAccess, info->mode); -} - -static int FSCatalogInfo_set_permissions(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - long userID; - long groupID; - long userAccess; - long mode; - int r; - - FSPermissionInfo* info = (FSPermissionInfo*)&(self->ob_itself.permissions); - - r = PyArg_Parse(v, "(llll)", &userID, &groupID, &userAccess, &mode); - if (!r) { - return -1; - } - info->userID = userID; - info->groupID = groupID; - info->userAccess = userAccess; - info->mode = mode; - return 0; -} - -static PyObject *FSCatalogInfo_get_valence(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("l", self->ob_itself.valence); -} - -static int FSCatalogInfo_set_valence(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "l", &self->ob_itself.valence)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_dataLogicalSize(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("l", self->ob_itself.dataLogicalSize); -} - -static int FSCatalogInfo_set_dataLogicalSize(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "l", &self->ob_itself.dataLogicalSize)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_dataPhysicalSize(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("l", self->ob_itself.dataPhysicalSize); -} - -static int FSCatalogInfo_set_dataPhysicalSize(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "l", &self->ob_itself.dataPhysicalSize)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_rsrcLogicalSize(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("l", self->ob_itself.rsrcLogicalSize); -} - -static int FSCatalogInfo_set_rsrcLogicalSize(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "l", &self->ob_itself.rsrcLogicalSize)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_rsrcPhysicalSize(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("l", self->ob_itself.rsrcPhysicalSize); -} - -static int FSCatalogInfo_set_rsrcPhysicalSize(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "l", &self->ob_itself.rsrcPhysicalSize)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_sharingFlags(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("l", self->ob_itself.sharingFlags); -} - -static int FSCatalogInfo_set_sharingFlags(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "l", &self->ob_itself.sharingFlags)-1; - return 0; -} - -static PyObject *FSCatalogInfo_get_userPrivileges(FSCatalogInfoObject *self, void *closure) -{ - return Py_BuildValue("b", self->ob_itself.userPrivileges); -} - -static int FSCatalogInfo_set_userPrivileges(FSCatalogInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "b", &self->ob_itself.userPrivileges)-1; - return 0; -} - -static PyGetSetDef FSCatalogInfo_getsetlist[] = { - {"nodeFlags", (getter)FSCatalogInfo_get_nodeFlags, (setter)FSCatalogInfo_set_nodeFlags, NULL}, - {"volume", (getter)FSCatalogInfo_get_volume, (setter)FSCatalogInfo_set_volume, NULL}, - {"parentDirID", (getter)FSCatalogInfo_get_parentDirID, (setter)FSCatalogInfo_set_parentDirID, NULL}, - {"nodeID", (getter)FSCatalogInfo_get_nodeID, (setter)FSCatalogInfo_set_nodeID, NULL}, - {"createDate", (getter)FSCatalogInfo_get_createDate, (setter)FSCatalogInfo_set_createDate, NULL}, - {"contentModDate", (getter)FSCatalogInfo_get_contentModDate, (setter)FSCatalogInfo_set_contentModDate, NULL}, - {"attributeModDate", (getter)FSCatalogInfo_get_attributeModDate, (setter)FSCatalogInfo_set_attributeModDate, NULL}, - {"accessDate", (getter)FSCatalogInfo_get_accessDate, (setter)FSCatalogInfo_set_accessDate, NULL}, - {"backupDate", (getter)FSCatalogInfo_get_backupDate, (setter)FSCatalogInfo_set_backupDate, NULL}, - {"permissions", (getter)FSCatalogInfo_get_permissions, (setter)FSCatalogInfo_set_permissions, NULL}, - {"valence", (getter)FSCatalogInfo_get_valence, (setter)FSCatalogInfo_set_valence, NULL}, - {"dataLogicalSize", (getter)FSCatalogInfo_get_dataLogicalSize, (setter)FSCatalogInfo_set_dataLogicalSize, NULL}, - {"dataPhysicalSize", (getter)FSCatalogInfo_get_dataPhysicalSize, (setter)FSCatalogInfo_set_dataPhysicalSize, NULL}, - {"rsrcLogicalSize", (getter)FSCatalogInfo_get_rsrcLogicalSize, (setter)FSCatalogInfo_set_rsrcLogicalSize, NULL}, - {"rsrcPhysicalSize", (getter)FSCatalogInfo_get_rsrcPhysicalSize, (setter)FSCatalogInfo_set_rsrcPhysicalSize, NULL}, - {"sharingFlags", (getter)FSCatalogInfo_get_sharingFlags, (setter)FSCatalogInfo_set_sharingFlags, NULL}, - {"userPrivileges", (getter)FSCatalogInfo_get_userPrivileges, (setter)FSCatalogInfo_set_userPrivileges, NULL}, - {NULL, NULL, NULL, NULL}, -}; - - -#define FSCatalogInfo_compare NULL - -#define FSCatalogInfo_repr NULL - -#define FSCatalogInfo_hash NULL -static int FSCatalogInfo_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - static char *kw[] = { - "nodeFlags", - "volume", - "parentDirID", - "nodeID", - "createDate", - "contentModDate", - "atributeModDate", - "accessDate", - "backupDate", - "valence", - "dataLogicalSize", - "dataPhysicalSize", - "rsrcLogicalSize", - "rsrcPhysicalSize", - "sharingFlags", - "userPrivileges" - , 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "|HhllO&O&O&O&O&llllllb", kw, &((FSCatalogInfoObject *)_self)->ob_itself.nodeFlags, - &((FSCatalogInfoObject *)_self)->ob_itself.volume, - &((FSCatalogInfoObject *)_self)->ob_itself.parentDirID, - &((FSCatalogInfoObject *)_self)->ob_itself.nodeID, - UTCDateTime_Convert, &((FSCatalogInfoObject *)_self)->ob_itself.createDate, - UTCDateTime_Convert, &((FSCatalogInfoObject *)_self)->ob_itself.contentModDate, - UTCDateTime_Convert, &((FSCatalogInfoObject *)_self)->ob_itself.attributeModDate, - UTCDateTime_Convert, &((FSCatalogInfoObject *)_self)->ob_itself.accessDate, - UTCDateTime_Convert, &((FSCatalogInfoObject *)_self)->ob_itself.backupDate, - &((FSCatalogInfoObject *)_self)->ob_itself.valence, - &((FSCatalogInfoObject *)_self)->ob_itself.dataLogicalSize, - &((FSCatalogInfoObject *)_self)->ob_itself.dataPhysicalSize, - &((FSCatalogInfoObject *)_self)->ob_itself.rsrcLogicalSize, - &((FSCatalogInfoObject *)_self)->ob_itself.rsrcPhysicalSize, - &((FSCatalogInfoObject *)_self)->ob_itself.sharingFlags, - &((FSCatalogInfoObject *)_self)->ob_itself.userPrivileges)) - { - return -1; - } - return 0; -} - -#define FSCatalogInfo_tp_alloc PyType_GenericAlloc - -static PyObject *FSCatalogInfo_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - memset(&((FSCatalogInfoObject *)self)->ob_itself, 0, sizeof(FSCatalogInfo)); - return self; -} - -#define FSCatalogInfo_tp_free PyObject_Del - - -static PyTypeObject FSCatalogInfo_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "Carbon.File.FSCatalogInfo", /*tp_name*/ - sizeof(FSCatalogInfoObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) FSCatalogInfo_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) FSCatalogInfo_compare, /*tp_compare*/ - (reprfunc) FSCatalogInfo_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) FSCatalogInfo_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - FSCatalogInfo_methods, /* tp_methods */ - 0, /*tp_members*/ - FSCatalogInfo_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - FSCatalogInfo_tp_init, /* tp_init */ - FSCatalogInfo_tp_alloc, /* tp_alloc */ - FSCatalogInfo_tp_new, /* tp_new */ - FSCatalogInfo_tp_free, /* tp_free */ -}; - -/* ----------------- End object type FSCatalogInfo ------------------ */ - - -/* ----------------------- Object type FInfo ------------------------ */ - -#ifndef __LP64__ - -static PyTypeObject FInfo_Type; - -#define FInfo_Check(x) ((x)->ob_type == &FInfo_Type || PyObject_TypeCheck((x), &FInfo_Type)) - -typedef struct FInfoObject { - PyObject_HEAD - FInfo ob_itself; -} FInfoObject; - -static PyObject *FInfo_New(FInfo *itself) -{ - FInfoObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - it = PyObject_NEW(FInfoObject, &FInfo_Type); - if (it == NULL) return NULL; - it->ob_itself = *itself; - return (PyObject *)it; -} - -static int FInfo_Convert(PyObject *v, FInfo *p_itself) -{ - if (!FInfo_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "FInfo required"); - return 0; - } - *p_itself = ((FInfoObject *)v)->ob_itself; - return 1; -} - -static void FInfo_dealloc(FInfoObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyMethodDef FInfo_methods[] = { - {NULL, NULL, 0} -}; - -static PyObject *FInfo_get_Type(FInfoObject *self, void *closure) -{ - return Py_BuildValue("O&", PyMac_BuildOSType, self->ob_itself.fdType); -} - -static int FInfo_set_Type(FInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "O&", PyMac_GetOSType, &self->ob_itself.fdType)-1; - return 0; -} - -static PyObject *FInfo_get_Creator(FInfoObject *self, void *closure) -{ - return Py_BuildValue("O&", PyMac_BuildOSType, self->ob_itself.fdCreator); -} - -static int FInfo_set_Creator(FInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "O&", PyMac_GetOSType, &self->ob_itself.fdCreator)-1; - return 0; -} - -static PyObject *FInfo_get_Flags(FInfoObject *self, void *closure) -{ - return Py_BuildValue("H", self->ob_itself.fdFlags); -} - -static int FInfo_set_Flags(FInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "H", &self->ob_itself.fdFlags)-1; - return 0; -} - -static PyObject *FInfo_get_Location(FInfoObject *self, void *closure) -{ - return Py_BuildValue("O&", PyMac_BuildPoint, self->ob_itself.fdLocation); -} - -static int FInfo_set_Location(FInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "O&", PyMac_GetPoint, &self->ob_itself.fdLocation)-1; - return 0; -} - -static PyObject *FInfo_get_Fldr(FInfoObject *self, void *closure) -{ - return Py_BuildValue("h", self->ob_itself.fdFldr); -} - -static int FInfo_set_Fldr(FInfoObject *self, PyObject *v, void *closure) -{ - return PyArg_Parse(v, "h", &self->ob_itself.fdFldr)-1; - return 0; -} - -static PyGetSetDef FInfo_getsetlist[] = { - {"Type", (getter)FInfo_get_Type, (setter)FInfo_set_Type, "4-char file type"}, - {"Creator", (getter)FInfo_get_Creator, (setter)FInfo_set_Creator, "4-char file creator"}, - {"Flags", (getter)FInfo_get_Flags, (setter)FInfo_set_Flags, "Finder flag bits"}, - {"Location", (getter)FInfo_get_Location, (setter)FInfo_set_Location, "(x, y) location of the file's icon in its parent finder window"}, - {"Fldr", (getter)FInfo_get_Fldr, (setter)FInfo_set_Fldr, "Original folder, for 'put away'"}, - {NULL, NULL, NULL, NULL}, -}; - - -#define FInfo_compare NULL - -#define FInfo_repr NULL - -#define FInfo_hash NULL -static int FInfo_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - FInfo *itself = NULL; - static char *kw[] = {"itself", 0}; - - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "|O&", kw, FInfo_Convert, &itself)) - { - if (itself) memcpy(&((FInfoObject *)_self)->ob_itself, itself, sizeof(FInfo)); - return 0; - } - return -1; -} - -#define FInfo_tp_alloc PyType_GenericAlloc - -static PyObject *FInfo_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - memset(&((FInfoObject *)self)->ob_itself, 0, sizeof(FInfo)); - return self; -} - -#define FInfo_tp_free PyObject_Del - - -static PyTypeObject FInfo_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "Carbon.File.FInfo", /*tp_name*/ - sizeof(FInfoObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) FInfo_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) FInfo_compare, /*tp_compare*/ - (reprfunc) FInfo_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) FInfo_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - FInfo_methods, /* tp_methods */ - 0, /*tp_members*/ - FInfo_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - FInfo_tp_init, /* tp_init */ - FInfo_tp_alloc, /* tp_alloc */ - FInfo_tp_new, /* tp_new */ - FInfo_tp_free, /* tp_free */ -}; - -#endif /* !__LP64__ */ -/* --------------------- End object type FInfo ---------------------- */ - - -/* ----------------------- Object type Alias ------------------------ */ - -static PyTypeObject Alias_Type; - -#define Alias_Check(x) ((x)->ob_type == &Alias_Type || PyObject_TypeCheck((x), &Alias_Type)) - -typedef struct AliasObject { - PyObject_HEAD - AliasHandle ob_itself; - void (*ob_freeit)(AliasHandle ptr); -} AliasObject; - -static PyObject *Alias_New(AliasHandle itself) -{ - AliasObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - it = PyObject_NEW(AliasObject, &Alias_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - it->ob_freeit = NULL; - return (PyObject *)it; -} - -static int Alias_Convert(PyObject *v, AliasHandle *p_itself) -{ - if (!Alias_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "Alias required"); - return 0; - } - *p_itself = ((AliasObject *)v)->ob_itself; - return 1; -} - -static void Alias_dealloc(AliasObject *self) -{ - if (self->ob_freeit && self->ob_itself) - { - self->ob_freeit(self->ob_itself); - } - self->ob_itself = NULL; - self->ob_type->tp_free((PyObject *)self); -} - -#ifndef __LP64__ -static PyObject *Alias_ResolveAlias(AliasObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec fromFile__buf__; - FSSpec *fromFile = &fromFile__buf__; - FSSpec target; - Boolean wasChanged; - if (!PyArg_ParseTuple(_args, "O&", - myPyMac_GetOptFSSpecPtr, &fromFile)) - return NULL; - _err = ResolveAlias(fromFile, - _self->ob_itself, - &target, - &wasChanged); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&b", - FSSpec_New, &target, - wasChanged); - return _res; -} - -static PyObject *Alias_GetAliasInfo(AliasObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AliasInfoType index; - Str63 theString; - if (!PyArg_ParseTuple(_args, "h", - &index)) - return NULL; - _err = GetAliasInfo(_self->ob_itself, - index, - theString); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildStr255, theString); - return _res; -} - -static PyObject *Alias_ResolveAliasWithMountFlags(AliasObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec fromFile__buf__; - FSSpec *fromFile = &fromFile__buf__; - FSSpec target; - Boolean wasChanged; - unsigned long mountFlags; - if (!PyArg_ParseTuple(_args, "O&l", - myPyMac_GetOptFSSpecPtr, &fromFile, - &mountFlags)) - return NULL; - _err = ResolveAliasWithMountFlags(fromFile, - _self->ob_itself, - &target, - &wasChanged, - mountFlags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&b", - FSSpec_New, &target, - wasChanged); - return _res; -} - -static PyObject *Alias_FollowFinderAlias(AliasObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec fromFile__buf__; - FSSpec *fromFile = &fromFile__buf__; - Boolean logon; - FSSpec target; - Boolean wasChanged; - if (!PyArg_ParseTuple(_args, "O&b", - myPyMac_GetOptFSSpecPtr, &fromFile, - &logon)) - return NULL; - _err = FollowFinderAlias(fromFile, - _self->ob_itself, - logon, - &target, - &wasChanged); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&b", - FSSpec_New, &target, - wasChanged); - return _res; -} -#endif /* !__LP64__ */ - -static PyObject *Alias_FSResolveAliasWithMountFlags(AliasObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSRef fromFile__buf__; - FSRef *fromFile = &fromFile__buf__; - FSRef target; - Boolean wasChanged; - unsigned long mountFlags; - if (!PyArg_ParseTuple(_args, "O&l", - myPyMac_GetOptFSRefPtr, &fromFile, - &mountFlags)) - return NULL; - _err = FSResolveAliasWithMountFlags(fromFile, - _self->ob_itself, - &target, - &wasChanged, - mountFlags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&b", - FSRef_New, &target, - wasChanged); - return _res; -} - -static PyObject *Alias_FSResolveAlias(AliasObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSRef fromFile__buf__; - FSRef *fromFile = &fromFile__buf__; - FSRef target; - Boolean wasChanged; - if (!PyArg_ParseTuple(_args, "O&", - myPyMac_GetOptFSRefPtr, &fromFile)) - return NULL; - _err = FSResolveAlias(fromFile, - _self->ob_itself, - &target, - &wasChanged); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&b", - FSRef_New, &target, - wasChanged); - return _res; -} - -static PyObject *Alias_FSFollowFinderAlias(AliasObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSRef fromFile; - Boolean logon; - FSRef target; - Boolean wasChanged; - if (!PyArg_ParseTuple(_args, "b", - &logon)) - return NULL; - _err = FSFollowFinderAlias(&fromFile, - _self->ob_itself, - logon, - &target, - &wasChanged); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&b", - FSRef_New, &fromFile, - FSRef_New, &target, - wasChanged); - return _res; -} - -static PyMethodDef Alias_methods[] = { -#ifndef __LP64__ - {"ResolveAlias", (PyCFunction)Alias_ResolveAlias, 1, - PyDoc_STR("(FSSpec fromFile) -> (FSSpec target, Boolean wasChanged)")}, - {"GetAliasInfo", (PyCFunction)Alias_GetAliasInfo, 1, - PyDoc_STR("(AliasInfoType index) -> (Str63 theString)")}, - {"ResolveAliasWithMountFlags", (PyCFunction)Alias_ResolveAliasWithMountFlags, 1, - PyDoc_STR("(FSSpec fromFile, unsigned long mountFlags) -> (FSSpec target, Boolean wasChanged)")}, - {"FollowFinderAlias", (PyCFunction)Alias_FollowFinderAlias, 1, - PyDoc_STR("(FSSpec fromFile, Boolean logon) -> (FSSpec target, Boolean wasChanged)")}, -#endif /* !__LP64__ */ - {"FSResolveAliasWithMountFlags", (PyCFunction)Alias_FSResolveAliasWithMountFlags, 1, - PyDoc_STR("(FSRef fromFile, unsigned long mountFlags) -> (FSRef target, Boolean wasChanged)")}, - {"FSResolveAlias", (PyCFunction)Alias_FSResolveAlias, 1, - PyDoc_STR("(FSRef fromFile) -> (FSRef target, Boolean wasChanged)")}, - {"FSFollowFinderAlias", (PyCFunction)Alias_FSFollowFinderAlias, 1, - PyDoc_STR("(Boolean logon) -> (FSRef fromFile, FSRef target, Boolean wasChanged)")}, - {NULL, NULL, 0} -}; - -static PyObject *Alias_get_data(AliasObject *self, void *closure) -{ - int size; - PyObject *rv; - - size = GetHandleSize((Handle)self->ob_itself); - HLock((Handle)self->ob_itself); - rv = PyString_FromStringAndSize(*(Handle)self->ob_itself, size); - HUnlock((Handle)self->ob_itself); - return rv; - -} - -#define Alias_set_data NULL - -static PyGetSetDef Alias_getsetlist[] = { - {"data", (getter)Alias_get_data, (setter)Alias_set_data, "Raw data of the alias object"}, - {NULL, NULL, NULL, NULL}, -}; - - -#define Alias_compare NULL - -#define Alias_repr NULL - -#define Alias_hash NULL -static int Alias_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - AliasHandle itself = NULL; - char *rawdata = NULL; - int rawdatalen = 0; - Handle h; - static char *kw[] = {"itself", "rawdata", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "|O&s#", kw, Alias_Convert, &itself, &rawdata, &rawdatalen)) - return -1; - if (itself && rawdata) - { - PyErr_SetString(PyExc_TypeError, "Only one of itself or rawdata may be specified"); - return -1; - } - if (!itself && !rawdata) - { - PyErr_SetString(PyExc_TypeError, "One of itself or rawdata must be specified"); - return -1; - } - if (rawdata) - { - if ((h = NewHandle(rawdatalen)) == NULL) - { - PyErr_NoMemory(); - return -1; - } - HLock(h); - memcpy((char *)*h, rawdata, rawdatalen); - HUnlock(h); - ((AliasObject *)_self)->ob_itself = (AliasHandle)h; - return 0; - } - ((AliasObject *)_self)->ob_itself = itself; - return 0; -} - -#define Alias_tp_alloc PyType_GenericAlloc - -static PyObject *Alias_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((AliasObject *)self)->ob_itself = NULL; - return self; -} - -#define Alias_tp_free PyObject_Del - - -static PyTypeObject Alias_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "Carbon.File.Alias", /*tp_name*/ - sizeof(AliasObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) Alias_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) Alias_compare, /*tp_compare*/ - (reprfunc) Alias_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) Alias_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - Alias_methods, /* tp_methods */ - 0, /*tp_members*/ - Alias_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - Alias_tp_init, /* tp_init */ - Alias_tp_alloc, /* tp_alloc */ - Alias_tp_new, /* tp_new */ - Alias_tp_free, /* tp_free */ -}; - -/* --------------------- End object type Alias ---------------------- */ - - -/* ----------------------- Object type FSSpec ----------------------- */ -#ifndef __LP64__ - -static PyTypeObject FSSpec_Type; - -#define FSSpec_Check(x) ((x)->ob_type == &FSSpec_Type || PyObject_TypeCheck((x), &FSSpec_Type)) - -typedef struct FSSpecObject { - PyObject_HEAD - FSSpec ob_itself; -} FSSpecObject; - -static PyObject *FSSpec_New(FSSpec *itself) -{ - FSSpecObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - it = PyObject_NEW(FSSpecObject, &FSSpec_Type); - if (it == NULL) return NULL; - it->ob_itself = *itself; - return (PyObject *)it; -} - -static void FSSpec_dealloc(FSSpecObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *FSSpec_FSpOpenDF(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt8 permission; - short refNum; - if (!PyArg_ParseTuple(_args, "b", - &permission)) - return NULL; - _err = FSpOpenDF(&_self->ob_itself, - permission, - &refNum); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - refNum); - return _res; -} - -static PyObject *FSSpec_FSpOpenRF(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt8 permission; - short refNum; - if (!PyArg_ParseTuple(_args, "b", - &permission)) - return NULL; - _err = FSpOpenRF(&_self->ob_itself, - permission, - &refNum); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - refNum); - return _res; -} - -static PyObject *FSSpec_FSpCreate(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType creator; - OSType fileType; - ScriptCode scriptTag; - if (!PyArg_ParseTuple(_args, "O&O&h", - PyMac_GetOSType, &creator, - PyMac_GetOSType, &fileType, - &scriptTag)) - return NULL; - _err = FSpCreate(&_self->ob_itself, - creator, - fileType, - scriptTag); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSSpec_FSpDirCreate(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ScriptCode scriptTag; - long createdDirID; - if (!PyArg_ParseTuple(_args, "h", - &scriptTag)) - return NULL; - _err = FSpDirCreate(&_self->ob_itself, - scriptTag, - &createdDirID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - createdDirID); - return _res; -} - -static PyObject *FSSpec_FSpDelete(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = FSpDelete(&_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSSpec_FSpGetFInfo(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FInfo fndrInfo; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = FSpGetFInfo(&_self->ob_itself, - &fndrInfo); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - FInfo_New, &fndrInfo); - return _res; -} - -static PyObject *FSSpec_FSpSetFInfo(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FInfo fndrInfo; - if (!PyArg_ParseTuple(_args, "O&", - FInfo_Convert, &fndrInfo)) - return NULL; - _err = FSpSetFInfo(&_self->ob_itself, - &fndrInfo); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSSpec_FSpSetFLock(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = FSpSetFLock(&_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSSpec_FSpRstFLock(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = FSpRstFLock(&_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSSpec_FSpRename(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Str255 newName; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetStr255, newName)) - return NULL; - _err = FSpRename(&_self->ob_itself, - newName); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSSpec_FSpCatMove(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec dest; - if (!PyArg_ParseTuple(_args, "O&", - FSSpec_Convert, &dest)) - return NULL; - _err = FSpCatMove(&_self->ob_itself, - &dest); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSSpec_FSpExchangeFiles(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec dest; - if (!PyArg_ParseTuple(_args, "O&", - FSSpec_Convert, &dest)) - return NULL; - _err = FSpExchangeFiles(&_self->ob_itself, - &dest); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSSpec_FSpMakeFSRef(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSRef newRef; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = FSpMakeFSRef(&_self->ob_itself, - &newRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - FSRef_New, &newRef); - return _res; -} - -static PyObject *FSSpec_NewAliasMinimal(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AliasHandle alias; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = NewAliasMinimal(&_self->ob_itself, - &alias); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - Alias_New, alias); - return _res; -} - -static PyObject *FSSpec_IsAliasFile(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Boolean aliasFileFlag; - Boolean folderFlag; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = IsAliasFile(&_self->ob_itself, - &aliasFileFlag, - &folderFlag); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("bb", - aliasFileFlag, - folderFlag); - return _res; -} - -static PyObject *FSSpec_as_pathname(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - char strbuf[1024]; - OSErr err; - - if (!PyArg_ParseTuple(_args, "")) - return NULL; - err = _PyMac_GetFullPathname(&_self->ob_itself, strbuf, sizeof(strbuf)); - if ( err ) { - PyMac_Error(err); - return NULL; - } - _res = PyString_FromString(strbuf); - return _res; - -} - -static PyObject *FSSpec_as_tuple(FSSpecObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _res = Py_BuildValue("(iis#)", _self->ob_itself.vRefNum, _self->ob_itself.parID, - &_self->ob_itself.name[1], _self->ob_itself.name[0]); - return _res; - -} - -static PyMethodDef FSSpec_methods[] = { - {"FSpOpenDF", (PyCFunction)FSSpec_FSpOpenDF, 1, - PyDoc_STR("(SInt8 permission) -> (short refNum)")}, - {"FSpOpenRF", (PyCFunction)FSSpec_FSpOpenRF, 1, - PyDoc_STR("(SInt8 permission) -> (short refNum)")}, - {"FSpCreate", (PyCFunction)FSSpec_FSpCreate, 1, - PyDoc_STR("(OSType creator, OSType fileType, ScriptCode scriptTag) -> None")}, - {"FSpDirCreate", (PyCFunction)FSSpec_FSpDirCreate, 1, - PyDoc_STR("(ScriptCode scriptTag) -> (long createdDirID)")}, - {"FSpDelete", (PyCFunction)FSSpec_FSpDelete, 1, - PyDoc_STR("() -> None")}, - {"FSpGetFInfo", (PyCFunction)FSSpec_FSpGetFInfo, 1, - PyDoc_STR("() -> (FInfo fndrInfo)")}, - {"FSpSetFInfo", (PyCFunction)FSSpec_FSpSetFInfo, 1, - PyDoc_STR("(FInfo fndrInfo) -> None")}, - {"FSpSetFLock", (PyCFunction)FSSpec_FSpSetFLock, 1, - PyDoc_STR("() -> None")}, - {"FSpRstFLock", (PyCFunction)FSSpec_FSpRstFLock, 1, - PyDoc_STR("() -> None")}, - {"FSpRename", (PyCFunction)FSSpec_FSpRename, 1, - PyDoc_STR("(Str255 newName) -> None")}, - {"FSpCatMove", (PyCFunction)FSSpec_FSpCatMove, 1, - PyDoc_STR("(FSSpec dest) -> None")}, - {"FSpExchangeFiles", (PyCFunction)FSSpec_FSpExchangeFiles, 1, - PyDoc_STR("(FSSpec dest) -> None")}, - {"FSpMakeFSRef", (PyCFunction)FSSpec_FSpMakeFSRef, 1, - PyDoc_STR("() -> (FSRef newRef)")}, - {"NewAliasMinimal", (PyCFunction)FSSpec_NewAliasMinimal, 1, - PyDoc_STR("() -> (AliasHandle alias)")}, - {"IsAliasFile", (PyCFunction)FSSpec_IsAliasFile, 1, - PyDoc_STR("() -> (Boolean aliasFileFlag, Boolean folderFlag)")}, - {"as_pathname", (PyCFunction)FSSpec_as_pathname, 1, - PyDoc_STR("() -> string")}, - {"as_tuple", (PyCFunction)FSSpec_as_tuple, 1, - PyDoc_STR("() -> (vRefNum, dirID, name)")}, - {NULL, NULL, 0} -}; - -static PyObject *FSSpec_get_data(FSSpecObject *self, void *closure) -{ - return PyString_FromStringAndSize((char *)&self->ob_itself, sizeof(self->ob_itself)); -} - -#define FSSpec_set_data NULL - -static PyGetSetDef FSSpec_getsetlist[] = { - {"data", (getter)FSSpec_get_data, (setter)FSSpec_set_data, "Raw data of the FSSpec object"}, - {NULL, NULL, NULL, NULL}, -}; - - -#define FSSpec_compare NULL - -static PyObject * FSSpec_repr(FSSpecObject *self) -{ - char buf[512]; - PyOS_snprintf(buf, sizeof(buf), "%s((%d, %ld, '%.*s'))", - self->ob_type->tp_name, - self->ob_itself.vRefNum, - self->ob_itself.parID, - self->ob_itself.name[0], self->ob_itself.name+1); - return PyString_FromString(buf); -} - -#define FSSpec_hash NULL -static int FSSpec_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - PyObject *v = NULL; - char *rawdata = NULL; - int rawdatalen = 0; - static char *kw[] = {"itself", "rawdata", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "|Os#", kw, &v, &rawdata, &rawdatalen)) - return -1; - if (v && rawdata) - { - PyErr_SetString(PyExc_TypeError, "Only one of itself or rawdata may be specified"); - return -1; - } - if (!v && !rawdata) - { - PyErr_SetString(PyExc_TypeError, "One of itself or rawdata must be specified"); - return -1; - } - if (rawdata) - { - if (rawdatalen != sizeof(FSSpec)) - { - PyErr_SetString(PyExc_TypeError, "FSSpec rawdata incorrect size"); - return -1; - } - memcpy(&((FSSpecObject *)_self)->ob_itself, rawdata, rawdatalen); - return 0; - } - if (PyMac_GetFSSpec(v, &((FSSpecObject *)_self)->ob_itself)) return 0; - return -1; -} - -#define FSSpec_tp_alloc PyType_GenericAlloc - -static PyObject *FSSpec_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - memset(&((FSSpecObject *)self)->ob_itself, 0, sizeof(FSSpec)); - return self; -} - -#define FSSpec_tp_free PyObject_Del - - -static PyTypeObject FSSpec_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "Carbon.File.FSSpec", /*tp_name*/ - sizeof(FSSpecObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) FSSpec_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) FSSpec_compare, /*tp_compare*/ - (reprfunc) FSSpec_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) FSSpec_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - FSSpec_methods, /* tp_methods */ - 0, /*tp_members*/ - FSSpec_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - FSSpec_tp_init, /* tp_init */ - FSSpec_tp_alloc, /* tp_alloc */ - FSSpec_tp_new, /* tp_new */ - FSSpec_tp_free, /* tp_free */ -}; - -#endif /* !__LP64__ */ -/* --------------------- End object type FSSpec --------------------- */ - - -/* ----------------------- Object type FSRef ------------------------ */ - -static PyTypeObject FSRef_Type; - -#define FSRef_Check(x) ((x)->ob_type == &FSRef_Type || PyObject_TypeCheck((x), &FSRef_Type)) - -typedef struct FSRefObject { - PyObject_HEAD - FSRef ob_itself; -} FSRefObject; - -static PyObject *FSRef_New(FSRef *itself) -{ - FSRefObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - it = PyObject_NEW(FSRefObject, &FSRef_Type); - if (it == NULL) return NULL; - it->ob_itself = *itself; - return (PyObject *)it; -} - -static void FSRef_dealloc(FSRefObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *FSRef_FSMakeFSRefUnicode(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UniChar *nameLength__in__; - UniCharCount nameLength__len__; - int nameLength__in_len__; - TextEncoding textEncodingHint; - FSRef newRef; - if (!PyArg_ParseTuple(_args, "u#l", - &nameLength__in__, &nameLength__in_len__, - &textEncodingHint)) - return NULL; - nameLength__len__ = nameLength__in_len__; - _err = FSMakeFSRefUnicode(&_self->ob_itself, - nameLength__len__, nameLength__in__, - textEncodingHint, - &newRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - FSRef_New, &newRef); - return _res; -} - -static PyObject *FSRef_FSCompareFSRefs(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSRef ref2; - if (!PyArg_ParseTuple(_args, "O&", - FSRef_Convert, &ref2)) - return NULL; - _err = FSCompareFSRefs(&_self->ob_itself, - &ref2); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSRef_FSCreateFileUnicode(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UniChar *nameLength__in__; - UniCharCount nameLength__len__; - int nameLength__in_len__; - FSCatalogInfoBitmap whichInfo; - FSCatalogInfo catalogInfo; - FSRef newRef; -#ifndef __LP64__ - FSSpec newSpec; -#endif - if (!PyArg_ParseTuple(_args, "u#lO&", - &nameLength__in__, &nameLength__in_len__, - &whichInfo, - FSCatalogInfo_Convert, &catalogInfo)) - return NULL; - nameLength__len__ = nameLength__in_len__; - _err = FSCreateFileUnicode(&_self->ob_itself, - nameLength__len__, nameLength__in__, - whichInfo, - &catalogInfo, - &newRef, -#ifndef __LP64__ - &newSpec -#else /* __LP64__ */ - NULL -#endif /* __LP64__*/ - ); - if (_err != noErr) return PyMac_Error(_err); - -#ifndef __LP64__ - _res = Py_BuildValue("O&O&", - FSRef_New, &newRef, - FSSpec_New, &newSpec); -#else /* __LP64__ */ - _res = Py_BuildValue("O&O", FSRef_New, &newRef, Py_None); -#endif /* __LP64__ */ - - return _res; -} - -static PyObject *FSRef_FSCreateDirectoryUnicode(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UniChar *nameLength__in__; - UniCharCount nameLength__len__; - int nameLength__in_len__; - FSCatalogInfoBitmap whichInfo; - FSCatalogInfo catalogInfo; - FSRef newRef; -#ifndef __LP64__ - FSSpec newSpec; -#endif /* !__LP64__ */ - UInt32 newDirID; - if (!PyArg_ParseTuple(_args, "u#lO&", - &nameLength__in__, &nameLength__in_len__, - &whichInfo, - FSCatalogInfo_Convert, &catalogInfo)) - return NULL; - nameLength__len__ = nameLength__in_len__; - _err = FSCreateDirectoryUnicode(&_self->ob_itself, - nameLength__len__, nameLength__in__, - whichInfo, - &catalogInfo, - &newRef, -#ifndef __LP64__ - &newSpec, -#else /* !__LP64__ */ - NULL, -#endif /* !__LP64__ */ - &newDirID); - if (_err != noErr) return PyMac_Error(_err); - -#ifndef __LP64__ - _res = Py_BuildValue("O&O&l", - FSRef_New, &newRef, - FSSpec_New, &newSpec, - newDirID); -#else /* __LP64__ */ - _res = Py_BuildValue("O&Ol", - FSRef_New, &newRef, - Py_None, - newDirID); -#endif /* __LP64__ */ - return _res; -} - -static PyObject *FSRef_FSDeleteObject(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = FSDeleteObject(&_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSRef_FSMoveObject(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSRef destDirectory; - FSRef newRef; - if (!PyArg_ParseTuple(_args, "O&", - FSRef_Convert, &destDirectory)) - return NULL; - _err = FSMoveObject(&_self->ob_itself, - &destDirectory, - &newRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - FSRef_New, &newRef); - return _res; -} - -static PyObject *FSRef_FSExchangeObjects(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSRef destRef; - if (!PyArg_ParseTuple(_args, "O&", - FSRef_Convert, &destRef)) - return NULL; - _err = FSExchangeObjects(&_self->ob_itself, - &destRef); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSRef_FSRenameUnicode(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UniChar *nameLength__in__; - UniCharCount nameLength__len__; - int nameLength__in_len__; - TextEncoding textEncodingHint; - FSRef newRef; - if (!PyArg_ParseTuple(_args, "u#l", - &nameLength__in__, &nameLength__in_len__, - &textEncodingHint)) - return NULL; - nameLength__len__ = nameLength__in_len__; - _err = FSRenameUnicode(&_self->ob_itself, - nameLength__len__, nameLength__in__, - textEncodingHint, - &newRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - FSRef_New, &newRef); - return _res; -} - -static PyObject *FSRef_FSGetCatalogInfo(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSCatalogInfoBitmap whichInfo; - FSCatalogInfo catalogInfo; - HFSUniStr255 outName; -#ifndef __LP64__ - FSSpec fsSpec; -#endif /* !__LP64__ */ - FSRef parentRef; - if (!PyArg_ParseTuple(_args, "l", - &whichInfo)) - return NULL; - _err = FSGetCatalogInfo(&_self->ob_itself, - whichInfo, - &catalogInfo, - &outName, -#ifndef __LP64__ - &fsSpec, -#else /* __LP64__ */ - NULL, -#endif /* __LP64__ */ - &parentRef); - if (_err != noErr) return PyMac_Error(_err); - -#ifndef __LP64__ - _res = Py_BuildValue("O&O&O&O&", - FSCatalogInfo_New, &catalogInfo, - PyMac_BuildHFSUniStr255, &outName, - FSSpec_New, &fsSpec, - FSRef_New, &parentRef); -#else /* __LP64__ */ - _res = Py_BuildValue("O&O&OO&", - FSCatalogInfo_New, &catalogInfo, - PyMac_BuildHFSUniStr255, &outName, - Py_None, - FSRef_New, &parentRef); -#endif /* __LP64__ */ - return _res; -} - -static PyObject *FSRef_FSSetCatalogInfo(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSCatalogInfoBitmap whichInfo; - FSCatalogInfo catalogInfo; - if (!PyArg_ParseTuple(_args, "lO&", - &whichInfo, - FSCatalogInfo_Convert, &catalogInfo)) - return NULL; - _err = FSSetCatalogInfo(&_self->ob_itself, - whichInfo, - &catalogInfo); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSRef_FSCreateFork(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UniChar *forkNameLength__in__; - UniCharCount forkNameLength__len__; - int forkNameLength__in_len__; - if (!PyArg_ParseTuple(_args, "u#", - &forkNameLength__in__, &forkNameLength__in_len__)) - return NULL; - forkNameLength__len__ = forkNameLength__in_len__; - _err = FSCreateFork(&_self->ob_itself, - forkNameLength__len__, forkNameLength__in__); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSRef_FSDeleteFork(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UniChar *forkNameLength__in__; - UniCharCount forkNameLength__len__; - int forkNameLength__in_len__; - if (!PyArg_ParseTuple(_args, "u#", - &forkNameLength__in__, &forkNameLength__in_len__)) - return NULL; - forkNameLength__len__ = forkNameLength__in_len__; - _err = FSDeleteFork(&_self->ob_itself, - forkNameLength__len__, forkNameLength__in__); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSRef_FSOpenFork(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UniChar *forkNameLength__in__; - UniCharCount forkNameLength__len__; - int forkNameLength__in_len__; - SInt8 permissions; - FSIORefNum forkRefNum; - if (!PyArg_ParseTuple(_args, "u#b", - &forkNameLength__in__, &forkNameLength__in_len__, - &permissions)) - return NULL; - forkNameLength__len__ = forkNameLength__in_len__; - _err = FSOpenFork(&_self->ob_itself, - forkNameLength__len__, forkNameLength__in__, - permissions, - &forkRefNum); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - forkRefNum); - return _res; -} - -static PyObject *FSRef_FNNotify(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FNMessage message; - OptionBits flags; - if (!PyArg_ParseTuple(_args, "ll", - &message, - &flags)) - return NULL; - _err = FNNotify(&_self->ob_itself, - message, - flags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *FSRef_FSNewAliasMinimal(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - AliasHandle inAlias; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = FSNewAliasMinimal(&_self->ob_itself, - &inAlias); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - Alias_New, inAlias); - return _res; -} - -static PyObject *FSRef_FSIsAliasFile(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Boolean aliasFileFlag; - Boolean folderFlag; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = FSIsAliasFile(&_self->ob_itself, - &aliasFileFlag, - &folderFlag); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("bb", - aliasFileFlag, - folderFlag); - return _res; -} - -static PyObject *FSRef_FSRefMakePath(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - OSStatus _err; -#define MAXPATHNAME 1024 - UInt8 path[MAXPATHNAME]; - UInt32 maxPathSize = MAXPATHNAME; - - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = FSRefMakePath(&_self->ob_itself, - path, - maxPathSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("s", path); - return _res; - -} - -static PyObject *FSRef_as_pathname(FSRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _res = FSRef_FSRefMakePath(_self, _args); - return _res; - -} - -static PyMethodDef FSRef_methods[] = { - {"FSMakeFSRefUnicode", (PyCFunction)FSRef_FSMakeFSRefUnicode, 1, - PyDoc_STR("(Buffer nameLength, TextEncoding textEncodingHint) -> (FSRef newRef)")}, - {"FSCompareFSRefs", (PyCFunction)FSRef_FSCompareFSRefs, 1, - PyDoc_STR("(FSRef ref2) -> None")}, - {"FSCreateFileUnicode", (PyCFunction)FSRef_FSCreateFileUnicode, 1, - PyDoc_STR("(Buffer nameLength, FSCatalogInfoBitmap whichInfo, FSCatalogInfo catalogInfo) -> (FSRef newRef, FSSpec newSpec)")}, - {"FSCreateDirectoryUnicode", (PyCFunction)FSRef_FSCreateDirectoryUnicode, 1, - PyDoc_STR("(Buffer nameLength, FSCatalogInfoBitmap whichInfo, FSCatalogInfo catalogInfo) -> (FSRef newRef, FSSpec newSpec, UInt32 newDirID)")}, - {"FSDeleteObject", (PyCFunction)FSRef_FSDeleteObject, 1, - PyDoc_STR("() -> None")}, - {"FSMoveObject", (PyCFunction)FSRef_FSMoveObject, 1, - PyDoc_STR("(FSRef destDirectory) -> (FSRef newRef)")}, - {"FSExchangeObjects", (PyCFunction)FSRef_FSExchangeObjects, 1, - PyDoc_STR("(FSRef destRef) -> None")}, - {"FSRenameUnicode", (PyCFunction)FSRef_FSRenameUnicode, 1, - PyDoc_STR("(Buffer nameLength, TextEncoding textEncodingHint) -> (FSRef newRef)")}, - {"FSGetCatalogInfo", (PyCFunction)FSRef_FSGetCatalogInfo, 1, - PyDoc_STR("(FSCatalogInfoBitmap whichInfo) -> (FSCatalogInfo catalogInfo, HFSUniStr255 outName, FSSpec fsSpec, FSRef parentRef)")}, - {"FSSetCatalogInfo", (PyCFunction)FSRef_FSSetCatalogInfo, 1, - PyDoc_STR("(FSCatalogInfoBitmap whichInfo, FSCatalogInfo catalogInfo) -> None")}, - {"FSCreateFork", (PyCFunction)FSRef_FSCreateFork, 1, - PyDoc_STR("(Buffer forkNameLength) -> None")}, - {"FSDeleteFork", (PyCFunction)FSRef_FSDeleteFork, 1, - PyDoc_STR("(Buffer forkNameLength) -> None")}, - {"FSOpenFork", (PyCFunction)FSRef_FSOpenFork, 1, - PyDoc_STR("(Buffer forkNameLength, SInt8 permissions) -> (SInt16 forkRefNum)")}, - {"FNNotify", (PyCFunction)FSRef_FNNotify, 1, - PyDoc_STR("(FNMessage message, OptionBits flags) -> None")}, - {"FSNewAliasMinimal", (PyCFunction)FSRef_FSNewAliasMinimal, 1, - PyDoc_STR("() -> (AliasHandle inAlias)")}, - {"FSIsAliasFile", (PyCFunction)FSRef_FSIsAliasFile, 1, - PyDoc_STR("() -> (Boolean aliasFileFlag, Boolean folderFlag)")}, - {"FSRefMakePath", (PyCFunction)FSRef_FSRefMakePath, 1, - PyDoc_STR("() -> string")}, - {"as_pathname", (PyCFunction)FSRef_as_pathname, 1, - PyDoc_STR("() -> string")}, - {NULL, NULL, 0} -}; - -static PyObject *FSRef_get_data(FSRefObject *self, void *closure) -{ - return PyString_FromStringAndSize((char *)&self->ob_itself, sizeof(self->ob_itself)); -} - -#define FSRef_set_data NULL - -static PyGetSetDef FSRef_getsetlist[] = { - {"data", (getter)FSRef_get_data, (setter)FSRef_set_data, "Raw data of the FSRef object"}, - {NULL, NULL, NULL, NULL}, -}; - - -#define FSRef_compare NULL - -#define FSRef_repr NULL - -#define FSRef_hash NULL -static int FSRef_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - PyObject *v = NULL; - char *rawdata = NULL; - int rawdatalen = 0; - static char *kw[] = {"itself", "rawdata", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "|Os#", kw, &v, &rawdata, &rawdatalen)) - return -1; - if (v && rawdata) - { - PyErr_SetString(PyExc_TypeError, "Only one of itself or rawdata may be specified"); - return -1; - } - if (!v && !rawdata) - { - PyErr_SetString(PyExc_TypeError, "One of itself or rawdata must be specified"); - return -1; - } - if (rawdata) - { - if (rawdatalen != sizeof(FSRef)) - { - PyErr_SetString(PyExc_TypeError, "FSRef rawdata incorrect size"); - return -1; - } - memcpy(&((FSRefObject *)_self)->ob_itself, rawdata, rawdatalen); - return 0; - } - if (PyMac_GetFSRef(v, &((FSRefObject *)_self)->ob_itself)) return 0; - return -1; -} - -#define FSRef_tp_alloc PyType_GenericAlloc - -static PyObject *FSRef_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - memset(&((FSRefObject *)self)->ob_itself, 0, sizeof(FSRef)); - return self; -} - -#define FSRef_tp_free PyObject_Del - - -static PyTypeObject FSRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "Carbon.File.FSRef", /*tp_name*/ - sizeof(FSRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) FSRef_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) FSRef_compare, /*tp_compare*/ - (reprfunc) FSRef_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) FSRef_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - FSRef_methods, /* tp_methods */ - 0, /*tp_members*/ - FSRef_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - FSRef_tp_init, /* tp_init */ - FSRef_tp_alloc, /* tp_alloc */ - FSRef_tp_new, /* tp_new */ - FSRef_tp_free, /* tp_free */ -}; - -/* --------------------- End object type FSRef ---------------------- */ - -#ifndef __LP64__ -static PyObject *File_UnmountVol(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Str63 volName; - short vRefNum; - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetStr255, volName, - &vRefNum)) - return NULL; - _err = UnmountVol(volName, - vRefNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_FlushVol(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Str63 volName; - short vRefNum; - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetStr255, volName, - &vRefNum)) - return NULL; - _err = FlushVol(volName, - vRefNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_HSetVol(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Str63 volName; - short vRefNum; - long dirID; - if (!PyArg_ParseTuple(_args, "O&hl", - PyMac_GetStr255, volName, - &vRefNum, - &dirID)) - return NULL; - _err = HSetVol(volName, - vRefNum, - dirID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_FSClose(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short refNum; - if (!PyArg_ParseTuple(_args, "h", - &refNum)) - return NULL; - _err = FSClose(refNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_Allocate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short refNum; - long count; - if (!PyArg_ParseTuple(_args, "h", - &refNum)) - return NULL; - _err = Allocate(refNum, - &count); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - count); - return _res; -} - -static PyObject *File_GetEOF(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short refNum; - long logEOF; - if (!PyArg_ParseTuple(_args, "h", - &refNum)) - return NULL; - _err = GetEOF(refNum, - &logEOF); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - logEOF); - return _res; -} - -static PyObject *File_SetEOF(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short refNum; - long logEOF; - if (!PyArg_ParseTuple(_args, "hl", - &refNum, - &logEOF)) - return NULL; - _err = SetEOF(refNum, - logEOF); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_GetFPos(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short refNum; - long filePos; - if (!PyArg_ParseTuple(_args, "h", - &refNum)) - return NULL; - _err = GetFPos(refNum, - &filePos); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - filePos); - return _res; -} - -static PyObject *File_SetFPos(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short refNum; - short posMode; - long posOff; - if (!PyArg_ParseTuple(_args, "hhl", - &refNum, - &posMode, - &posOff)) - return NULL; - _err = SetFPos(refNum, - posMode, - posOff); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_GetVRefNum(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short fileRefNum; - short vRefNum; - if (!PyArg_ParseTuple(_args, "h", - &fileRefNum)) - return NULL; - _err = GetVRefNum(fileRefNum, - &vRefNum); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - vRefNum); - return _res; -} - -static PyObject *File_HGetVol(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - StringPtr volName; - short vRefNum; - long dirID; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetStr255, &volName)) - return NULL; - _err = HGetVol(volName, - &vRefNum, - &dirID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("hl", - vRefNum, - dirID); - return _res; -} - -static PyObject *File_HOpen(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - Str255 fileName; - SInt8 permission; - short refNum; - if (!PyArg_ParseTuple(_args, "hlO&b", - &vRefNum, - &dirID, - PyMac_GetStr255, fileName, - &permission)) - return NULL; - _err = HOpen(vRefNum, - dirID, - fileName, - permission, - &refNum); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - refNum); - return _res; -} - -static PyObject *File_HOpenDF(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - Str255 fileName; - SInt8 permission; - short refNum; - if (!PyArg_ParseTuple(_args, "hlO&b", - &vRefNum, - &dirID, - PyMac_GetStr255, fileName, - &permission)) - return NULL; - _err = HOpenDF(vRefNum, - dirID, - fileName, - permission, - &refNum); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - refNum); - return _res; -} - -static PyObject *File_HOpenRF(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - Str255 fileName; - SInt8 permission; - short refNum; - if (!PyArg_ParseTuple(_args, "hlO&b", - &vRefNum, - &dirID, - PyMac_GetStr255, fileName, - &permission)) - return NULL; - _err = HOpenRF(vRefNum, - dirID, - fileName, - permission, - &refNum); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - refNum); - return _res; -} - -static PyObject *File_AllocContig(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short refNum; - long count; - if (!PyArg_ParseTuple(_args, "h", - &refNum)) - return NULL; - _err = AllocContig(refNum, - &count); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - count); - return _res; -} - -static PyObject *File_HCreate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - Str255 fileName; - OSType creator; - OSType fileType; - if (!PyArg_ParseTuple(_args, "hlO&O&O&", - &vRefNum, - &dirID, - PyMac_GetStr255, fileName, - PyMac_GetOSType, &creator, - PyMac_GetOSType, &fileType)) - return NULL; - _err = HCreate(vRefNum, - dirID, - fileName, - creator, - fileType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_DirCreate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long parentDirID; - Str255 directoryName; - long createdDirID; - if (!PyArg_ParseTuple(_args, "hlO&", - &vRefNum, - &parentDirID, - PyMac_GetStr255, directoryName)) - return NULL; - _err = DirCreate(vRefNum, - parentDirID, - directoryName, - &createdDirID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - createdDirID); - return _res; -} - -static PyObject *File_HDelete(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - Str255 fileName; - if (!PyArg_ParseTuple(_args, "hlO&", - &vRefNum, - &dirID, - PyMac_GetStr255, fileName)) - return NULL; - _err = HDelete(vRefNum, - dirID, - fileName); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_HGetFInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - Str255 fileName; - FInfo fndrInfo; - if (!PyArg_ParseTuple(_args, "hlO&", - &vRefNum, - &dirID, - PyMac_GetStr255, fileName)) - return NULL; - _err = HGetFInfo(vRefNum, - dirID, - fileName, - &fndrInfo); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - FInfo_New, &fndrInfo); - return _res; -} - -static PyObject *File_HSetFInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - Str255 fileName; - FInfo fndrInfo; - if (!PyArg_ParseTuple(_args, "hlO&O&", - &vRefNum, - &dirID, - PyMac_GetStr255, fileName, - FInfo_Convert, &fndrInfo)) - return NULL; - _err = HSetFInfo(vRefNum, - dirID, - fileName, - &fndrInfo); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_HSetFLock(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - Str255 fileName; - if (!PyArg_ParseTuple(_args, "hlO&", - &vRefNum, - &dirID, - PyMac_GetStr255, fileName)) - return NULL; - _err = HSetFLock(vRefNum, - dirID, - fileName); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_HRstFLock(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - Str255 fileName; - if (!PyArg_ParseTuple(_args, "hlO&", - &vRefNum, - &dirID, - PyMac_GetStr255, fileName)) - return NULL; - _err = HRstFLock(vRefNum, - dirID, - fileName); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_HRename(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - Str255 oldName; - Str255 newName; - if (!PyArg_ParseTuple(_args, "hlO&O&", - &vRefNum, - &dirID, - PyMac_GetStr255, oldName, - PyMac_GetStr255, newName)) - return NULL; - _err = HRename(vRefNum, - dirID, - oldName, - newName); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_CatMove(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - Str255 oldName; - long newDirID; - Str255 newName; - if (!PyArg_ParseTuple(_args, "hlO&lO&", - &vRefNum, - &dirID, - PyMac_GetStr255, oldName, - &newDirID, - PyMac_GetStr255, newName)) - return NULL; - _err = CatMove(vRefNum, - dirID, - oldName, - newDirID, - newName); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_FSMakeFSSpec(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - Str255 fileName; - FSSpec spec; - if (!PyArg_ParseTuple(_args, "hlO&", - &vRefNum, - &dirID, - PyMac_GetStr255, fileName)) - return NULL; - _err = FSMakeFSSpec(vRefNum, - dirID, - fileName, - &spec); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - FSSpec_New, &spec); - return _res; -} -#endif /* !__LP64__ */ - -static PyObject *File_FSGetForkPosition(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 forkRefNum; - SInt64 position; - if (!PyArg_ParseTuple(_args, "h", - &forkRefNum)) - return NULL; - _err = FSGetForkPosition(forkRefNum, - &position); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("L", - position); - return _res; -} - -static PyObject *File_FSSetForkPosition(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 forkRefNum; - UInt16 positionMode; - SInt64 positionOffset; - if (!PyArg_ParseTuple(_args, "hHL", - &forkRefNum, - &positionMode, - &positionOffset)) - return NULL; - _err = FSSetForkPosition(forkRefNum, - positionMode, - positionOffset); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_FSGetForkSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 forkRefNum; - SInt64 forkSize; - if (!PyArg_ParseTuple(_args, "h", - &forkRefNum)) - return NULL; - _err = FSGetForkSize(forkRefNum, - &forkSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("L", - forkSize); - return _res; -} - -static PyObject *File_FSSetForkSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 forkRefNum; - UInt16 positionMode; - SInt64 positionOffset; - if (!PyArg_ParseTuple(_args, "hHL", - &forkRefNum, - &positionMode, - &positionOffset)) - return NULL; - _err = FSSetForkSize(forkRefNum, - positionMode, - positionOffset); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_FSAllocateFork(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 forkRefNum; - FSAllocationFlags flags; - UInt16 positionMode; - SInt64 positionOffset; - UInt64 requestCount; - UInt64 actualCount; - if (!PyArg_ParseTuple(_args, "hHHLL", - &forkRefNum, - &flags, - &positionMode, - &positionOffset, - &requestCount)) - return NULL; - _err = FSAllocateFork(forkRefNum, - flags, - positionMode, - positionOffset, - requestCount, - &actualCount); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("L", - actualCount); - return _res; -} - -static PyObject *File_FSFlushFork(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 forkRefNum; - if (!PyArg_ParseTuple(_args, "h", - &forkRefNum)) - return NULL; - _err = FSFlushFork(forkRefNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_FSCloseFork(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 forkRefNum; - if (!PyArg_ParseTuple(_args, "h", - &forkRefNum)) - return NULL; - _err = FSCloseFork(forkRefNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_FSGetDataForkName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - HFSUniStr255 dataForkName; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = FSGetDataForkName(&dataForkName); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildHFSUniStr255, &dataForkName); - return _res; -} - -static PyObject *File_FSGetResourceForkName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - HFSUniStr255 resourceForkName; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = FSGetResourceForkName(&resourceForkName); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildHFSUniStr255, &resourceForkName); - return _res; -} - -static PyObject *File_FSPathMakeRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt8 * path; - FSRef ref; - Boolean isDirectory; - if (!PyArg_ParseTuple(_args, "s", - &path)) - return NULL; - _err = FSPathMakeRef(path, - &ref, - &isDirectory); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&b", - FSRef_New, &ref, - isDirectory); - return _res; -} - -static PyObject *File_FNNotifyByPath(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt8 * path; - FNMessage message; - OptionBits flags; - if (!PyArg_ParseTuple(_args, "sll", - &path, - &message, - &flags)) - return NULL; - _err = FNNotifyByPath(path, - message, - flags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *File_FNNotifyAll(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FNMessage message; - OptionBits flags; - if (!PyArg_ParseTuple(_args, "ll", - &message, - &flags)) - return NULL; - _err = FNNotifyAll(message, - flags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -#ifndef __LP64__ -static PyObject *File_NewAlias(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec fromFile__buf__; - FSSpec *fromFile = &fromFile__buf__; - FSSpec target; - AliasHandle alias; - if (!PyArg_ParseTuple(_args, "O&O&", - myPyMac_GetOptFSSpecPtr, &fromFile, - FSSpec_Convert, &target)) - return NULL; - _err = NewAlias(fromFile, - &target, - &alias); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - Alias_New, alias); - return _res; -} - -static PyObject *File_NewAliasMinimalFromFullPath(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - char *fullPath__in__; - int fullPath__len__; - int fullPath__in_len__; - Str32 zoneName; - Str31 serverName; - AliasHandle alias; - if (!PyArg_ParseTuple(_args, "s#O&O&", - &fullPath__in__, &fullPath__in_len__, - PyMac_GetStr255, zoneName, - PyMac_GetStr255, serverName)) - return NULL; - fullPath__len__ = fullPath__in_len__; - _err = NewAliasMinimalFromFullPath(fullPath__len__, fullPath__in__, - zoneName, - serverName, - &alias); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - Alias_New, alias); - return _res; -} - -static PyObject *File_ResolveAliasFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec theSpec; - Boolean resolveAliasChains; - Boolean targetIsFolder; - Boolean wasAliased; - if (!PyArg_ParseTuple(_args, "O&b", - FSSpec_Convert, &theSpec, - &resolveAliasChains)) - return NULL; - _err = ResolveAliasFile(&theSpec, - resolveAliasChains, - &targetIsFolder, - &wasAliased); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&bb", - FSSpec_New, &theSpec, - targetIsFolder, - wasAliased); - return _res; -} - -static PyObject *File_ResolveAliasFileWithMountFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec theSpec; - Boolean resolveAliasChains; - Boolean targetIsFolder; - Boolean wasAliased; - unsigned long mountFlags; - if (!PyArg_ParseTuple(_args, "O&bl", - FSSpec_Convert, &theSpec, - &resolveAliasChains, - &mountFlags)) - return NULL; - _err = ResolveAliasFileWithMountFlags(&theSpec, - resolveAliasChains, - &targetIsFolder, - &wasAliased, - mountFlags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&bb", - FSSpec_New, &theSpec, - targetIsFolder, - wasAliased); - return _res; -} - -static PyObject *File_UpdateAlias(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec fromFile__buf__; - FSSpec *fromFile = &fromFile__buf__; - FSSpec target; - AliasHandle alias; - Boolean wasChanged; - if (!PyArg_ParseTuple(_args, "O&O&O&", - myPyMac_GetOptFSSpecPtr, &fromFile, - FSSpec_Convert, &target, - Alias_Convert, &alias)) - return NULL; - _err = UpdateAlias(fromFile, - &target, - alias, - &wasChanged); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - wasChanged); - return _res; -} - -static PyObject *File_ResolveAliasFileWithMountFlagsNoUI(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec theSpec; - Boolean resolveAliasChains; - Boolean targetIsFolder; - Boolean wasAliased; - unsigned long mountFlags; - if (!PyArg_ParseTuple(_args, "O&bl", - FSSpec_Convert, &theSpec, - &resolveAliasChains, - &mountFlags)) - return NULL; - _err = ResolveAliasFileWithMountFlagsNoUI(&theSpec, - resolveAliasChains, - &targetIsFolder, - &wasAliased, - mountFlags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&bb", - FSSpec_New, &theSpec, - targetIsFolder, - wasAliased); - return _res; -} -#endif /* !__LP64__ */ - -static PyObject *File_FSNewAlias(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSRef fromFile__buf__; - FSRef *fromFile = &fromFile__buf__; - FSRef target; - AliasHandle inAlias; - if (!PyArg_ParseTuple(_args, "O&O&", - myPyMac_GetOptFSRefPtr, &fromFile, - FSRef_Convert, &target)) - return NULL; - _err = FSNewAlias(fromFile, - &target, - &inAlias); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - Alias_New, inAlias); - return _res; -} - -static PyObject *File_FSResolveAliasFileWithMountFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSRef theRef; - Boolean resolveAliasChains; - Boolean targetIsFolder; - Boolean wasAliased; - unsigned long mountFlags; - if (!PyArg_ParseTuple(_args, "O&bl", - FSRef_Convert, &theRef, - &resolveAliasChains, - &mountFlags)) - return NULL; - _err = FSResolveAliasFileWithMountFlags(&theRef, - resolveAliasChains, - &targetIsFolder, - &wasAliased, - mountFlags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&bb", - FSRef_New, &theRef, - targetIsFolder, - wasAliased); - return _res; -} - -static PyObject *File_FSResolveAliasFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSRef theRef; - Boolean resolveAliasChains; - Boolean targetIsFolder; - Boolean wasAliased; - if (!PyArg_ParseTuple(_args, "O&b", - FSRef_Convert, &theRef, - &resolveAliasChains)) - return NULL; - _err = FSResolveAliasFile(&theRef, - resolveAliasChains, - &targetIsFolder, - &wasAliased); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&bb", - FSRef_New, &theRef, - targetIsFolder, - wasAliased); - return _res; -} - -static PyObject *File_FSUpdateAlias(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSRef fromFile__buf__; - FSRef *fromFile = &fromFile__buf__; - FSRef target; - AliasHandle alias; - Boolean wasChanged; - if (!PyArg_ParseTuple(_args, "O&O&O&", - myPyMac_GetOptFSRefPtr, &fromFile, - FSRef_Convert, &target, - Alias_Convert, &alias)) - return NULL; - _err = FSUpdateAlias(fromFile, - &target, - alias, - &wasChanged); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - wasChanged); - return _res; -} - -static PyObject *File_pathname(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - PyObject *obj; - - if (!PyArg_ParseTuple(_args, "O", &obj)) - return NULL; - if (PyString_Check(obj)) { - Py_INCREF(obj); - return obj; - } - if (PyUnicode_Check(obj)) - return PyUnicode_AsEncodedString(obj, "utf8", "strict"); - _res = PyObject_CallMethod(obj, "as_pathname", NULL); - return _res; - -} - -static PyMethodDef File_methods[] = { -#ifndef __LP64__ - {"UnmountVol", (PyCFunction)File_UnmountVol, 1, - PyDoc_STR("(Str63 volName, short vRefNum) -> None")}, - {"FlushVol", (PyCFunction)File_FlushVol, 1, - PyDoc_STR("(Str63 volName, short vRefNum) -> None")}, - {"HSetVol", (PyCFunction)File_HSetVol, 1, - PyDoc_STR("(Str63 volName, short vRefNum, long dirID) -> None")}, - {"FSClose", (PyCFunction)File_FSClose, 1, - PyDoc_STR("(short refNum) -> None")}, - {"Allocate", (PyCFunction)File_Allocate, 1, - PyDoc_STR("(short refNum) -> (long count)")}, - {"GetEOF", (PyCFunction)File_GetEOF, 1, - PyDoc_STR("(short refNum) -> (long logEOF)")}, - {"SetEOF", (PyCFunction)File_SetEOF, 1, - PyDoc_STR("(short refNum, long logEOF) -> None")}, - {"GetFPos", (PyCFunction)File_GetFPos, 1, - PyDoc_STR("(short refNum) -> (long filePos)")}, - {"SetFPos", (PyCFunction)File_SetFPos, 1, - PyDoc_STR("(short refNum, short posMode, long posOff) -> None")}, - {"GetVRefNum", (PyCFunction)File_GetVRefNum, 1, - PyDoc_STR("(short fileRefNum) -> (short vRefNum)")}, - {"HGetVol", (PyCFunction)File_HGetVol, 1, - PyDoc_STR("(StringPtr volName) -> (short vRefNum, long dirID)")}, - {"HOpen", (PyCFunction)File_HOpen, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 fileName, SInt8 permission) -> (short refNum)")}, - {"HOpenDF", (PyCFunction)File_HOpenDF, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 fileName, SInt8 permission) -> (short refNum)")}, - {"HOpenRF", (PyCFunction)File_HOpenRF, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 fileName, SInt8 permission) -> (short refNum)")}, - {"AllocContig", (PyCFunction)File_AllocContig, 1, - PyDoc_STR("(short refNum) -> (long count)")}, - {"HCreate", (PyCFunction)File_HCreate, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 fileName, OSType creator, OSType fileType) -> None")}, - {"DirCreate", (PyCFunction)File_DirCreate, 1, - PyDoc_STR("(short vRefNum, long parentDirID, Str255 directoryName) -> (long createdDirID)")}, - {"HDelete", (PyCFunction)File_HDelete, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> None")}, - {"HGetFInfo", (PyCFunction)File_HGetFInfo, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> (FInfo fndrInfo)")}, - {"HSetFInfo", (PyCFunction)File_HSetFInfo, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 fileName, FInfo fndrInfo) -> None")}, - {"HSetFLock", (PyCFunction)File_HSetFLock, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> None")}, - {"HRstFLock", (PyCFunction)File_HRstFLock, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> None")}, - {"HRename", (PyCFunction)File_HRename, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 oldName, Str255 newName) -> None")}, - {"CatMove", (PyCFunction)File_CatMove, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 oldName, long newDirID, Str255 newName) -> None")}, - {"FSMakeFSSpec", (PyCFunction)File_FSMakeFSSpec, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> (FSSpec spec)")}, -#endif /* !__LP64__*/ - {"FSGetForkPosition", (PyCFunction)File_FSGetForkPosition, 1, - PyDoc_STR("(SInt16 forkRefNum) -> (SInt64 position)")}, - {"FSSetForkPosition", (PyCFunction)File_FSSetForkPosition, 1, - PyDoc_STR("(SInt16 forkRefNum, UInt16 positionMode, SInt64 positionOffset) -> None")}, - {"FSGetForkSize", (PyCFunction)File_FSGetForkSize, 1, - PyDoc_STR("(SInt16 forkRefNum) -> (SInt64 forkSize)")}, - {"FSSetForkSize", (PyCFunction)File_FSSetForkSize, 1, - PyDoc_STR("(SInt16 forkRefNum, UInt16 positionMode, SInt64 positionOffset) -> None")}, - {"FSAllocateFork", (PyCFunction)File_FSAllocateFork, 1, - PyDoc_STR("(SInt16 forkRefNum, FSAllocationFlags flags, UInt16 positionMode, SInt64 positionOffset, UInt64 requestCount) -> (UInt64 actualCount)")}, - {"FSFlushFork", (PyCFunction)File_FSFlushFork, 1, - PyDoc_STR("(SInt16 forkRefNum) -> None")}, - {"FSCloseFork", (PyCFunction)File_FSCloseFork, 1, - PyDoc_STR("(SInt16 forkRefNum) -> None")}, - {"FSGetDataForkName", (PyCFunction)File_FSGetDataForkName, 1, - PyDoc_STR("() -> (HFSUniStr255 dataForkName)")}, - {"FSGetResourceForkName", (PyCFunction)File_FSGetResourceForkName, 1, - PyDoc_STR("() -> (HFSUniStr255 resourceForkName)")}, - {"FSPathMakeRef", (PyCFunction)File_FSPathMakeRef, 1, - PyDoc_STR("(UInt8 * path) -> (FSRef ref, Boolean isDirectory)")}, - {"FNNotifyByPath", (PyCFunction)File_FNNotifyByPath, 1, - PyDoc_STR("(UInt8 * path, FNMessage message, OptionBits flags) -> None")}, - {"FNNotifyAll", (PyCFunction)File_FNNotifyAll, 1, - PyDoc_STR("(FNMessage message, OptionBits flags) -> None")}, -#ifndef __LP64__ - {"NewAlias", (PyCFunction)File_NewAlias, 1, - PyDoc_STR("(FSSpec fromFile, FSSpec target) -> (AliasHandle alias)")}, - {"NewAliasMinimalFromFullPath", (PyCFunction)File_NewAliasMinimalFromFullPath, 1, - PyDoc_STR("(Buffer fullPath, Str32 zoneName, Str31 serverName) -> (AliasHandle alias)")}, - {"ResolveAliasFile", (PyCFunction)File_ResolveAliasFile, 1, - PyDoc_STR("(FSSpec theSpec, Boolean resolveAliasChains) -> (FSSpec theSpec, Boolean targetIsFolder, Boolean wasAliased)")}, - {"ResolveAliasFileWithMountFlags", (PyCFunction)File_ResolveAliasFileWithMountFlags, 1, - PyDoc_STR("(FSSpec theSpec, Boolean resolveAliasChains, unsigned long mountFlags) -> (FSSpec theSpec, Boolean targetIsFolder, Boolean wasAliased)")}, - {"UpdateAlias", (PyCFunction)File_UpdateAlias, 1, - PyDoc_STR("(FSSpec fromFile, FSSpec target, AliasHandle alias) -> (Boolean wasChanged)")}, - {"ResolveAliasFileWithMountFlagsNoUI", (PyCFunction)File_ResolveAliasFileWithMountFlagsNoUI, 1, - PyDoc_STR("(FSSpec theSpec, Boolean resolveAliasChains, unsigned long mountFlags) -> (FSSpec theSpec, Boolean targetIsFolder, Boolean wasAliased)")}, -#endif /* !__LP64__ */ - {"FSNewAlias", (PyCFunction)File_FSNewAlias, 1, - PyDoc_STR("(FSRef fromFile, FSRef target) -> (AliasHandle inAlias)")}, - {"FSResolveAliasFileWithMountFlags", (PyCFunction)File_FSResolveAliasFileWithMountFlags, 1, - PyDoc_STR("(FSRef theRef, Boolean resolveAliasChains, unsigned long mountFlags) -> (FSRef theRef, Boolean targetIsFolder, Boolean wasAliased)")}, - {"FSResolveAliasFile", (PyCFunction)File_FSResolveAliasFile, 1, - PyDoc_STR("(FSRef theRef, Boolean resolveAliasChains) -> (FSRef theRef, Boolean targetIsFolder, Boolean wasAliased)")}, - {"FSUpdateAlias", (PyCFunction)File_FSUpdateAlias, 1, - PyDoc_STR("(FSRef fromFile, FSRef target, AliasHandle alias) -> (Boolean wasChanged)")}, - {"pathname", (PyCFunction)File_pathname, 1, - PyDoc_STR("(str|unicode|FSSpec|FSref) -> pathname")}, - {NULL, NULL, 0} -}; - - -#ifndef __LP64__ -int -PyMac_GetFSSpec(PyObject *v, FSSpec *spec) -{ - Str255 path; - short refnum; - long parid; - OSErr err; - FSRef fsr; - - if (FSSpec_Check(v)) { - *spec = ((FSSpecObject *)v)->ob_itself; - return 1; - } - - if (PyArg_Parse(v, "(hlO&)", - &refnum, &parid, PyMac_GetStr255, &path)) { - err = FSMakeFSSpec(refnum, parid, path, spec); - if ( err && err != fnfErr ) { - PyMac_Error(err); - return 0; - } - return 1; - } - PyErr_Clear(); - /* Otherwise we try to go via an FSRef. On OSX we go all the way, - ** on OS9 we accept only a real FSRef object - */ - if ( PyMac_GetFSRef(v, &fsr) ) { - err = FSGetCatalogInfo(&fsr, kFSCatInfoNone, NULL, NULL, spec, NULL); - if (err != noErr) { - PyMac_Error(err); - return 0; - } - return 1; - } - return 0; -} -#endif /* !__LP64__ */ - -int -PyMac_GetFSRef(PyObject *v, FSRef *fsr) -{ - OSStatus err; -#ifndef __LP64__ - FSSpec fss; -#endif /* !__LP64__ */ - - if (FSRef_Check(v)) { - *fsr = ((FSRefObject *)v)->ob_itself; - return 1; - } - - /* On OSX we now try a pathname */ - if ( PyString_Check(v) || PyUnicode_Check(v)) { - char *path = NULL; - if (!PyArg_Parse(v, "et", Py_FileSystemDefaultEncoding, &path)) - return 0; - if ( (err=FSPathMakeRef((unsigned char*)path, fsr, NULL)) ) - PyMac_Error(err); - PyMem_Free(path); - return !err; - } - /* XXXX Should try unicode here too */ - -#ifndef __LP64__ - /* Otherwise we try to go via an FSSpec */ - if (FSSpec_Check(v)) { - fss = ((FSSpecObject *)v)->ob_itself; - if ((err=FSpMakeFSRef(&fss, fsr)) == 0) - return 1; - PyMac_Error(err); - return 0; - } -#endif /* !__LP64__ */ - - PyErr_SetString(PyExc_TypeError, "FSRef, FSSpec or pathname required"); - return 0; -} - -#ifndef __LP64__ -extern PyObject * -PyMac_BuildFSSpec(FSSpec *spec) -{ - return FSSpec_New(spec); -} -#endif /* !__LP64__ */ - -extern PyObject * -PyMac_BuildFSRef(FSRef *spec) -{ - return FSRef_New(spec); -} - - -void init_File(void) -{ - PyObject *m; - PyObject *d; - - -#ifndef __LP64__ - PyMac_INIT_TOOLBOX_OBJECT_NEW(FSSpec *, PyMac_BuildFSSpec); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSSpec, PyMac_GetFSSpec); -#endif /* !__LP64__ */ - - PyMac_INIT_TOOLBOX_OBJECT_NEW(FSRef *, PyMac_BuildFSRef); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSRef, PyMac_GetFSRef); - - - m = Py_InitModule("_File", File_methods); - d = PyModule_GetDict(m); - File_Error = PyMac_GetOSErrException(); - if (File_Error == NULL || - PyDict_SetItemString(d, "Error", File_Error) != 0) - return; - FSCatalogInfo_Type.ob_type = &PyType_Type; - if (PyType_Ready(&FSCatalogInfo_Type) < 0) return; - Py_INCREF(&FSCatalogInfo_Type); - PyModule_AddObject(m, "FSCatalogInfo", (PyObject *)&FSCatalogInfo_Type); - /* Backward-compatible name */ - Py_INCREF(&FSCatalogInfo_Type); - PyModule_AddObject(m, "FSCatalogInfoType", (PyObject *)&FSCatalogInfo_Type); - -#ifndef __LP64__ - FInfo_Type.ob_type = &PyType_Type; - if (PyType_Ready(&FInfo_Type) < 0) return; - Py_INCREF(&FInfo_Type); - PyModule_AddObject(m, "FInfo", (PyObject *)&FInfo_Type); - /* Backward-compatible name */ - Py_INCREF(&FInfo_Type); - PyModule_AddObject(m, "FInfoType", (PyObject *)&FInfo_Type); -#endif /* !__LP64__ */ - Alias_Type.ob_type = &PyType_Type; - if (PyType_Ready(&Alias_Type) < 0) return; - Py_INCREF(&Alias_Type); - PyModule_AddObject(m, "Alias", (PyObject *)&Alias_Type); - /* Backward-compatible name */ - Py_INCREF(&Alias_Type); - PyModule_AddObject(m, "AliasType", (PyObject *)&Alias_Type); - -#ifndef __LP64__ - FSSpec_Type.ob_type = &PyType_Type; - if (PyType_Ready(&FSSpec_Type) < 0) return; - Py_INCREF(&FSSpec_Type); - PyModule_AddObject(m, "FSSpec", (PyObject *)&FSSpec_Type); - /* Backward-compatible name */ - Py_INCREF(&FSSpec_Type); - PyModule_AddObject(m, "FSSpecType", (PyObject *)&FSSpec_Type); -#endif /* !__LP64__ */ - FSRef_Type.ob_type = &PyType_Type; - if (PyType_Ready(&FSRef_Type) < 0) return; - Py_INCREF(&FSRef_Type); - PyModule_AddObject(m, "FSRef", (PyObject *)&FSRef_Type); - /* Backward-compatible name */ - Py_INCREF(&FSRef_Type); - PyModule_AddObject(m, "FSRefType", (PyObject *)&FSRef_Type); -} - -/* ======================== End module _File ======================== */ - diff --git a/project/jni/python/src/Mac/Modules/file/filescan.py b/project/jni/python/src/Mac/Modules/file/filescan.py deleted file mode 100644 index 4b7082374..000000000 --- a/project/jni/python/src/Mac/Modules/file/filescan.py +++ /dev/null @@ -1,198 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner_OSX - -LONG = "Files" -SHORT = "file" - -def main(): - input = ["Files.h", "Aliases.h", "Finder.h"] - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - scanner.gentypetest(SHORT+"typetest.py") - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner_OSX): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - # Funny special case - if len(arglist) > 2: - t, n, m = arglist[1] - if t == "AliasHandle" and m == "InMode": - classname = "Arg2MethodGenerator" - listname = "alias_methods" - return classname, listname - # Normal cases - t, n, m = arglist[0] - if t == "AliasHandle" and m == "InMode": - classname = "Method" - listname = "alias_methods" - if t == "FSSpec_ptr" and m == "InMode": - classname = "Method" - listname = "fsspec_methods" - if t == "FSRef_ptr" and m == "InMode": - classname = "Method" - listname = "fsref_methods" - return classname, listname - - def makeblacklistnames(self): - return [ - # Constants with incompatible definitions - "kioACAccessOwnerMask", - "kFSCatInfoReserved", - "kFSIterateReserved", - "kSystemFolderType", - - "FSRefMakePath", # Do this manually -# "ResolveAlias", # Do this manually -# "ResolveAliasWithMountFlags", # Do this manually -# "FollowFinderAlias", # Do this manually - - "FSRead", # Couldn't be bothered - "FSWrite", # ditto - "FSReadFork", # ditto - "FSWriteFork", # ditto - - # Old routines: - "GetWDInfo", - "OpenWD", - "CloseWD", - "FInitQueue", - "rstflock", - "setflock", - "setfinfo", - "fsrename", - "fsdelete", - "create", - "flushvol", - "eject", - "umountvol", - "setvol", - "getvol", - "getfinfo", - "getvinfo", - "fsopen", - "RstFLock", - "SetFLock", - "SetFInfo", - "Rename", - "OpenRF", - "FSDelete", - "Create", - "GetVol", - "GetFInfo", - "GetVInfo", - "FSOpen", - "Eject", - "SetVol", - "openrf", - "unmountvol", - "OpenDF", - - ] - - def makeblacklisttypes(self): - return [ - "CInfoPBPtr", # Old stuff - "CMovePBPtr", # Old stuff - "ParmBlkPtr", # Old stuff - "HParmBlkPtr", # Old stuff - "DTPBPtr", # Old stuff - "FCBPBPtr", # Old stuff - "QHdrPtr", # Old stuff - "CSParamPtr", # Old stuff - "FSCatalogBulkParam", # old stuff - "FSForkCBInfoParam", # old stuff - "FSForkIOParam", # old stuff - "FSRefParam", # old stuff - "FSVolumeInfoParam", # old stuff - "WDPBPtr", # old stuff - "XCInfoPBPtr", # old stuff - "XVolumeParamPtr", # old stuff - - - "CatPositionRec", # State variable, not too difficult - "FSIterator", # Should become an object - "FSForkInfo", # Lots of fields, difficult struct - "FSSearchParams", # Also catsearch stuff - "FSVolumeInfo", # big struct - "FSVolumeInfo_ptr", # big struct - - "IOCompletionProcPtr", # proc pointer - "IOCompletionUPP", # Proc pointer - "AliasFilterProcPtr", - "AliasFilterUPP", - "FNSubscriptionUPP", - - "FNSubscriptionRef", # Lazy, for now. - ] - - def makerepairinstructions(self): - return [ - # Various ways to give pathnames - ([('char_ptr', '*', 'InMode')], - [('stringptr', '*', 'InMode')] - ), - - # Unicode filenames passed as length, buffer - ([('UniCharCount', '*', 'InMode'), - ('UniChar_ptr', '*', 'InMode')], - [('UnicodeReverseInBuffer', '*', 'InMode')] - ), - # Wrong guess - ([('Str63', 'theString', 'InMode')], - [('Str63', 'theString', 'OutMode')]), - - # Yet another way to give a pathname:-) - ([('short', 'fullPathLength', 'InMode'), - ('void_ptr', 'fullPath', 'InMode')], - [('FullPathName', 'fullPath', 'InMode')]), - - # Various ResolveAliasFileXXXX functions - ([('FSSpec', 'theSpec', 'OutMode')], - [('FSSpec_ptr', 'theSpec', 'InOutMode')]), - - ([('FSRef', 'theRef', 'OutMode')], - [('FSRef_ptr', 'theRef', 'InOutMode')]), - - # The optional FSSpec to all ResolveAlias and NewAlias methods - ([('FSSpec_ptr', 'fromFile', 'InMode')], - [('OptFSSpecPtr', 'fromFile', 'InMode')]), - - ([('FSRef_ptr', 'fromFile', 'InMode')], - [('OptFSRefPtr', 'fromFile', 'InMode')]), - -## # FSCatalogInfo input handling -## ([('FSCatalogInfoBitmap', 'whichInfo', 'InMode'), -## ('FSCatalogInfo_ptr', 'catalogInfo', 'InMode')], -## [('FSCatalogInfoAndBitmap_in', 'catalogInfo', 'InMode')]), -## -## # FSCatalogInfo output handling -## ([('FSCatalogInfoBitmap', 'whichInfo', 'InMode'), -## ('FSCatalogInfo', 'catalogInfo', 'OutMode')], -## [('FSCatalogInfoAndBitmap_out', 'catalogInfo', 'InOutMode')]), -## - - ] - - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - self.defsfile.write("true = True\n") - self.defsfile.write("false = False\n") - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/file/filesupport.py b/project/jni/python/src/Mac/Modules/file/filesupport.py deleted file mode 100644 index 88f88cd9d..000000000 --- a/project/jni/python/src/Mac/Modules/file/filesupport.py +++ /dev/null @@ -1,918 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). -# -# XXXX TO DO: -# - Implement correct missing FSSpec handling for Alias methods -# - Implement FInfo -# -# WARNING WARNING WARNING -# The file _Filemodule.c was modified manually, don't run this script -# unless you really know what you're doing. - -import sys -sys.exit(42) - -import string - -# Declarations that change for each manager -#MACHEADERFILE = 'Files.h' # The Apple header file -MODNAME = '_File' # The name of the module -LONGMODNAME = 'Carbon.File' # The "normal" external name of the module - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'File' # The prefix for module-wide routines -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Various integers: -SInt64 = Type("SInt64", "L") -UInt64 = Type("UInt64", "L") -FNMessage = Type("FNMessage", "l") -FSAllocationFlags = Type("FSAllocationFlags", "H") -FSCatalogInfoBitmap = Type("FSCatalogInfoBitmap", "l") -FSIteratorFlags = Type("FSIteratorFlags", "l") -FSVolumeRefNum = Type("FSVolumeRefNum", "h") -AliasInfoType = Type("AliasInfoType", "h") - -# Various types of strings: -#class UniCharCountBuffer(InputOnlyType): -# pass -class VarReverseInputBufferType(ReverseInputBufferMixin, VarInputBufferType): - pass -FullPathName = VarReverseInputBufferType() -ConstStr31Param = OpaqueArrayType("Str31", "PyMac_BuildStr255", "PyMac_GetStr255") -ConstStr32Param = OpaqueArrayType("Str32", "PyMac_BuildStr255", "PyMac_GetStr255") -ConstStr63Param = OpaqueArrayType("Str63", "PyMac_BuildStr255", "PyMac_GetStr255") -Str63 = OpaqueArrayType("Str63", "PyMac_BuildStr255", "PyMac_GetStr255") - -HFSUniStr255 = OpaqueType("HFSUniStr255", "PyMac_BuildHFSUniStr255", "PyMac_GetHFSUniStr255") -UInt8_ptr = InputOnlyType("UInt8 *", "s") - -# Other types: -class OptionalFSxxxType(OpaqueByValueType): - def declare(self, name): - Output("%s %s__buf__;", self.typeName, name) - Output("%s *%s = &%s__buf__;", self.typeName, name, name) - -class FSCatalogInfoAndBitmapType(InputOnlyType): - - def __init__(self): - InputOnlyType.__init__(self, "BUG", "BUG") - - def declare(self, name): - Output("PyObject *%s__object = NULL;", name) - Output("FSCatalogInfoBitmap %s__bitmap = 0;", name) - Output("FSCatalogInfo %s;", name) - - def getargsFormat(self): - return "lO" - - def getargsArgs(self, name): - return "%s__bitmap, %s__object"%(name, name) - - def getargsCheck(self, name): - Output("if (!convert_FSCatalogInfo(%s__object, %s__bitmap, &%s)) return NULL;", name, name, name) - - def passInput(self, name): - return "%s__bitmap, &%s"% (name, name) - - def passOutput(self, name): - return "%s__bitmap, &%s"% (name, name) - - def mkvalueFormat(self): - return "O" - - def mkvalueArgs(self, name): - return "%s__object" % (name) - - def xxxxmkvalueCheck(self, name): - Output("if ((%s__object = new_FSCatalogInfo(%s__bitmap, &%s)) == NULL) return NULL;", name, name) - -class FSCatalogInfoAndBitmap_inType(FSCatalogInfoAndBitmapType, InputOnlyMixIn): - - def xxxxmkvalueCheck(self, name): - pass - -class FSCatalogInfoAndBitmap_outType(FSCatalogInfoAndBitmapType): - - def getargsFormat(self): - return "l" - - def getargsArgs(self, name): - return "%s__bitmap" % name - - def getargsCheck(self, name): - pass - -FInfo = OpaqueType("FInfo", "FInfo") -FInfo_ptr = OpaqueType("FInfo", "FInfo") -AliasHandle = OpaqueByValueType("AliasHandle", "Alias") -FSSpec = OpaqueType("FSSpec", "FSSpec") -FSSpec_ptr = OpaqueType("FSSpec", "FSSpec") -OptFSSpecPtr = OptionalFSxxxType("FSSpec", "BUG", "myPyMac_GetOptFSSpecPtr") -FSRef = OpaqueType("FSRef", "FSRef") -FSRef_ptr = OpaqueType("FSRef", "FSRef") -OptFSRefPtr = OptionalFSxxxType("FSRef", "BUG", "myPyMac_GetOptFSRefPtr") -FSCatalogInfo = OpaqueType("FSCatalogInfo", "FSCatalogInfo") -FSCatalogInfo_ptr = OpaqueType("FSCatalogInfo", "FSCatalogInfo") - -# To be done: -#CatPositionRec -#FSCatalogInfo -#FSForkInfo -#FSIterator -#FSVolumeInfo -#FSSpecArrayPtr - -includestuff = includestuff + """ -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern int _PyMac_GetFSSpec(PyObject *v, FSSpec *spec); -extern int _PyMac_GetFSRef(PyObject *v, FSRef *fsr); -extern PyObject *_PyMac_BuildFSSpec(FSSpec *spec); -extern PyObject *_PyMac_BuildFSRef(FSRef *spec); - -#define PyMac_GetFSSpec _PyMac_GetFSSpec -#define PyMac_GetFSRef _PyMac_GetFSRef -#define PyMac_BuildFSSpec _PyMac_BuildFSSpec -#define PyMac_BuildFSRef _PyMac_BuildFSRef -#else -extern int PyMac_GetFSSpec(PyObject *v, FSSpec *spec); -extern int PyMac_GetFSRef(PyObject *v, FSRef *fsr); -extern PyObject *PyMac_BuildFSSpec(FSSpec *spec); -extern PyObject *PyMac_BuildFSRef(FSRef *spec); -#endif - -/* Forward declarations */ -static PyObject *FInfo_New(FInfo *itself); -static PyObject *FSRef_New(FSRef *itself); -static PyObject *FSSpec_New(FSSpec *itself); -static PyObject *Alias_New(AliasHandle itself); -static int FInfo_Convert(PyObject *v, FInfo *p_itself); -#define FSRef_Convert PyMac_GetFSRef -#define FSSpec_Convert PyMac_GetFSSpec -static int Alias_Convert(PyObject *v, AliasHandle *p_itself); - -/* -** UTCDateTime records -*/ -static int -UTCDateTime_Convert(PyObject *v, UTCDateTime *ptr) -{ - return PyArg_Parse(v, "(HlH)", &ptr->highSeconds, &ptr->lowSeconds, &ptr->fraction); -} - -static PyObject * -UTCDateTime_New(UTCDateTime *ptr) -{ - return Py_BuildValue("(HlH)", ptr->highSeconds, ptr->lowSeconds, ptr->fraction); -} - -/* -** Optional fsspec and fsref pointers. None will pass NULL -*/ -static int -myPyMac_GetOptFSSpecPtr(PyObject *v, FSSpec **spec) -{ - if (v == Py_None) { - *spec = NULL; - return 1; - } - return PyMac_GetFSSpec(v, *spec); -} - -static int -myPyMac_GetOptFSRefPtr(PyObject *v, FSRef **ref) -{ - if (v == Py_None) { - *ref = NULL; - return 1; - } - return PyMac_GetFSRef(v, *ref); -} - -/* -** Parse/generate objsect -*/ -static PyObject * -PyMac_BuildHFSUniStr255(HFSUniStr255 *itself) -{ - - return Py_BuildValue("u#", itself->unicode, itself->length); -} - -#ifndef __LP64__ -/* -** Get pathname for a given FSSpec -*/ -static OSErr -_PyMac_GetFullPathname(FSSpec *fss, char *path, int len) -{ - FSRef fsr; - OSErr err; - - *path = '\0'; - err = FSpMakeFSRef(fss, &fsr); - if (err == fnfErr) { - /* FSSpecs can point to non-existing files, fsrefs can't. */ - FSSpec fss2; - int tocopy; - - err = FSMakeFSSpec(fss->vRefNum, fss->parID, "", &fss2); - if (err) - return err; - err = FSpMakeFSRef(&fss2, &fsr); - if (err) - return err; - err = (OSErr)FSRefMakePath(&fsr, path, len-1); - if (err) - return err; - /* This part is not 100% safe: we append the filename part, but - ** I'm not sure that we don't run afoul of the various 8bit - ** encodings here. Will have to look this up at some point... - */ - strcat(path, "/"); - tocopy = fss->name[0]; - if ((strlen(path) + tocopy) >= len) - tocopy = len - strlen(path) - 1; - if (tocopy > 0) - strncat(path, fss->name+1, tocopy); - } - else { - if (err) - return err; - err = (OSErr)FSRefMakePath(&fsr, path, len); - if (err) - return err; - } - return 0; -} -#endif /* !__LP64__ */ - -""" - -finalstuff = finalstuff + """ - -#ifndef __LP64__ -int -PyMac_GetFSSpec(PyObject *v, FSSpec *spec) -{ - Str255 path; - short refnum; - long parid; - OSErr err; - FSRef fsr; - - if (FSSpec_Check(v)) { - *spec = ((FSSpecObject *)v)->ob_itself; - return 1; - } - - if (PyArg_Parse(v, "(hlO&)", - &refnum, &parid, PyMac_GetStr255, &path)) { - err = FSMakeFSSpec(refnum, parid, path, spec); - if ( err && err != fnfErr ) { - PyMac_Error(err); - return 0; - } - return 1; - } - PyErr_Clear(); - /* Otherwise we try to go via an FSRef. On OSX we go all the way, - ** on OS9 we accept only a real FSRef object - */ - if ( PyMac_GetFSRef(v, &fsr) ) { - err = FSGetCatalogInfo(&fsr, kFSCatInfoNone, NULL, NULL, spec, NULL); - if (err != noErr) { - PyMac_Error(err); - return 0; - } - return 1; - } - return 0; -} - -#endif /* !__LP64__ */ - -int -PyMac_GetFSRef(PyObject *v, FSRef *fsr) -{ - OSStatus err; - FSSpec fss; - - if (FSRef_Check(v)) { - *fsr = ((FSRefObject *)v)->ob_itself; - return 1; - } - - /* On OSX we now try a pathname */ - if ( PyString_Check(v) || PyUnicode_Check(v)) { - char *path = NULL; - if (!PyArg_Parse(v, "et", Py_FileSystemDefaultEncoding, &path)) - return 0; - if ( (err=FSPathMakeRef(path, fsr, NULL)) ) - PyMac_Error(err); - PyMem_Free(path); - return !err; - } - /* XXXX Should try unicode here too */ - /* Otherwise we try to go via an FSSpec */ -#ifndef __LP64__ - if (FSSpec_Check(v)) { - fss = ((FSSpecObject *)v)->ob_itself; - if ((err=FSpMakeFSRef(&fss, fsr)) == 0) - return 1; - PyMac_Error(err); - return 0; - } - PyErr_SetString(PyExc_TypeError, "FSRef, FSSpec or pathname required"); -#else /* __LP64__ */ - PyErr_SetString(PyExc_TypeError, "FSRef or pathname required"); -#endif /* __LP64__ */ - return 0; -} - -#ifndef __LP64__ -extern PyObject * -PyMac_BuildFSSpec(FSSpec *spec) -{ - return FSSpec_New(spec); -} -#endif /* __LP64__ */ - -extern PyObject * -PyMac_BuildFSRef(FSRef *spec) -{ - return FSRef_New(spec); -} -""" - -initstuff = initstuff + """ -#ifndef __LP64__ -PyMac_INIT_TOOLBOX_OBJECT_NEW(FSSpec *, PyMac_BuildFSSpec); -PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSSpec, PyMac_GetFSSpec); -#endif /* !__LP64__*/ -PyMac_INIT_TOOLBOX_OBJECT_NEW(FSRef *, PyMac_BuildFSRef); -PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSRef, PyMac_GetFSRef); -""" - -execfile(string.lower(MODPREFIX) + 'typetest.py') - -# Our object types: -class FSCatalogInfoDefinition(PEP253Mixin, ObjectDefinition): - getsetlist = [ - ("nodeFlags", - "return Py_BuildValue(\"H\", self->ob_itself.nodeFlags);", - "return PyArg_Parse(v, \"H\", &self->ob_itself.nodeFlags)-1;", - None - ), - ("volume", - "return Py_BuildValue(\"h\", self->ob_itself.volume);", - "return PyArg_Parse(v, \"h\", &self->ob_itself.volume)-1;", - None - ), - ("parentDirID", - "return Py_BuildValue(\"l\", self->ob_itself.parentDirID);", - "return PyArg_Parse(v, \"l\", &self->ob_itself.parentDirID)-1;", - None - ), - ("nodeID", - "return Py_BuildValue(\"l\", self->ob_itself.nodeID);", - "return PyArg_Parse(v, \"l\", &self->ob_itself.nodeID)-1;", - None - ), - ("createDate", - "return Py_BuildValue(\"O&\", UTCDateTime_New, &self->ob_itself.createDate);", - "return PyArg_Parse(v, \"O&\", UTCDateTime_Convert, &self->ob_itself.createDate)-1;", - None - ), - ("contentModDate", - "return Py_BuildValue(\"O&\", UTCDateTime_New, &self->ob_itself.contentModDate);", - "return PyArg_Parse(v, \"O&\", UTCDateTime_Convert, &self->ob_itself.contentModDate)-1;", - None - ), - ("attributeModDate", - "return Py_BuildValue(\"O&\", UTCDateTime_New, &self->ob_itself.attributeModDate);", - "return PyArg_Parse(v, \"O&\", UTCDateTime_Convert, &self->ob_itself.attributeModDate)-1;", - None - ), - ("accessDate", - "return Py_BuildValue(\"O&\", UTCDateTime_New, &self->ob_itself.accessDate);", - "return PyArg_Parse(v, \"O&\", UTCDateTime_Convert, &self->ob_itself.accessDate)-1;", - None - ), - ("backupDate", - "return Py_BuildValue(\"O&\", UTCDateTime_New, &self->ob_itself.backupDate);", - "return PyArg_Parse(v, \"O&\", UTCDateTime_Convert, &self->ob_itself.backupDate)-1;", - None - ), - ("permissions", - "return Py_BuildValue(\"(llll)\", self->ob_itself.permissions[0], self->ob_itself.permissions[1], self->ob_itself.permissions[2], self->ob_itself.permissions[3]);", - "return PyArg_Parse(v, \"(llll)\", &self->ob_itself.permissions[0], &self->ob_itself.permissions[1], &self->ob_itself.permissions[2], &self->ob_itself.permissions[3])-1;", - None - ), - # XXXX FinderInfo TBD - # XXXX FinderXInfo TBD - ("valence", - "return Py_BuildValue(\"l\", self->ob_itself.valence);", - "return PyArg_Parse(v, \"l\", &self->ob_itself.valence)-1;", - None - ), - ("dataLogicalSize", - "return Py_BuildValue(\"l\", self->ob_itself.dataLogicalSize);", - "return PyArg_Parse(v, \"l\", &self->ob_itself.dataLogicalSize)-1;", - None - ), - ("dataPhysicalSize", - "return Py_BuildValue(\"l\", self->ob_itself.dataPhysicalSize);", - "return PyArg_Parse(v, \"l\", &self->ob_itself.dataPhysicalSize)-1;", - None - ), - ("rsrcLogicalSize", - "return Py_BuildValue(\"l\", self->ob_itself.rsrcLogicalSize);", - "return PyArg_Parse(v, \"l\", &self->ob_itself.rsrcLogicalSize)-1;", - None - ), - ("rsrcPhysicalSize", - "return Py_BuildValue(\"l\", self->ob_itself.rsrcPhysicalSize);", - "return PyArg_Parse(v, \"l\", &self->ob_itself.rsrcPhysicalSize)-1;", - None - ), - ("sharingFlags", - "return Py_BuildValue(\"l\", self->ob_itself.sharingFlags);", - "return PyArg_Parse(v, \"l\", &self->ob_itself.sharingFlags)-1;", - None - ), - ("userPrivileges", - "return Py_BuildValue(\"b\", self->ob_itself.userPrivileges);", - "return PyArg_Parse(v, \"b\", &self->ob_itself.userPrivileges)-1;", - None - ), - ] - # The same info, but in a different form - INITFORMAT = "HhllO&O&O&O&O&llllllb" - INITARGS = """&((FSCatalogInfoObject *)_self)->ob_itself.nodeFlags, - &((FSCatalogInfoObject *)_self)->ob_itself.volume, - &((FSCatalogInfoObject *)_self)->ob_itself.parentDirID, - &((FSCatalogInfoObject *)_self)->ob_itself.nodeID, - UTCDateTime_Convert, &((FSCatalogInfoObject *)_self)->ob_itself.createDate, - UTCDateTime_Convert, &((FSCatalogInfoObject *)_self)->ob_itself.contentModDate, - UTCDateTime_Convert, &((FSCatalogInfoObject *)_self)->ob_itself.attributeModDate, - UTCDateTime_Convert, &((FSCatalogInfoObject *)_self)->ob_itself.accessDate, - UTCDateTime_Convert, &((FSCatalogInfoObject *)_self)->ob_itself.backupDate, - &((FSCatalogInfoObject *)_self)->ob_itself.valence, - &((FSCatalogInfoObject *)_self)->ob_itself.dataLogicalSize, - &((FSCatalogInfoObject *)_self)->ob_itself.dataPhysicalSize, - &((FSCatalogInfoObject *)_self)->ob_itself.rsrcLogicalSize, - &((FSCatalogInfoObject *)_self)->ob_itself.rsrcPhysicalSize, - &((FSCatalogInfoObject *)_self)->ob_itself.sharingFlags, - &((FSCatalogInfoObject *)_self)->ob_itself.userPrivileges""" - INITNAMES = """ - "nodeFlags", - "volume", - "parentDirID", - "nodeID", - "createDate", - "contentModDate", - "atributeModDate", - "accessDate", - "backupDate", - "valence", - "dataLogicalSize", - "dataPhysicalSize", - "rsrcLogicalSize", - "rsrcPhysicalSize", - "sharingFlags", - "userPrivileges" - """ - - def __init__(self, name, prefix, itselftype): - ObjectDefinition.__init__(self, name, prefix, itselftype) - self.argref = "*" # Store FSSpecs, but pass them by address - - def outputCheckNewArg(self): - Output("if (itself == NULL) { Py_INCREF(Py_None); return Py_None; }") - - def output_tp_newBody(self): - Output("PyObject *self;"); - Output() - Output("if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;") - Output("memset(&((%s *)self)->ob_itself, 0, sizeof(%s));", - self.objecttype, self.itselftype) - Output("return self;") - - def output_tp_initBody(self): - Output("static char *kw[] = {%s, 0};", self.INITNAMES) - Output() - Output("if (!PyArg_ParseTupleAndKeywords(_args, _kwds, \"|%s\", kw, %s))", - self.INITFORMAT, self.INITARGS) - OutLbrace() - Output("return -1;") - OutRbrace() - Output("return 0;") - -class FInfoDefinition(PEP253Mixin, ObjectDefinition): - getsetlist = [ - ("Type", - "return Py_BuildValue(\"O&\", PyMac_BuildOSType, self->ob_itself.fdType);", - "return PyArg_Parse(v, \"O&\", PyMac_GetOSType, &self->ob_itself.fdType)-1;", - "4-char file type" - ), - ("Creator", - "return Py_BuildValue(\"O&\", PyMac_BuildOSType, self->ob_itself.fdCreator);", - "return PyArg_Parse(v, \"O&\", PyMac_GetOSType, &self->ob_itself.fdCreator)-1;", - "4-char file creator" - ), - ("Flags", - "return Py_BuildValue(\"H\", self->ob_itself.fdFlags);", - "return PyArg_Parse(v, \"H\", &self->ob_itself.fdFlags)-1;", - "Finder flag bits" - ), - ("Location", - "return Py_BuildValue(\"O&\", PyMac_BuildPoint, self->ob_itself.fdLocation);", - "return PyArg_Parse(v, \"O&\", PyMac_GetPoint, &self->ob_itself.fdLocation)-1;", - "(x, y) location of the file's icon in its parent finder window" - ), - ("Fldr", - "return Py_BuildValue(\"h\", self->ob_itself.fdFldr);", - "return PyArg_Parse(v, \"h\", &self->ob_itself.fdFldr)-1;", - "Original folder, for 'put away'" - ), - - ] - - def __init__(self, name, prefix, itselftype): - ObjectDefinition.__init__(self, name, prefix, itselftype) - self.argref = "*" # Store FSSpecs, but pass them by address - - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") - - def output_tp_newBody(self): - Output("PyObject *self;"); - Output() - Output("if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;") - Output("memset(&((%s *)self)->ob_itself, 0, sizeof(%s));", - self.objecttype, self.itselftype) - Output("return self;") - - def output_tp_initBody(self): - Output("%s *itself = NULL;", self.itselftype) - Output("static char *kw[] = {\"itself\", 0};") - Output() - Output("if (PyArg_ParseTupleAndKeywords(_args, _kwds, \"|O&\", kw, FInfo_Convert, &itself))") - OutLbrace() - Output("if (itself) memcpy(&((%s *)_self)->ob_itself, itself, sizeof(%s));", - self.objecttype, self.itselftype) - Output("return 0;") - OutRbrace() - Output("return -1;") - -class FSSpecDefinition(PEP253Mixin, ObjectDefinition): - getsetlist = [ - ("data", - "return PyString_FromStringAndSize((char *)&self->ob_itself, sizeof(self->ob_itself));", - None, - "Raw data of the FSSpec object" - ) - ] - - def __init__(self, name, prefix, itselftype): - ObjectDefinition.__init__(self, name, prefix, itselftype) - self.argref = "*" # Store FSSpecs, but pass them by address - - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") - - # We do Convert ourselves (with PyMac_GetFSxxx) - def outputConvert(self): - pass - - def output_tp_newBody(self): - Output("PyObject *self;"); - Output() - Output("if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;") - Output("memset(&((%s *)self)->ob_itself, 0, sizeof(%s));", - self.objecttype, self.itselftype) - Output("return self;") - - def output_tp_initBody(self): - Output("PyObject *v = NULL;") - Output("char *rawdata = NULL;") - Output("int rawdatalen = 0;") - Output("static char *kw[] = {\"itself\", \"rawdata\", 0};") - Output() - Output("if (!PyArg_ParseTupleAndKeywords(_args, _kwds, \"|Os#\", kw, &v, &rawdata, &rawdatalen))") - Output("return -1;") - Output("if (v && rawdata)") - OutLbrace() - Output("PyErr_SetString(PyExc_TypeError, \"Only one of itself or rawdata may be specified\");") - Output("return -1;") - OutRbrace() - Output("if (!v && !rawdata)") - OutLbrace() - Output("PyErr_SetString(PyExc_TypeError, \"One of itself or rawdata must be specified\");") - Output("return -1;") - OutRbrace() - Output("if (rawdata)") - OutLbrace() - Output("if (rawdatalen != sizeof(%s))", self.itselftype) - OutLbrace() - Output("PyErr_SetString(PyExc_TypeError, \"%s rawdata incorrect size\");", - self.itselftype) - Output("return -1;") - OutRbrace() - Output("memcpy(&((%s *)_self)->ob_itself, rawdata, rawdatalen);", self.objecttype) - Output("return 0;") - OutRbrace() - Output("if (PyMac_GetFSSpec(v, &((%s *)_self)->ob_itself)) return 0;", self.objecttype) - Output("return -1;") - - def outputRepr(self): - Output() - Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("char buf[512];") - Output("""PyOS_snprintf(buf, sizeof(buf), \"%%s((%%d, %%ld, '%%.*s'))\", - self->ob_type->tp_name, - self->ob_itself.vRefNum, - self->ob_itself.parID, - self->ob_itself.name[0], self->ob_itself.name+1);""") - Output("return PyString_FromString(buf);") - OutRbrace() - -class FSRefDefinition(PEP253Mixin, ObjectDefinition): - getsetlist = [ - ("data", - "return PyString_FromStringAndSize((char *)&self->ob_itself, sizeof(self->ob_itself));", - None, - "Raw data of the FSRef object" - ) - ] - - def __init__(self, name, prefix, itselftype): - ObjectDefinition.__init__(self, name, prefix, itselftype) - self.argref = "*" # Store FSRefs, but pass them by address - - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") - - # We do Convert ourselves (with PyMac_GetFSxxx) - def outputConvert(self): - pass - - def output_tp_newBody(self): - Output("PyObject *self;"); - Output() - Output("if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;") - Output("memset(&((%s *)self)->ob_itself, 0, sizeof(%s));", - self.objecttype, self.itselftype) - Output("return self;") - - def output_tp_initBody(self): - Output("PyObject *v = NULL;") - Output("char *rawdata = NULL;") - Output("int rawdatalen = 0;") - Output("static char *kw[] = {\"itself\", \"rawdata\", 0};") - Output() - Output("if (!PyArg_ParseTupleAndKeywords(_args, _kwds, \"|Os#\", kw, &v, &rawdata, &rawdatalen))") - Output("return -1;") - Output("if (v && rawdata)") - OutLbrace() - Output("PyErr_SetString(PyExc_TypeError, \"Only one of itself or rawdata may be specified\");") - Output("return -1;") - OutRbrace() - Output("if (!v && !rawdata)") - OutLbrace() - Output("PyErr_SetString(PyExc_TypeError, \"One of itself or rawdata must be specified\");") - Output("return -1;") - OutRbrace() - Output("if (rawdata)") - OutLbrace() - Output("if (rawdatalen != sizeof(%s))", self.itselftype) - OutLbrace() - Output("PyErr_SetString(PyExc_TypeError, \"%s rawdata incorrect size\");", - self.itselftype) - Output("return -1;") - OutRbrace() - Output("memcpy(&((%s *)_self)->ob_itself, rawdata, rawdatalen);", self.objecttype) - Output("return 0;") - OutRbrace() - Output("if (PyMac_GetFSRef(v, &((%s *)_self)->ob_itself)) return 0;", self.objecttype) - Output("return -1;") - -class AliasDefinition(PEP253Mixin, ObjectDefinition): - # XXXX Should inherit from resource? - getsetlist = [ - ("data", - """int size; - PyObject *rv; - - size = GetHandleSize((Handle)self->ob_itself); - HLock((Handle)self->ob_itself); - rv = PyString_FromStringAndSize(*(Handle)self->ob_itself, size); - HUnlock((Handle)self->ob_itself); - return rv; - """, - None, - "Raw data of the alias object" - ) - ] - - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") - - def outputStructMembers(self): - ObjectDefinition.outputStructMembers(self) - Output("void (*ob_freeit)(%s ptr);", self.itselftype) - - def outputInitStructMembers(self): - ObjectDefinition.outputInitStructMembers(self) - Output("it->ob_freeit = NULL;") - - def outputCleanupStructMembers(self): - Output("if (self->ob_freeit && self->ob_itself)") - OutLbrace() - Output("self->ob_freeit(self->ob_itself);") - OutRbrace() - Output("self->ob_itself = NULL;") - - def output_tp_newBody(self): - Output("PyObject *self;"); - Output() - Output("if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;") - Output("((%s *)self)->ob_itself = NULL;", self.objecttype) - Output("return self;") - - def output_tp_initBody(self): - Output("%s itself = NULL;", self.itselftype) - Output("char *rawdata = NULL;") - Output("int rawdatalen = 0;") - Output("Handle h;") - Output("static char *kw[] = {\"itself\", \"rawdata\", 0};") - Output() - Output("if (!PyArg_ParseTupleAndKeywords(_args, _kwds, \"|O&s#\", kw, %s_Convert, &itself, &rawdata, &rawdatalen))", - self.prefix) - Output("return -1;") - Output("if (itself && rawdata)") - OutLbrace() - Output("PyErr_SetString(PyExc_TypeError, \"Only one of itself or rawdata may be specified\");") - Output("return -1;") - OutRbrace() - Output("if (!itself && !rawdata)") - OutLbrace() - Output("PyErr_SetString(PyExc_TypeError, \"One of itself or rawdata must be specified\");") - Output("return -1;") - OutRbrace() - Output("if (rawdata)") - OutLbrace() - Output("if ((h = NewHandle(rawdatalen)) == NULL)") - OutLbrace() - Output("PyErr_NoMemory();") - Output("return -1;") - OutRbrace() - Output("HLock(h);") - Output("memcpy((char *)*h, rawdata, rawdatalen);") - Output("HUnlock(h);") - Output("((%s *)_self)->ob_itself = (%s)h;", self.objecttype, self.itselftype) - Output("return 0;") - OutRbrace() - Output("((%s *)_self)->ob_itself = itself;", self.objecttype) - Output("return 0;") - -# Alias methods come in two flavors: those with the alias as arg1 and -# those with the alias as arg 2. -class Arg2MethodGenerator(OSErrMethodGenerator): - """Similar to MethodGenerator, but has self as second argument""" - - def parseArgumentList(self, args): - args0, arg1, argsrest = args[:1], args[1], args[2:] - t0, n0, m0 = arg1 - args = args0 + argsrest - if m0 != InMode: - raise ValueError, "method's 'self' must be 'InMode'" - self.itself = Variable(t0, "_self->ob_itself", SelfMode) - FunctionGenerator.parseArgumentList(self, args) - self.argumentList.insert(2, self.itself) - -# From here on it's basically all boiler plate... - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff, - longname=LONGMODNAME) - -fscataloginfoobject = FSCatalogInfoDefinition('FSCatalogInfo', 'FSCatalogInfo', 'FSCatalogInfo') -finfoobject = FInfoDefinition('FInfo', 'FInfo', 'FInfo') -aliasobject = AliasDefinition('Alias', 'Alias', 'AliasHandle') -fsspecobject = FSSpecDefinition('FSSpec', 'FSSpec', 'FSSpec') -fsrefobject = FSRefDefinition('FSRef', 'FSRef', 'FSRef') - -module.addobject(fscataloginfoobject) -module.addobject(finfoobject) -module.addobject(aliasobject) -module.addobject(fsspecobject) -module.addobject(fsrefobject) - -# Create the generator classes used to populate the lists -Function = OSErrFunctionGenerator -Method = OSErrMethodGenerator - -# Create and populate the lists -functions = [] -alias_methods = [] -fsref_methods = [] -fsspec_methods = [] -execfile(INPUTFILE) - -# Manual generators: -FSRefMakePath_body = """ -OSStatus _err; -#define MAXPATHNAME 1024 -UInt8 path[MAXPATHNAME]; -UInt32 maxPathSize = MAXPATHNAME; - -if (!PyArg_ParseTuple(_args, "")) - return NULL; -_err = FSRefMakePath(&_self->ob_itself, - path, - maxPathSize); -if (_err != noErr) return PyMac_Error(_err); -_res = Py_BuildValue("s", path); -return _res; -""" -f = ManualGenerator("FSRefMakePath", FSRefMakePath_body) -f.docstring = lambda: "() -> string" -fsref_methods.append(f) - -FSRef_as_pathname_body = """ -if (!PyArg_ParseTuple(_args, "")) - return NULL; -_res = FSRef_FSRefMakePath(_self, _args); -return _res; -""" -f = ManualGenerator("as_pathname", FSRef_as_pathname_body) -f.docstring = lambda: "() -> string" -fsref_methods.append(f) - -FSSpec_as_pathname_body = """ -char strbuf[1024]; -OSErr err; - -if (!PyArg_ParseTuple(_args, "")) - return NULL; -err = _PyMac_GetFullPathname(&_self->ob_itself, strbuf, sizeof(strbuf)); -if ( err ) { - PyMac_Error(err); - return NULL; -} -_res = PyString_FromString(strbuf); -return _res; -""" -f = ManualGenerator("as_pathname", FSSpec_as_pathname_body) -f.docstring = lambda: "() -> string" -fsspec_methods.append(f) - -FSSpec_as_tuple_body = """ -if (!PyArg_ParseTuple(_args, "")) - return NULL; -_res = Py_BuildValue("(iis#)", _self->ob_itself.vRefNum, _self->ob_itself.parID, - &_self->ob_itself.name[1], _self->ob_itself.name[0]); -return _res; -""" -f = ManualGenerator("as_tuple", FSSpec_as_tuple_body) -f.docstring = lambda: "() -> (vRefNum, dirID, name)" -fsspec_methods.append(f) - -pathname_body = """ -PyObject *obj; - -if (!PyArg_ParseTuple(_args, "O", &obj)) - return NULL; -if (PyString_Check(obj)) { - Py_INCREF(obj); - return obj; -} -if (PyUnicode_Check(obj)) - return PyUnicode_AsEncodedString(obj, "utf8", "strict"); -_res = PyObject_CallMethod(obj, "as_pathname", NULL); -return _res; -""" -f = ManualGenerator("pathname", pathname_body) -f.docstring = lambda: "(str|unicode|FSSpec|FSref) -> pathname" -functions.append(f) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -for f in alias_methods: aliasobject.add(f) -for f in fsspec_methods: fsspecobject.add(f) -for f in fsref_methods: fsrefobject.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/fm/_Fmmodule.c b/project/jni/python/src/Mac/Modules/fm/_Fmmodule.c deleted file mode 100644 index b982cc31a..000000000 --- a/project/jni/python/src/Mac/Modules/fm/_Fmmodule.c +++ /dev/null @@ -1,368 +0,0 @@ - -/* =========================== Module _Fm =========================== */ - -#include "Python.h" - -#ifndef __LP64__ - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - - -/* -** Parse/generate ComponentDescriptor records -*/ -static PyObject * -FMRec_New(FMetricRec *itself) -{ - - return Py_BuildValue("O&O&O&O&O&", - PyMac_BuildFixed, itself->ascent, - PyMac_BuildFixed, itself->descent, - PyMac_BuildFixed, itself->leading, - PyMac_BuildFixed, itself->widMax, - ResObj_New, itself->wTabHandle); -} - -#if 0 -/* Not needed... */ -static int -FMRec_Convert(PyObject *v, FMetricRec *p_itself) -{ - return PyArg_ParseTuple(v, "O&O&O&O&O&", - PyMac_GetFixed, &itself->ascent, - PyMac_GetFixed, &itself->descent, - PyMac_GetFixed, &itself->leading, - PyMac_GetFixed, &itself->widMax, - ResObj_Convert, &itself->wTabHandle); -} -#endif - - -static PyObject *Fm_Error; - -static PyObject *Fm_GetFontName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short familyID; - Str255 name; -#ifndef GetFontName - PyMac_PRECHECK(GetFontName); -#endif - if (!PyArg_ParseTuple(_args, "h", - &familyID)) - return NULL; - GetFontName(familyID, - name); - _res = Py_BuildValue("O&", - PyMac_BuildStr255, name); - return _res; -} - -static PyObject *Fm_GetFNum(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Str255 name; - short familyID; -#ifndef GetFNum - PyMac_PRECHECK(GetFNum); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetStr255, name)) - return NULL; - GetFNum(name, - &familyID); - _res = Py_BuildValue("h", - familyID); - return _res; -} - -static PyObject *Fm_RealFont(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - short fontNum; - short size; -#ifndef RealFont - PyMac_PRECHECK(RealFont); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &fontNum, - &size)) - return NULL; - _rv = RealFont(fontNum, - size); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Fm_SetFScaleDisable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean fscaleDisable; -#ifndef SetFScaleDisable - PyMac_PRECHECK(SetFScaleDisable); -#endif - if (!PyArg_ParseTuple(_args, "b", - &fscaleDisable)) - return NULL; - SetFScaleDisable(fscaleDisable); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Fm_FontMetrics(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - FMetricRec theMetrics; -#ifndef FontMetrics - PyMac_PRECHECK(FontMetrics); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - FontMetrics(&theMetrics); - _res = Py_BuildValue("O&", - FMRec_New, &theMetrics); - return _res; -} - -static PyObject *Fm_SetFractEnable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean fractEnable; -#ifndef SetFractEnable - PyMac_PRECHECK(SetFractEnable); -#endif - if (!PyArg_ParseTuple(_args, "b", - &fractEnable)) - return NULL; - SetFractEnable(fractEnable); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Fm_GetDefFontSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetDefFontSize - PyMac_PRECHECK(GetDefFontSize); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetDefFontSize(); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Fm_IsOutline(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point numer; - Point denom; -#ifndef IsOutline - PyMac_PRECHECK(IsOutline); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &numer, - PyMac_GetPoint, &denom)) - return NULL; - _rv = IsOutline(numer, - denom); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Fm_SetOutlinePreferred(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean outlinePreferred; -#ifndef SetOutlinePreferred - PyMac_PRECHECK(SetOutlinePreferred); -#endif - if (!PyArg_ParseTuple(_args, "b", - &outlinePreferred)) - return NULL; - SetOutlinePreferred(outlinePreferred); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Fm_GetOutlinePreferred(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef GetOutlinePreferred - PyMac_PRECHECK(GetOutlinePreferred); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetOutlinePreferred(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Fm_SetPreserveGlyph(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean preserveGlyph; -#ifndef SetPreserveGlyph - PyMac_PRECHECK(SetPreserveGlyph); -#endif - if (!PyArg_ParseTuple(_args, "b", - &preserveGlyph)) - return NULL; - SetPreserveGlyph(preserveGlyph); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Fm_GetPreserveGlyph(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef GetPreserveGlyph - PyMac_PRECHECK(GetPreserveGlyph); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetPreserveGlyph(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Fm_GetSysFont(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetSysFont - PyMac_PRECHECK(GetSysFont); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetSysFont(); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Fm_GetAppFont(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetAppFont - PyMac_PRECHECK(GetAppFont); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetAppFont(); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Fm_QDTextBounds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - char *inText__in__; - int inText__len__; - int inText__in_len__; - Rect bounds; -#ifndef QDTextBounds - PyMac_PRECHECK(QDTextBounds); -#endif - if (!PyArg_ParseTuple(_args, "s#", - &inText__in__, &inText__in_len__)) - return NULL; - inText__len__ = inText__in_len__; - QDTextBounds(inText__len__, inText__in__, - &bounds); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &bounds); - return _res; -} - -static PyMethodDef Fm_methods[] = { - {"GetFontName", (PyCFunction)Fm_GetFontName, 1, - PyDoc_STR("(short familyID) -> (Str255 name)")}, - {"GetFNum", (PyCFunction)Fm_GetFNum, 1, - PyDoc_STR("(Str255 name) -> (short familyID)")}, - {"RealFont", (PyCFunction)Fm_RealFont, 1, - PyDoc_STR("(short fontNum, short size) -> (Boolean _rv)")}, - {"SetFScaleDisable", (PyCFunction)Fm_SetFScaleDisable, 1, - PyDoc_STR("(Boolean fscaleDisable) -> None")}, - {"FontMetrics", (PyCFunction)Fm_FontMetrics, 1, - PyDoc_STR("() -> (FMetricRec theMetrics)")}, - {"SetFractEnable", (PyCFunction)Fm_SetFractEnable, 1, - PyDoc_STR("(Boolean fractEnable) -> None")}, - {"GetDefFontSize", (PyCFunction)Fm_GetDefFontSize, 1, - PyDoc_STR("() -> (short _rv)")}, - {"IsOutline", (PyCFunction)Fm_IsOutline, 1, - PyDoc_STR("(Point numer, Point denom) -> (Boolean _rv)")}, - {"SetOutlinePreferred", (PyCFunction)Fm_SetOutlinePreferred, 1, - PyDoc_STR("(Boolean outlinePreferred) -> None")}, - {"GetOutlinePreferred", (PyCFunction)Fm_GetOutlinePreferred, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"SetPreserveGlyph", (PyCFunction)Fm_SetPreserveGlyph, 1, - PyDoc_STR("(Boolean preserveGlyph) -> None")}, - {"GetPreserveGlyph", (PyCFunction)Fm_GetPreserveGlyph, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"GetSysFont", (PyCFunction)Fm_GetSysFont, 1, - PyDoc_STR("() -> (short _rv)")}, - {"GetAppFont", (PyCFunction)Fm_GetAppFont, 1, - PyDoc_STR("() -> (short _rv)")}, - {"QDTextBounds", (PyCFunction)Fm_QDTextBounds, 1, - PyDoc_STR("(Buffer inText) -> (Rect bounds)")}, - {NULL, NULL, 0} -}; - -#else /* __LP64__ */ - -static PyMethodDef Fm_methods[] = { - {NULL, NULL, 0} -}; - -#endif /* __LP64__ */ - -void init_Fm(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; -#endif /* __LP64__ */ - - - - - m = Py_InitModule("_Fm", Fm_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - Fm_Error = PyMac_GetOSErrException(); - if (Fm_Error == NULL || - PyDict_SetItemString(d, "Error", Fm_Error) != 0) - return; -#endif /* __LP64__ */ -} - -/* ========================= End module _Fm ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/fm/fmscan.py b/project/jni/python/src/Mac/Modules/fm/fmscan.py deleted file mode 100644 index 1c0d4122f..000000000 --- a/project/jni/python/src/Mac/Modules/fm/fmscan.py +++ /dev/null @@ -1,71 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner - -LONG = "Fonts" -SHORT = "fm" - -def main(): - input = "Fonts.h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - return classname, listname - - def makeblacklistnames(self): - return [ - "OutlineMetrics", # Too complicated - "AntiTextIsAntiAliased", # XXXX Missing from library... - "AntiTextGetEnabled", - "AntiTextSetEnabled", - "AntiTextGetApplicationAware", - "AntiTextSetApplicationAware", - # These are tricky: they're not Carbon dependent or anything, but they - # exist only on 8.6 or later (both in Carbon and Classic). - # Disabling them is the easiest path. - 'SetAntiAliasedTextEnabled', - 'IsAntiAliasedTextEnabled', - # OS8-only - 'InitFonts', - 'SetFontLock', - 'FlushFonts', - ] - - def makeblacklisttypes(self): - return [ - "FMInput_ptr", # Not needed for now - "FMOutPtr", # Ditto -## "void_ptr", # Don't know how to do this right now - "FontInfo", # Ditto - ] - - def makerepairinstructions(self): - return [ - ([('Str255', '*', 'InMode')], [('Str255', '*', 'OutMode')]), - ([('FMetricRecPtr', 'theMetrics', 'InMode')], [('FMetricRecPtr', 'theMetrics', 'OutMode')]), - ([('short', 'byteCount', 'InMode'), ('void_ptr', 'textAddr', 'InMode'),], - [('TextBuffer', 'inText', 'InMode')]), - ] - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - self.defsfile.write("kNilOptions = 0\n") - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/fm/fmsupport.py b/project/jni/python/src/Mac/Modules/fm/fmsupport.py deleted file mode 100644 index e69205316..000000000 --- a/project/jni/python/src/Mac/Modules/fm/fmsupport.py +++ /dev/null @@ -1,81 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'Fonts.h' # The Apple header file -MODNAME = '_Fm' # The name of the module - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Fm' # The prefix for module-wide routines -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects - -class RevVarInputBufferType(VarInputBufferType): - def passInput(self, name): - return "%s__len__, %s__in__" % (name, name) - -TextBuffer = RevVarInputBufferType() - - -includestuff = includestuff + """ -#include - - -/* -** Parse/generate ComponentDescriptor records -*/ -static PyObject * -FMRec_New(FMetricRec *itself) -{ - - return Py_BuildValue("O&O&O&O&O&", - PyMac_BuildFixed, itself->ascent, - PyMac_BuildFixed, itself->descent, - PyMac_BuildFixed, itself->leading, - PyMac_BuildFixed, itself->widMax, - ResObj_New, itself->wTabHandle); -} - -#if 0 -/* Not needed... */ -static int -FMRec_Convert(PyObject *v, FMetricRec *p_itself) -{ - return PyArg_ParseTuple(v, "O&O&O&O&O&", - PyMac_GetFixed, &itself->ascent, - PyMac_GetFixed, &itself->descent, - PyMac_GetFixed, &itself->leading, - PyMac_GetFixed, &itself->widMax, - ResObj_Convert, &itself->wTabHandle); -} -#endif - -""" - -FMetricRecPtr = OpaqueType('FMetricRec', 'FMRec') - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator - -# Create and populate the lists -functions = [] -execfile(INPUTFILE) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/folder/_Foldermodule.c b/project/jni/python/src/Mac/Modules/folder/_Foldermodule.c deleted file mode 100644 index 035dab891..000000000 --- a/project/jni/python/src/Mac/Modules/folder/_Foldermodule.c +++ /dev/null @@ -1,342 +0,0 @@ - -/* ========================= Module _Folder ========================= */ - -#include "Python.h" - - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - - -static PyObject *Folder_Error; - -static PyObject *Folder_FindFolder(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - OSType folderType; - Boolean createFolder; - FSVolumeRefNum foundVRefNum; - SInt32 foundDirID; - if (!PyArg_ParseTuple(_args, "hO&b", - &vRefNum, - PyMac_GetOSType, &folderType, - &createFolder)) - return NULL; - _err = FindFolder(vRefNum, - folderType, - createFolder, - &foundVRefNum, - &foundDirID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("hl", - foundVRefNum, - foundDirID); - return _res; -} - -static PyObject *Folder_ReleaseFolder(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - OSType folderType; - if (!PyArg_ParseTuple(_args, "hO&", - &vRefNum, - PyMac_GetOSType, &folderType)) - return NULL; - _err = ReleaseFolder(vRefNum, - folderType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Folder_FSFindFolder(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - OSType folderType; - Boolean createFolder; - FSRef foundRef; - if (!PyArg_ParseTuple(_args, "hO&b", - &vRefNum, - PyMac_GetOSType, &folderType, - &createFolder)) - return NULL; - _err = FSFindFolder(vRefNum, - folderType, - createFolder, - &foundRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildFSRef, &foundRef); - return _res; -} - -static PyObject *Folder_AddFolderDescriptor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FolderType foldType; - FolderDescFlags flags; - FolderClass foldClass; - FolderLocation foldLocation; - OSType badgeSignature; - OSType badgeType; - Str255 name; - Boolean replaceFlag; - if (!PyArg_ParseTuple(_args, "O&lO&O&O&O&O&b", - PyMac_GetOSType, &foldType, - &flags, - PyMac_GetOSType, &foldClass, - PyMac_GetOSType, &foldLocation, - PyMac_GetOSType, &badgeSignature, - PyMac_GetOSType, &badgeType, - PyMac_GetStr255, name, - &replaceFlag)) - return NULL; - _err = AddFolderDescriptor(foldType, - flags, - foldClass, - foldLocation, - badgeSignature, - badgeType, - name, - replaceFlag); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Folder_GetFolderTypes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UInt32 requestedTypeCount; - UInt32 totalTypeCount; - FolderType theTypes; - if (!PyArg_ParseTuple(_args, "l", - &requestedTypeCount)) - return NULL; - _err = GetFolderTypes(requestedTypeCount, - &totalTypeCount, - &theTypes); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("lO&", - totalTypeCount, - PyMac_BuildOSType, theTypes); - return _res; -} - -static PyObject *Folder_RemoveFolderDescriptor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FolderType foldType; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &foldType)) - return NULL; - _err = RemoveFolderDescriptor(foldType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -#ifndef __LP64__ -static PyObject *Folder_GetFolderName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - OSType foldType; - short foundVRefNum; - Str255 name; - if (!PyArg_ParseTuple(_args, "hO&O&", - &vRefNum, - PyMac_GetOSType, &foldType, - PyMac_GetStr255, name)) - return NULL; - _err = GetFolderName(vRefNum, - foldType, - &foundVRefNum, - name); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - foundVRefNum); - return _res; -} - -static PyObject *Folder_AddFolderRouting(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType fileType; - FolderType routeFromFolder; - FolderType routeToFolder; - RoutingFlags flags; - Boolean replaceFlag; - if (!PyArg_ParseTuple(_args, "O&O&O&lb", - PyMac_GetOSType, &fileType, - PyMac_GetOSType, &routeFromFolder, - PyMac_GetOSType, &routeToFolder, - &flags, - &replaceFlag)) - return NULL; - _err = AddFolderRouting(fileType, - routeFromFolder, - routeToFolder, - flags, - replaceFlag); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Folder_RemoveFolderRouting(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType fileType; - FolderType routeFromFolder; - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &fileType, - PyMac_GetOSType, &routeFromFolder)) - return NULL; - _err = RemoveFolderRouting(fileType, - routeFromFolder); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Folder_FindFolderRouting(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType fileType; - FolderType routeFromFolder; - FolderType routeToFolder; - RoutingFlags flags; - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &fileType, - PyMac_GetOSType, &routeFromFolder)) - return NULL; - _err = FindFolderRouting(fileType, - routeFromFolder, - &routeToFolder, - &flags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&l", - PyMac_BuildOSType, routeToFolder, - flags); - return _res; -} -#endif /* !__LP64__ */ - -static PyObject *Folder_InvalidateFolderDescriptorCache(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - if (!PyArg_ParseTuple(_args, "hl", - &vRefNum, - &dirID)) - return NULL; - _err = InvalidateFolderDescriptorCache(vRefNum, - dirID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Folder_IdentifyFolder(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short vRefNum; - long dirID; - FolderType foldType; - if (!PyArg_ParseTuple(_args, "hl", - &vRefNum, - &dirID)) - return NULL; - _err = IdentifyFolder(vRefNum, - dirID, - &foldType); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildOSType, foldType); - return _res; -} - -static PyMethodDef Folder_methods[] = { - {"FindFolder", (PyCFunction)Folder_FindFolder, 1, - PyDoc_STR("(short vRefNum, OSType folderType, Boolean createFolder) -> (short foundVRefNum, long foundDirID)")}, - {"ReleaseFolder", (PyCFunction)Folder_ReleaseFolder, 1, - PyDoc_STR("(short vRefNum, OSType folderType) -> None")}, - {"FSFindFolder", (PyCFunction)Folder_FSFindFolder, 1, - PyDoc_STR("(short vRefNum, OSType folderType, Boolean createFolder) -> (FSRef foundRef)")}, - {"AddFolderDescriptor", (PyCFunction)Folder_AddFolderDescriptor, 1, - PyDoc_STR("(FolderType foldType, FolderDescFlags flags, FolderClass foldClass, FolderLocation foldLocation, OSType badgeSignature, OSType badgeType, Str255 name, Boolean replaceFlag) -> None")}, - {"GetFolderTypes", (PyCFunction)Folder_GetFolderTypes, 1, - PyDoc_STR("(UInt32 requestedTypeCount) -> (UInt32 totalTypeCount, FolderType theTypes)")}, - {"RemoveFolderDescriptor", (PyCFunction)Folder_RemoveFolderDescriptor, 1, - PyDoc_STR("(FolderType foldType) -> None")}, -#ifndef __LP64__ - {"GetFolderName", (PyCFunction)Folder_GetFolderName, 1, - PyDoc_STR("(short vRefNum, OSType foldType, Str255 name) -> (short foundVRefNum)")}, - {"AddFolderRouting", (PyCFunction)Folder_AddFolderRouting, 1, - PyDoc_STR("(OSType fileType, FolderType routeFromFolder, FolderType routeToFolder, RoutingFlags flags, Boolean replaceFlag) -> None")}, - {"RemoveFolderRouting", (PyCFunction)Folder_RemoveFolderRouting, 1, - PyDoc_STR("(OSType fileType, FolderType routeFromFolder) -> None")}, - {"FindFolderRouting", (PyCFunction)Folder_FindFolderRouting, 1, - PyDoc_STR("(OSType fileType, FolderType routeFromFolder) -> (FolderType routeToFolder, RoutingFlags flags)")}, -#endif /* !__LP64__ */ - {"InvalidateFolderDescriptorCache", (PyCFunction)Folder_InvalidateFolderDescriptorCache, 1, - PyDoc_STR("(short vRefNum, long dirID) -> None")}, - {"IdentifyFolder", (PyCFunction)Folder_IdentifyFolder, 1, - PyDoc_STR("(short vRefNum, long dirID) -> (FolderType foldType)")}, - {NULL, NULL, 0} -}; - - - - -void init_Folder(void) -{ - PyObject *m; - PyObject *d; - - - - - m = Py_InitModule("_Folder", Folder_methods); - d = PyModule_GetDict(m); - Folder_Error = PyMac_GetOSErrException(); - if (Folder_Error == NULL || - PyDict_SetItemString(d, "Error", Folder_Error) != 0) - return; -} - -/* ======================= End module _Folder ======================= */ - diff --git a/project/jni/python/src/Mac/Modules/folder/folderscan.py b/project/jni/python/src/Mac/Modules/folder/folderscan.py deleted file mode 100644 index 746a333e0..000000000 --- a/project/jni/python/src/Mac/Modules/folder/folderscan.py +++ /dev/null @@ -1,67 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner_OSX - -LONG = "Folders" -SHORT = "folder" -OBJECT = "NOTUSED" - -def main(): - input = LONG + ".h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - scanner.gentypetest(SHORT+"typetest.py") - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner_OSX): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - # This is non-functional today - if t == OBJECT and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def makeblacklistnames(self): - return [ - "FindFolderExtended", # Has funny void* argument - "FSFindFolderExtended", # ditto - "FolderManagerRegisterCallNotificationProcs", # ditto - - "FindFolderEx", # Non-MacOS routine - ] - - def makeblacklisttypes(self): - return [ - "FolderManagerNotificationProcPtr", - "FolderManagerNotificationUPP", - "FolderRouting", # To be done, not difficult - "FolderDesc", # To be done, not difficult - - ] - - def makerepairinstructions(self): - return [ - ] - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - self.defsfile.write("true = True\n") - self.defsfile.write("false = False\n") - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/folder/foldersupport.py b/project/jni/python/src/Mac/Modules/folder/foldersupport.py deleted file mode 100644 index b9b64bfb0..000000000 --- a/project/jni/python/src/Mac/Modules/folder/foldersupport.py +++ /dev/null @@ -1,56 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'Folders.h' # The Apple header file -MODNAME = '_Folder' # The name of the module - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Folder' # The prefix for module-wide routines -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects -ConstStrFileNameParam = ConstStr255Param -StrFileName = Str255 -FolderClass = OSTypeType("FolderClass") -# FolderDesc -FolderDescFlags = Type("FolderDescFlags", "l") -FolderLocation = OSTypeType("FolderLocation") -# FolderRouting -FolderType = OSTypeType("FolderType") -RoutingFlags = Type("RoutingFlags", "l") - - -includestuff = includestuff + """ -#include - -""" - -execfile(string.lower(MODPREFIX) + 'typetest.py') - -# From here on it's basically all boiler plate... - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) - -# Create the generator classes used to populate the lists -Function = OSErrFunctionGenerator - -# Create and populate the lists -functions = [] -execfile(INPUTFILE) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/gestaltmodule.c b/project/jni/python/src/Mac/Modules/gestaltmodule.c deleted file mode 100644 index fa1c93c45..000000000 --- a/project/jni/python/src/Mac/Modules/gestaltmodule.c +++ /dev/null @@ -1,55 +0,0 @@ -/*********************************************************** -Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam, -The Netherlands. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Stichting Mathematisch -Centrum or CWI not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior permission. - -STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO -THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE -FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT -OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -******************************************************************/ - -/* Macintosh Gestalt interface */ - -#include "Python.h" -#include "pymactoolbox.h" - -#include - -static PyObject * -gestalt_gestalt(PyObject *self, PyObject *args) -{ - OSErr iErr; - OSType selector; - SInt32 response; - if (!PyArg_ParseTuple(args, "O&", PyMac_GetOSType, &selector)) - return NULL; - iErr = Gestalt ( selector, &response ); - if (iErr != 0) - return PyMac_Error(iErr); - return PyInt_FromLong(response); -} - -static struct PyMethodDef gestalt_methods[] = { - {"gestalt", gestalt_gestalt, METH_VARARGS}, - {NULL, NULL} /* Sentinel */ -}; - -void -initgestalt(void) -{ - Py_InitModule("gestalt", gestalt_methods); -} diff --git a/project/jni/python/src/Mac/Modules/help/_Helpmodule.c b/project/jni/python/src/Mac/Modules/help/_Helpmodule.c deleted file mode 100644 index a6eccf34f..000000000 --- a/project/jni/python/src/Mac/Modules/help/_Helpmodule.c +++ /dev/null @@ -1,196 +0,0 @@ - -/* ========================== Module _Help ========================== */ - -#include "Python.h" - -#ifndef __LP64__ - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -static PyObject *Help_Error; - -static PyObject *Help_HMGetHelpMenu(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuRef outHelpMenu; - MenuItemIndex outFirstCustomItemIndex; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = HMGetHelpMenu(&outHelpMenu, - &outFirstCustomItemIndex); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&H", - MenuObj_New, outHelpMenu, - outFirstCustomItemIndex); - return _res; -} - -static PyObject *Help_HMAreHelpTagsDisplayed(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = HMAreHelpTagsDisplayed(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Help_HMSetHelpTagsDisplayed(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean inDisplayTags; - if (!PyArg_ParseTuple(_args, "b", - &inDisplayTags)) - return NULL; - _err = HMSetHelpTagsDisplayed(inDisplayTags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Help_HMSetTagDelay(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Duration inDelay; - if (!PyArg_ParseTuple(_args, "l", - &inDelay)) - return NULL; - _err = HMSetTagDelay(inDelay); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Help_HMGetTagDelay(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Duration outDelay; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = HMGetTagDelay(&outDelay); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outDelay); - return _res; -} - -static PyObject *Help_HMSetMenuHelpFromBalloonRsrc(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuRef inMenu; - SInt16 inHmnuRsrcID; - if (!PyArg_ParseTuple(_args, "O&h", - MenuObj_Convert, &inMenu, - &inHmnuRsrcID)) - return NULL; - _err = HMSetMenuHelpFromBalloonRsrc(inMenu, - inHmnuRsrcID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Help_HMSetDialogHelpFromBalloonRsrc(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - DialogPtr inDialog; - SInt16 inHdlgRsrcID; - SInt16 inItemStart; - if (!PyArg_ParseTuple(_args, "O&hh", - DlgObj_Convert, &inDialog, - &inHdlgRsrcID, - &inItemStart)) - return NULL; - _err = HMSetDialogHelpFromBalloonRsrc(inDialog, - inHdlgRsrcID, - inItemStart); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Help_HMHideTag(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = HMHideTag(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -#endif /* __LP64__ */ - -static PyMethodDef Help_methods[] = { -#ifndef __LP64__ - {"HMGetHelpMenu", (PyCFunction)Help_HMGetHelpMenu, 1, - PyDoc_STR("() -> (MenuRef outHelpMenu, MenuItemIndex outFirstCustomItemIndex)")}, - {"HMAreHelpTagsDisplayed", (PyCFunction)Help_HMAreHelpTagsDisplayed, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"HMSetHelpTagsDisplayed", (PyCFunction)Help_HMSetHelpTagsDisplayed, 1, - PyDoc_STR("(Boolean inDisplayTags) -> None")}, - {"HMSetTagDelay", (PyCFunction)Help_HMSetTagDelay, 1, - PyDoc_STR("(Duration inDelay) -> None")}, - {"HMGetTagDelay", (PyCFunction)Help_HMGetTagDelay, 1, - PyDoc_STR("() -> (Duration outDelay)")}, - {"HMSetMenuHelpFromBalloonRsrc", (PyCFunction)Help_HMSetMenuHelpFromBalloonRsrc, 1, - PyDoc_STR("(MenuRef inMenu, SInt16 inHmnuRsrcID) -> None")}, - {"HMSetDialogHelpFromBalloonRsrc", (PyCFunction)Help_HMSetDialogHelpFromBalloonRsrc, 1, - PyDoc_STR("(DialogPtr inDialog, SInt16 inHdlgRsrcID, SInt16 inItemStart) -> None")}, - {"HMHideTag", (PyCFunction)Help_HMHideTag, 1, - PyDoc_STR("() -> None")}, -#endif /* __LP64__ */ - {NULL, NULL, 0} -}; - - - - -void init_Help(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; -#endif /* __LP64__ */ - - - - - m = Py_InitModule("_Help", Help_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - Help_Error = PyMac_GetOSErrException(); - if (Help_Error == NULL || - PyDict_SetItemString(d, "Error", Help_Error) != 0) - return; -#endif /* __LP64__ */ -} - -/* ======================== End module _Help ======================== */ - diff --git a/project/jni/python/src/Mac/Modules/help/helpscan.py b/project/jni/python/src/Mac/Modules/help/helpscan.py deleted file mode 100644 index b3543b99e..000000000 --- a/project/jni/python/src/Mac/Modules/help/helpscan.py +++ /dev/null @@ -1,66 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner - -LONG = "MacHelp" -SHORT = "help" -OBJECT = "NOTUSED" - -def main(): - input = LONG + ".h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - # This is non-functional today - if t == OBJECT and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - - def makeblacklistnames(self): - return [ - ] - - def makeblacklisttypes(self): - return [ -## "TipFunctionUPP", -## "HMMessageRecord", -## "HMMessageRecord_ptr", - "HMWindowContentUPP", - "HMMenuTitleContentUPP", - "HMControlContentUPP", - "HMMenuItemContentUPP", - # For the moment - "HMHelpContentRec", - "HMHelpContentRec_ptr", - ] - - def makerepairinstructions(self): - return [ -## ([("WindowPtr", "*", "OutMode")], -## [("ExistingWindowPtr", "*", "*")]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/help/helpsupport.py b/project/jni/python/src/Mac/Modules/help/helpsupport.py deleted file mode 100644 index 77f5c2ecc..000000000 --- a/project/jni/python/src/Mac/Modules/help/helpsupport.py +++ /dev/null @@ -1,78 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MODNAME = '_Help' # The name of the module -OBJECTNAME = 'UNUSED' # The basic name of the objects used here -KIND = 'Record' # Usually 'Ptr' or 'Handle' - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Help' # The prefix for module-wide routines -OBJECTTYPE = OBJECTNAME + KIND # The C type used to represent them -OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects -MenuRef = OpaqueByValueType("MenuRef", "MenuObj") -MenuItemIndex = Type("MenuItemIndex", "H") - -#WindowPeek = OpaqueByValueType("WindowPeek", OBJECTPREFIX) - -#RgnHandle = FakeType("(RgnHandle)0") -# XXXX Should be next, but this will break a lot of code... -# RgnHandle = OpaqueByValueType("RgnHandle", "OptResObj") - -#KeyMap = ArrayOutputBufferType("KeyMap") -##MacOSEventKind = Type("MacOSEventKind", "h") # Old-style -##MacOSEventMask = Type("MacOSEventMask", "h") # Old-style -#EventMask = Type("EventMask", "H") -#EventKind = Type("EventKind", "H") - -includestuff = includestuff + """ -#include -""" - -class MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") - def outputCheckConvertArg(self): - OutLbrace("if (DlgObj_Check(v))") - Output("*p_itself = ((WindowObject *)v)->ob_itself;") - Output("return 1;") - OutRbrace() - Out(""" - if (v == Py_None) { *p_itself = NULL; return 1; } - if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; } - """) - -# From here on it's basically all boiler plate... - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -##object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE) -##module.addobject(object) - -# Create the generator classes used to populate the lists -Function = OSErrFunctionGenerator -##Method = OSErrMethodGenerator - -# Create and populate the lists -functions = [] -##methods = [] -execfile(INPUTFILE) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -##for f in methods: object.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/ibcarbon/IBCarbonscan.py b/project/jni/python/src/Mac/Modules/ibcarbon/IBCarbonscan.py deleted file mode 100644 index f71f864e0..000000000 --- a/project/jni/python/src/Mac/Modules/ibcarbon/IBCarbonscan.py +++ /dev/null @@ -1,47 +0,0 @@ -# IBCarbonscan.py - -import sys - -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) - -from scantools import Scanner_OSX - -def main(): - print "---Scanning IBCarbonRuntime.h---" - input = ["IBCarbonRuntime.h"] - output = "IBCarbongen.py" - defsoutput = TOOLBOXDIR + "IBCarbonRuntime.py" - scanner = IBCarbon_Scanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "--done scanning, importing--" - import IBCarbonsupport - print "done" - -class IBCarbon_Scanner(Scanner_OSX): - - def destination(self, type, name, arglist): - classname = "IBCarbonFunction" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t == "IBNibRef" and m == "InMode": - classname = "IBCarbonMethod" - listname = "methods" - return classname, listname - - def makeblacklistnames(self): - return [ - "DisposeNibReference", # taken care of by destructor - "CreateNibReferenceWithCFBundle", ## need to wrap CFBundle.h properly first - ] - - def makerepairinstructions(self): - return [] - - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/ibcarbon/IBCarbonsupport.py b/project/jni/python/src/Mac/Modules/ibcarbon/IBCarbonsupport.py deleted file mode 100644 index 5f4132840..000000000 --- a/project/jni/python/src/Mac/Modules/ibcarbon/IBCarbonsupport.py +++ /dev/null @@ -1,51 +0,0 @@ -# IBCarbonsupport.py - -from macsupport import * - -IBNibRef = OpaqueByValueType('IBNibRef', 'IBNibRefObj') -#CFBundleRef = OpaqueByValueType('CFBundleRef') - -IBCarbonFunction = OSErrFunctionGenerator -IBCarbonMethod = OSErrMethodGenerator - -includestuff = """ -#include -#include "pymactoolbox.h" - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern int _CFStringRefObj_Convert(PyObject *, CFStringRef *); -#endif - -""" - -initstuff = """ - -""" - -module = MacModule('_IBCarbon', 'IBCarbon', includestuff, finalstuff, initstuff) - -class CFReleaserObject(PEP253Mixin, GlobalObjectDefinition): - def outputFreeIt(self, name): - Output("CFRelease(%s);" % name) - -class CFNibDesc(PEP253Mixin, GlobalObjectDefinition): - def outputFreeIt(self, name): - Output("DisposeNibReference(%s);" % name) - -#cfstringobject = CFReleaserObject("CFStringRef") -#module.addobject(cfstringobject) -#cfbundleobject = CFReleaserObject("CFBundleRef") -#module.addobject(cfbundleobject) -ibnibobject = CFNibDesc("IBNibRef", "IBNibRefObj") -module.addobject(ibnibobject) - -functions = [] -methods = [] - -execfile('IBCarbongen.py') - -for f in functions: module.add(f) -for m in methods: ibnibobject.add(m) - -SetOutputFileName('_IBCarbon.c') -module.generate() diff --git a/project/jni/python/src/Mac/Modules/ibcarbon/_IBCarbon.c b/project/jni/python/src/Mac/Modules/ibcarbon/_IBCarbon.c deleted file mode 100644 index c7c819cc6..000000000 --- a/project/jni/python/src/Mac/Modules/ibcarbon/_IBCarbon.c +++ /dev/null @@ -1,270 +0,0 @@ - -/* ======================== Module _IBCarbon ======================== */ - -#include "Python.h" - - -#ifndef __LP64__ - -#include -#include "pymactoolbox.h" - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern int _CFStringRefObj_Convert(PyObject *, CFStringRef *); -#endif - - -static PyObject *IBCarbon_Error; - -/* ---------------------- Object type IBNibRef ---------------------- */ - -PyTypeObject IBNibRef_Type; - -#define IBNibRefObj_Check(x) ((x)->ob_type == &IBNibRef_Type || PyObject_TypeCheck((x), &IBNibRef_Type)) - -typedef struct IBNibRefObject { - PyObject_HEAD - IBNibRef ob_itself; -} IBNibRefObject; - -PyObject *IBNibRefObj_New(IBNibRef itself) -{ - IBNibRefObject *it; - it = PyObject_NEW(IBNibRefObject, &IBNibRef_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int IBNibRefObj_Convert(PyObject *v, IBNibRef *p_itself) -{ - if (!IBNibRefObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "IBNibRef required"); - return 0; - } - *p_itself = ((IBNibRefObject *)v)->ob_itself; - return 1; -} - -static void IBNibRefObj_dealloc(IBNibRefObject *self) -{ - DisposeNibReference(self->ob_itself); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *IBNibRefObj_CreateWindowFromNib(IBNibRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef inName; - WindowPtr outWindow; - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &inName)) - return NULL; - _err = CreateWindowFromNib(_self->ob_itself, - inName, - &outWindow); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - WinObj_New, outWindow); - return _res; -} - -static PyObject *IBNibRefObj_CreateMenuFromNib(IBNibRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef inName; - MenuHandle outMenuRef; - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &inName)) - return NULL; - _err = CreateMenuFromNib(_self->ob_itself, - inName, - &outMenuRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - MenuObj_New, outMenuRef); - return _res; -} - -static PyObject *IBNibRefObj_CreateMenuBarFromNib(IBNibRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef inName; - Handle outMenuBar; - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &inName)) - return NULL; - _err = CreateMenuBarFromNib(_self->ob_itself, - inName, - &outMenuBar); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, outMenuBar); - return _res; -} - -static PyObject *IBNibRefObj_SetMenuBarFromNib(IBNibRefObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef inName; - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &inName)) - return NULL; - _err = SetMenuBarFromNib(_self->ob_itself, - inName); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef IBNibRefObj_methods[] = { - {"CreateWindowFromNib", (PyCFunction)IBNibRefObj_CreateWindowFromNib, 1, - PyDoc_STR("(CFStringRef inName) -> (WindowPtr outWindow)")}, - {"CreateMenuFromNib", (PyCFunction)IBNibRefObj_CreateMenuFromNib, 1, - PyDoc_STR("(CFStringRef inName) -> (MenuHandle outMenuRef)")}, - {"CreateMenuBarFromNib", (PyCFunction)IBNibRefObj_CreateMenuBarFromNib, 1, - PyDoc_STR("(CFStringRef inName) -> (Handle outMenuBar)")}, - {"SetMenuBarFromNib", (PyCFunction)IBNibRefObj_SetMenuBarFromNib, 1, - PyDoc_STR("(CFStringRef inName) -> None")}, - {NULL, NULL, 0} -}; - -#define IBNibRefObj_getsetlist NULL - - -#define IBNibRefObj_compare NULL - -#define IBNibRefObj_repr NULL - -#define IBNibRefObj_hash NULL -#define IBNibRefObj_tp_init 0 - -#define IBNibRefObj_tp_alloc PyType_GenericAlloc - -static PyObject *IBNibRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - IBNibRef itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, IBNibRefObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((IBNibRefObject *)_self)->ob_itself = itself; - return _self; -} - -#define IBNibRefObj_tp_free PyObject_Del - - -PyTypeObject IBNibRef_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_IBCarbon.IBNibRef", /*tp_name*/ - sizeof(IBNibRefObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) IBNibRefObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) IBNibRefObj_compare, /*tp_compare*/ - (reprfunc) IBNibRefObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) IBNibRefObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - IBNibRefObj_methods, /* tp_methods */ - 0, /*tp_members*/ - IBNibRefObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - IBNibRefObj_tp_init, /* tp_init */ - IBNibRefObj_tp_alloc, /* tp_alloc */ - IBNibRefObj_tp_new, /* tp_new */ - IBNibRefObj_tp_free, /* tp_free */ -}; - -/* -------------------- End object type IBNibRef -------------------- */ - - -static PyObject *IBCarbon_CreateNibReference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef inNibName; - IBNibRef outNibRef; - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &inNibName)) - return NULL; - _err = CreateNibReference(inNibName, - &outNibRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - IBNibRefObj_New, outNibRef); - return _res; -} -#endif /* __LP64__ */ - -static PyMethodDef IBCarbon_methods[] = { -#ifndef __LP64__ - {"CreateNibReference", (PyCFunction)IBCarbon_CreateNibReference, 1, - PyDoc_STR("(CFStringRef inNibName) -> (IBNibRef outNibRef)")}, -#endif /* __LP64__ */ - {NULL, NULL, 0} -}; - - - - -void init_IBCarbon(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; -#endif /* __LP64__ */ - - - - - - m = Py_InitModule("_IBCarbon", IBCarbon_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - IBCarbon_Error = PyMac_GetOSErrException(); - if (IBCarbon_Error == NULL || - PyDict_SetItemString(d, "Error", IBCarbon_Error) != 0) - return; - IBNibRef_Type.ob_type = &PyType_Type; - if (PyType_Ready(&IBNibRef_Type) < 0) return; - Py_INCREF(&IBNibRef_Type); - PyModule_AddObject(m, "IBNibRef", (PyObject *)&IBNibRef_Type); - /* Backward-compatible name */ - Py_INCREF(&IBNibRef_Type); - PyModule_AddObject(m, "IBNibRefType", (PyObject *)&IBNibRef_Type); -#endif /* __LP64__ */ -} - -/* ====================== End module _IBCarbon ====================== */ - diff --git a/project/jni/python/src/Mac/Modules/icgluemodule.c b/project/jni/python/src/Mac/Modules/icgluemodule.c deleted file mode 100644 index d995f1619..000000000 --- a/project/jni/python/src/Mac/Modules/icgluemodule.c +++ /dev/null @@ -1,478 +0,0 @@ -/*********************************************************** -Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam, -The Netherlands. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Stichting Mathematisch -Centrum or CWI or Corporation for National Research Initiatives or -CNRI not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. - -While CWI is the initial source for this software, a modified version -is made available by the Corporation for National Research Initiatives -(CNRI) at the Internet address ftp://ftp.python.org. - -STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH -CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL -DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR -PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -******************************************************************/ - -#include "Python.h" -#include "pymactoolbox.h" - -extern int ResObj_Convert(PyObject *, Handle *); /* From Resmodule.c */ - -#include - -static PyObject *ErrorObject; - -/* ----------------------------------------------------- */ - -/* Declarations for objects of type ic_instance */ - -typedef struct { - PyObject_HEAD - ICInstance inst; -} iciobject; - -static PyTypeObject Icitype; - - - -/* ---------------------------------------------------------------- */ - - -static char ici_ICGetSeed__doc__[] = -"()->int; Returns int that changes when configuration does" -; - -static PyObject * -ici_ICGetSeed(iciobject *self, PyObject *args) -{ - OSStatus err; - long seed; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - if ((err=ICGetSeed(self->inst, &seed)) != 0 ) - return PyMac_Error(err); - return Py_BuildValue("i", (int)seed); -} - - -static char ici_ICBegin__doc__[] = -"(perm)->None; Lock config file for read/write" -; - -static PyObject * -ici_ICBegin(iciobject *self, PyObject *args) -{ - OSStatus err; - int perm; - - if (!PyArg_ParseTuple(args, "i", &perm)) - return NULL; - if ((err=ICBegin(self->inst, (ICPerm)perm)) != 0 ) - return PyMac_Error(err); - Py_INCREF(Py_None); - return Py_None; -} - - -static char ici_ICFindPrefHandle__doc__[] = -"(key, handle)->attrs; Lookup key, store result in handle, return attributes" -; - -static PyObject * -ici_ICFindPrefHandle(iciobject *self, PyObject *args) -{ - OSStatus err; - Str255 key; - ICAttr attr; - Handle h; - - if (!PyArg_ParseTuple(args, "O&O&", PyMac_GetStr255, &key, ResObj_Convert, &h)) - return NULL; - if ((err=ICFindPrefHandle(self->inst, key, &attr, h)) != 0 ) - return PyMac_Error(err); - return Py_BuildValue("i", (int)attr); -} - - -static char ici_ICSetPref__doc__[] = -"(key, attr, data)->None; Set preference key to data with attributes" -; - -static PyObject * -ici_ICSetPref(iciobject *self, PyObject *args) -{ - OSStatus err; - Str255 key; - int attr; - char *data; - int datalen; - - if (!PyArg_ParseTuple(args, "O&is#", PyMac_GetStr255, &key, &attr, - &data, &datalen)) - return NULL; - if ((err=ICSetPref(self->inst, key, (ICAttr)attr, (Ptr)data, - (long)datalen)) != 0) - return PyMac_Error(err); - Py_INCREF(Py_None); - return Py_None; -} - - -static char ici_ICCountPref__doc__[] = -"()->int; Return number of preferences" -; - -static PyObject * -ici_ICCountPref(iciobject *self, PyObject *args) -{ - OSStatus err; - long count; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - if ((err=ICCountPref(self->inst, &count)) != 0 ) - return PyMac_Error(err); - return Py_BuildValue("i", (int)count); -} - - -static char ici_ICGetIndPref__doc__[] = -"(num)->key; Return key of preference with given index" -; - -static PyObject * -ici_ICGetIndPref(iciobject *self, PyObject *args) -{ - OSStatus err; - long num; - Str255 key; - - if (!PyArg_ParseTuple(args, "l", &num)) - return NULL; - if ((err=ICGetIndPref(self->inst, num, key)) != 0 ) - return PyMac_Error(err); - return Py_BuildValue("O&", PyMac_BuildStr255, key); -} - - -static char ici_ICDeletePref__doc__[] = -"(key)->None; Delete preference" -; - -static PyObject * -ici_ICDeletePref(iciobject *self, PyObject *args) -{ - OSStatus err; - Str255 key; - - if (!PyArg_ParseTuple(args, "O&", PyMac_GetStr255, key)) - return NULL; - if ((err=ICDeletePref(self->inst, key)) != 0 ) - return PyMac_Error(err); - Py_INCREF(Py_None); - return Py_None; -} - - -static char ici_ICEnd__doc__[] = -"()->None; Unlock file after ICBegin call" -; - -static PyObject * -ici_ICEnd(iciobject *self, PyObject *args) -{ - OSStatus err; - - if (!PyArg_ParseTuple(args, "")) - return NULL; - if ((err=ICEnd(self->inst)) != 0 ) - return PyMac_Error(err); - Py_INCREF(Py_None); - return Py_None; -} - - -static char ici_ICEditPreferences__doc__[] = -"(key)->None; Ask user to edit preferences, staring with key" -; - -static PyObject * -ici_ICEditPreferences(iciobject *self, PyObject *args) -{ - OSStatus err; - Str255 key; - - if (!PyArg_ParseTuple(args, "O&", PyMac_GetStr255, key)) - return NULL; - if ((err=ICEditPreferences(self->inst, key)) != 0 ) - return PyMac_Error(err); - Py_INCREF(Py_None); - return Py_None; -} - - -static char ici_ICParseURL__doc__[] = -"(hint, data, selStart, selEnd, handle)->selStart, selEnd; Find an URL, return in handle" -; - -static PyObject * -ici_ICParseURL(iciobject *self, PyObject *args) -{ - OSStatus err; - Str255 hint; - char *data; - int datalen; - long selStart, selEnd; - Handle h; - - if (!PyArg_ParseTuple(args, "O&s#llO&", PyMac_GetStr255, hint, &data, &datalen, - &selStart, &selEnd, ResObj_Convert, &h)) - return NULL; - if ((err=ICParseURL(self->inst, hint, (Ptr)data, (long)datalen, - &selStart, &selEnd, h)) != 0 ) - return PyMac_Error(err); - return Py_BuildValue("ii", (int)selStart, (int)selEnd); -} - - -static char ici_ICLaunchURL__doc__[] = -"(hint, data, selStart, selEnd)->None; Find an URL and launch the correct app" -; - -static PyObject * -ici_ICLaunchURL(iciobject *self, PyObject *args) -{ - OSStatus err; - Str255 hint; - char *data; - int datalen; - long selStart, selEnd; - - if (!PyArg_ParseTuple(args, "O&s#ll", PyMac_GetStr255, hint, &data, &datalen, - &selStart, &selEnd)) - return NULL; - if ((err=ICLaunchURL(self->inst, hint, (Ptr)data, (long)datalen, - &selStart, &selEnd)) != 0 ) - return PyMac_Error(err); - return Py_BuildValue("ii", (int)selStart, (int)selEnd); -} - - -static char ici_ICMapFilename__doc__[] = -"(filename)->mapinfo; Get filemap info for given filename" -; - -static PyObject * -ici_ICMapFilename(iciobject *self, PyObject *args) -{ - OSStatus err; - Str255 filename; - ICMapEntry entry; - - if (!PyArg_ParseTuple(args, "O&", PyMac_GetStr255, filename)) - return NULL; - if ((err=ICMapFilename(self->inst, filename, &entry)) != 0 ) - return PyMac_Error(err); - return Py_BuildValue("hO&O&O&lO&O&O&O&O&", entry.version, - PyMac_BuildOSType, entry.fileType, - PyMac_BuildOSType, entry.fileCreator, - PyMac_BuildOSType, entry.postCreator, - entry.flags, - PyMac_BuildStr255, entry.extension, - PyMac_BuildStr255, entry.creatorAppName, - PyMac_BuildStr255, entry.postAppName, - PyMac_BuildStr255, entry.MIMEType, - PyMac_BuildStr255, entry.entryName); -} - - -static char ici_ICMapTypeCreator__doc__[] = -"(type, creator, filename)->mapinfo; Get filemap info for given tp/cr/filename" -; - -static PyObject * -ici_ICMapTypeCreator(iciobject *self, PyObject *args) -{ - OSStatus err; - OSType type, creator; - Str255 filename; - ICMapEntry entry; - - if (!PyArg_ParseTuple(args, "O&O&O&", - PyMac_GetOSType, &type, - PyMac_GetOSType, &creator, - PyMac_GetStr255, filename)) - return NULL; - if ((err=ICMapTypeCreator(self->inst, type, creator, filename, &entry)) != 0 ) - return PyMac_Error(err); - return Py_BuildValue("hO&O&O&lO&O&O&O&O&", entry.version, - PyMac_BuildOSType, entry.fileType, - PyMac_BuildOSType, entry.fileCreator, - PyMac_BuildOSType, entry.postCreator, - entry.flags, - PyMac_BuildStr255, entry.extension, - PyMac_BuildStr255, entry.creatorAppName, - PyMac_BuildStr255, entry.postAppName, - PyMac_BuildStr255, entry.MIMEType, - PyMac_BuildStr255, entry.entryName); -} - - -static struct PyMethodDef ici_methods[] = { - {"ICGetSeed", (PyCFunction)ici_ICGetSeed, METH_VARARGS, ici_ICGetSeed__doc__}, - {"ICBegin", (PyCFunction)ici_ICBegin, METH_VARARGS, ici_ICBegin__doc__}, - {"ICFindPrefHandle", (PyCFunction)ici_ICFindPrefHandle, METH_VARARGS, ici_ICFindPrefHandle__doc__}, - {"ICSetPref", (PyCFunction)ici_ICSetPref, METH_VARARGS, ici_ICSetPref__doc__}, - {"ICCountPref", (PyCFunction)ici_ICCountPref, METH_VARARGS, ici_ICCountPref__doc__}, - {"ICGetIndPref", (PyCFunction)ici_ICGetIndPref, METH_VARARGS, ici_ICGetIndPref__doc__}, - {"ICDeletePref", (PyCFunction)ici_ICDeletePref, METH_VARARGS, ici_ICDeletePref__doc__}, - {"ICEnd", (PyCFunction)ici_ICEnd, METH_VARARGS, ici_ICEnd__doc__}, - {"ICEditPreferences", (PyCFunction)ici_ICEditPreferences, METH_VARARGS, ici_ICEditPreferences__doc__}, - {"ICParseURL", (PyCFunction)ici_ICParseURL, METH_VARARGS, ici_ICParseURL__doc__}, - {"ICLaunchURL", (PyCFunction)ici_ICLaunchURL, METH_VARARGS, ici_ICLaunchURL__doc__}, - {"ICMapFilename", (PyCFunction)ici_ICMapFilename, METH_VARARGS, ici_ICMapFilename__doc__}, - {"ICMapTypeCreator", (PyCFunction)ici_ICMapTypeCreator, METH_VARARGS, ici_ICMapTypeCreator__doc__}, - - {NULL, NULL} /* sentinel */ -}; - -/* ---------- */ - - -static iciobject * -newiciobject(OSType creator) -{ - iciobject *self; - OSStatus err; - - self = PyObject_NEW(iciobject, &Icitype); - if (self == NULL) - return NULL; - if ((err=ICStart(&self->inst, creator)) != 0 ) { - (void)PyMac_Error(err); - PyObject_DEL(self); - return NULL; - } - return self; -} - - -static void -ici_dealloc(iciobject *self) -{ - (void)ICStop(self->inst); - PyObject_DEL(self); -} - -static PyObject * -ici_getattr(iciobject *self, char *name) -{ - return Py_FindMethod(ici_methods, (PyObject *)self, name); -} - -static char Icitype__doc__[] = -"Internet Config instance" -; - -static PyTypeObject Icitype = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /*ob_size*/ - "icglue.ic_instance", /*tp_name*/ - sizeof(iciobject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)ici_dealloc, /*tp_dealloc*/ - (printfunc)0, /*tp_print*/ - (getattrfunc)ici_getattr, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc)0, /*tp_compare*/ - (reprfunc)0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - (hashfunc)0, /*tp_hash*/ - (ternaryfunc)0, /*tp_call*/ - (reprfunc)0, /*tp_str*/ - - /* Space for future expansion */ - 0L,0L,0L,0L, - Icitype__doc__ /* Documentation string */ -}; - -/* End of code for ic_instance objects */ -/* -------------------------------------------------------- */ - - -static char ic_ICStart__doc__[] = -"(OSType)->ic_instance; Create an Internet Config instance" -; - -static PyObject * -ic_ICStart(PyObject *self, PyObject *args) -{ - OSType creator; - - if (!PyArg_ParseTuple(args, "O&", PyMac_GetOSType, &creator)) - return NULL; - return (PyObject *)newiciobject(creator); -} - -/* List of methods defined in the module */ - -static struct PyMethodDef ic_methods[] = { - {"ICStart", (PyCFunction)ic_ICStart, METH_VARARGS, ic_ICStart__doc__}, - - {NULL, (PyCFunction)NULL, 0, NULL} /* sentinel */ -}; - - -/* Initialization function for the module (*must* be called initicglue) */ - -static char icglue_module_documentation[] = -"Implements low-level Internet Config interface" -; - -void -initicglue(void) -{ - PyObject *m, *d; - - if (PyErr_WarnPy3k("In 3.x, icglue is removed.", 1)) - return; - - /* Create the module and add the functions */ - m = Py_InitModule4("icglue", ic_methods, - icglue_module_documentation, - (PyObject*)NULL,PYTHON_API_VERSION); - - /* Add some symbolic constants to the module */ - d = PyModule_GetDict(m); - ErrorObject = PyMac_GetOSErrException(); - if (ErrorObject == NULL || - PyDict_SetItemString(d, "error", ErrorObject) != 0) - return; - - /* XXXX Add constants here */ - - /* Check for errors */ - if (PyErr_Occurred()) - Py_FatalError("can't initialize module icglue"); -} - diff --git a/project/jni/python/src/Mac/Modules/icn/_Icnmodule.c b/project/jni/python/src/Mac/Modules/icn/_Icnmodule.c deleted file mode 100644 index 80201a2c2..000000000 --- a/project/jni/python/src/Mac/Modules/icn/_Icnmodule.c +++ /dev/null @@ -1,1607 +0,0 @@ - -/* ========================== Module _Icn =========================== */ - -#include "Python.h" - - -#ifndef __LP64__ - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - - -static PyObject *Icn_Error; - -static PyObject *Icn_GetCIcon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CIconHandle _rv; - SInt16 iconID; -#ifndef GetCIcon - PyMac_PRECHECK(GetCIcon); -#endif - if (!PyArg_ParseTuple(_args, "h", - &iconID)) - return NULL; - _rv = GetCIcon(iconID); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Icn_PlotCIcon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect theRect; - CIconHandle theIcon; -#ifndef PlotCIcon - PyMac_PRECHECK(PlotCIcon); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &theRect, - ResObj_Convert, &theIcon)) - return NULL; - PlotCIcon(&theRect, - theIcon); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_DisposeCIcon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CIconHandle theIcon; -#ifndef DisposeCIcon - PyMac_PRECHECK(DisposeCIcon); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theIcon)) - return NULL; - DisposeCIcon(theIcon); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_GetIcon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; - SInt16 iconID; -#ifndef GetIcon - PyMac_PRECHECK(GetIcon); -#endif - if (!PyArg_ParseTuple(_args, "h", - &iconID)) - return NULL; - _rv = GetIcon(iconID); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Icn_PlotIcon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect theRect; - Handle theIcon; -#ifndef PlotIcon - PyMac_PRECHECK(PlotIcon); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &theRect, - ResObj_Convert, &theIcon)) - return NULL; - PlotIcon(&theRect, - theIcon); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_PlotIconID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Rect theRect; - IconAlignmentType align; - IconTransformType transform; - SInt16 theResID; -#ifndef PlotIconID - PyMac_PRECHECK(PlotIconID); -#endif - if (!PyArg_ParseTuple(_args, "O&hhh", - PyMac_GetRect, &theRect, - &align, - &transform, - &theResID)) - return NULL; - _err = PlotIconID(&theRect, - align, - transform, - theResID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_NewIconSuite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconSuiteRef theIconSuite; -#ifndef NewIconSuite - PyMac_PRECHECK(NewIconSuite); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = NewIconSuite(&theIconSuite); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, theIconSuite); - return _res; -} - -static PyObject *Icn_AddIconToSuite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle theIconData; - IconSuiteRef theSuite; - ResType theType; -#ifndef AddIconToSuite - PyMac_PRECHECK(AddIconToSuite); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &theIconData, - ResObj_Convert, &theSuite, - PyMac_GetOSType, &theType)) - return NULL; - _err = AddIconToSuite(theIconData, - theSuite, - theType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_GetIconFromSuite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle theIconData; - IconSuiteRef theSuite; - ResType theType; -#ifndef GetIconFromSuite - PyMac_PRECHECK(GetIconFromSuite); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &theSuite, - PyMac_GetOSType, &theType)) - return NULL; - _err = GetIconFromSuite(&theIconData, - theSuite, - theType); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, theIconData); - return _res; -} - -static PyObject *Icn_GetIconSuite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconSuiteRef theIconSuite; - SInt16 theResID; - IconSelectorValue selector; -#ifndef GetIconSuite - PyMac_PRECHECK(GetIconSuite); -#endif - if (!PyArg_ParseTuple(_args, "hl", - &theResID, - &selector)) - return NULL; - _err = GetIconSuite(&theIconSuite, - theResID, - selector); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, theIconSuite); - return _res; -} - -static PyObject *Icn_DisposeIconSuite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconSuiteRef theIconSuite; - Boolean disposeData; -#ifndef DisposeIconSuite - PyMac_PRECHECK(DisposeIconSuite); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - ResObj_Convert, &theIconSuite, - &disposeData)) - return NULL; - _err = DisposeIconSuite(theIconSuite, - disposeData); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_PlotIconSuite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Rect theRect; - IconAlignmentType align; - IconTransformType transform; - IconSuiteRef theIconSuite; -#ifndef PlotIconSuite - PyMac_PRECHECK(PlotIconSuite); -#endif - if (!PyArg_ParseTuple(_args, "O&hhO&", - PyMac_GetRect, &theRect, - &align, - &transform, - ResObj_Convert, &theIconSuite)) - return NULL; - _err = PlotIconSuite(&theRect, - align, - transform, - theIconSuite); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_LoadIconCache(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Rect theRect; - IconAlignmentType align; - IconTransformType transform; - IconCacheRef theIconCache; -#ifndef LoadIconCache - PyMac_PRECHECK(LoadIconCache); -#endif - if (!PyArg_ParseTuple(_args, "O&hhO&", - PyMac_GetRect, &theRect, - &align, - &transform, - ResObj_Convert, &theIconCache)) - return NULL; - _err = LoadIconCache(&theRect, - align, - transform, - theIconCache); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_GetLabel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 labelNumber; - RGBColor labelColor; - Str255 labelString; -#ifndef GetLabel - PyMac_PRECHECK(GetLabel); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &labelNumber, - PyMac_GetStr255, labelString)) - return NULL; - _err = GetLabel(labelNumber, - &labelColor, - labelString); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - QdRGB_New, &labelColor); - return _res; -} - -static PyObject *Icn_PtInIconID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point testPt; - Rect iconRect; - IconAlignmentType align; - SInt16 iconID; -#ifndef PtInIconID - PyMac_PRECHECK(PtInIconID); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hh", - PyMac_GetPoint, &testPt, - PyMac_GetRect, &iconRect, - &align, - &iconID)) - return NULL; - _rv = PtInIconID(testPt, - &iconRect, - align, - iconID); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Icn_PtInIconSuite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point testPt; - Rect iconRect; - IconAlignmentType align; - IconSuiteRef theIconSuite; -#ifndef PtInIconSuite - PyMac_PRECHECK(PtInIconSuite); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hO&", - PyMac_GetPoint, &testPt, - PyMac_GetRect, &iconRect, - &align, - ResObj_Convert, &theIconSuite)) - return NULL; - _rv = PtInIconSuite(testPt, - &iconRect, - align, - theIconSuite); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Icn_RectInIconID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Rect testRect; - Rect iconRect; - IconAlignmentType align; - SInt16 iconID; -#ifndef RectInIconID - PyMac_PRECHECK(RectInIconID); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hh", - PyMac_GetRect, &testRect, - PyMac_GetRect, &iconRect, - &align, - &iconID)) - return NULL; - _rv = RectInIconID(&testRect, - &iconRect, - align, - iconID); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Icn_RectInIconSuite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Rect testRect; - Rect iconRect; - IconAlignmentType align; - IconSuiteRef theIconSuite; -#ifndef RectInIconSuite - PyMac_PRECHECK(RectInIconSuite); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hO&", - PyMac_GetRect, &testRect, - PyMac_GetRect, &iconRect, - &align, - ResObj_Convert, &theIconSuite)) - return NULL; - _rv = RectInIconSuite(&testRect, - &iconRect, - align, - theIconSuite); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Icn_IconIDToRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - RgnHandle theRgn; - Rect iconRect; - IconAlignmentType align; - SInt16 iconID; -#ifndef IconIDToRgn - PyMac_PRECHECK(IconIDToRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hh", - ResObj_Convert, &theRgn, - PyMac_GetRect, &iconRect, - &align, - &iconID)) - return NULL; - _err = IconIDToRgn(theRgn, - &iconRect, - align, - iconID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_IconSuiteToRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - RgnHandle theRgn; - Rect iconRect; - IconAlignmentType align; - IconSuiteRef theIconSuite; -#ifndef IconSuiteToRgn - PyMac_PRECHECK(IconSuiteToRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hO&", - ResObj_Convert, &theRgn, - PyMac_GetRect, &iconRect, - &align, - ResObj_Convert, &theIconSuite)) - return NULL; - _err = IconSuiteToRgn(theRgn, - &iconRect, - align, - theIconSuite); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_SetSuiteLabel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconSuiteRef theSuite; - SInt16 theLabel; -#ifndef SetSuiteLabel - PyMac_PRECHECK(SetSuiteLabel); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - ResObj_Convert, &theSuite, - &theLabel)) - return NULL; - _err = SetSuiteLabel(theSuite, - theLabel); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_GetSuiteLabel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; - IconSuiteRef theSuite; -#ifndef GetSuiteLabel - PyMac_PRECHECK(GetSuiteLabel); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theSuite)) - return NULL; - _rv = GetSuiteLabel(theSuite); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Icn_PlotIconHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Rect theRect; - IconAlignmentType align; - IconTransformType transform; - Handle theIcon; -#ifndef PlotIconHandle - PyMac_PRECHECK(PlotIconHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&hhO&", - PyMac_GetRect, &theRect, - &align, - &transform, - ResObj_Convert, &theIcon)) - return NULL; - _err = PlotIconHandle(&theRect, - align, - transform, - theIcon); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_PlotSICNHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Rect theRect; - IconAlignmentType align; - IconTransformType transform; - Handle theSICN; -#ifndef PlotSICNHandle - PyMac_PRECHECK(PlotSICNHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&hhO&", - PyMac_GetRect, &theRect, - &align, - &transform, - ResObj_Convert, &theSICN)) - return NULL; - _err = PlotSICNHandle(&theRect, - align, - transform, - theSICN); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_PlotCIconHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Rect theRect; - IconAlignmentType align; - IconTransformType transform; - CIconHandle theCIcon; -#ifndef PlotCIconHandle - PyMac_PRECHECK(PlotCIconHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&hhO&", - PyMac_GetRect, &theRect, - &align, - &transform, - ResObj_Convert, &theCIcon)) - return NULL; - _err = PlotCIconHandle(&theRect, - align, - transform, - theCIcon); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_IconRefToIconFamily(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconRef theIconRef; - IconSelectorValue whichIcons; - IconFamilyHandle iconFamily; -#ifndef IconRefToIconFamily - PyMac_PRECHECK(IconRefToIconFamily); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - ResObj_Convert, &theIconRef, - &whichIcons)) - return NULL; - _err = IconRefToIconFamily(theIconRef, - whichIcons, - &iconFamily); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, iconFamily); - return _res; -} - -static PyObject *Icn_IconFamilyToIconSuite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconFamilyHandle iconFamily; - IconSelectorValue whichIcons; - IconSuiteRef iconSuite; -#ifndef IconFamilyToIconSuite - PyMac_PRECHECK(IconFamilyToIconSuite); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - ResObj_Convert, &iconFamily, - &whichIcons)) - return NULL; - _err = IconFamilyToIconSuite(iconFamily, - whichIcons, - &iconSuite); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, iconSuite); - return _res; -} - -static PyObject *Icn_IconSuiteToIconFamily(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconSuiteRef iconSuite; - IconSelectorValue whichIcons; - IconFamilyHandle iconFamily; -#ifndef IconSuiteToIconFamily - PyMac_PRECHECK(IconSuiteToIconFamily); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - ResObj_Convert, &iconSuite, - &whichIcons)) - return NULL; - _err = IconSuiteToIconFamily(iconSuite, - whichIcons, - &iconFamily); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, iconFamily); - return _res; -} - -static PyObject *Icn_SetIconFamilyData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconFamilyHandle iconFamily; - OSType iconType; - Handle h; -#ifndef SetIconFamilyData - PyMac_PRECHECK(SetIconFamilyData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &iconFamily, - PyMac_GetOSType, &iconType, - ResObj_Convert, &h)) - return NULL; - _err = SetIconFamilyData(iconFamily, - iconType, - h); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_GetIconFamilyData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconFamilyHandle iconFamily; - OSType iconType; - Handle h; -#ifndef GetIconFamilyData - PyMac_PRECHECK(GetIconFamilyData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &iconFamily, - PyMac_GetOSType, &iconType, - ResObj_Convert, &h)) - return NULL; - _err = GetIconFamilyData(iconFamily, - iconType, - h); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_GetIconRefOwners(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconRef theIconRef; - UInt16 owners; -#ifndef GetIconRefOwners - PyMac_PRECHECK(GetIconRefOwners); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theIconRef)) - return NULL; - _err = GetIconRefOwners(theIconRef, - &owners); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - owners); - return _res; -} - -static PyObject *Icn_AcquireIconRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconRef theIconRef; -#ifndef AcquireIconRef - PyMac_PRECHECK(AcquireIconRef); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theIconRef)) - return NULL; - _err = AcquireIconRef(theIconRef); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_ReleaseIconRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconRef theIconRef; -#ifndef ReleaseIconRef - PyMac_PRECHECK(ReleaseIconRef); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theIconRef)) - return NULL; - _err = ReleaseIconRef(theIconRef); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_GetIconRefFromFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec theFile; - IconRef theIconRef; - SInt16 theLabel; -#ifndef GetIconRefFromFile - PyMac_PRECHECK(GetIconRefFromFile); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFSSpec, &theFile)) - return NULL; - _err = GetIconRefFromFile(&theFile, - &theIconRef, - &theLabel); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&h", - ResObj_New, theIconRef, - theLabel); - return _res; -} - -static PyObject *Icn_GetIconRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 vRefNum; - OSType creator; - OSType iconType; - IconRef theIconRef; -#ifndef GetIconRef - PyMac_PRECHECK(GetIconRef); -#endif - if (!PyArg_ParseTuple(_args, "hO&O&", - &vRefNum, - PyMac_GetOSType, &creator, - PyMac_GetOSType, &iconType)) - return NULL; - _err = GetIconRef(vRefNum, - creator, - iconType, - &theIconRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, theIconRef); - return _res; -} - -static PyObject *Icn_GetIconRefFromFolder(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 vRefNum; - SInt32 parentFolderID; - SInt32 folderID; - SInt8 attributes; - SInt8 accessPrivileges; - IconRef theIconRef; -#ifndef GetIconRefFromFolder - PyMac_PRECHECK(GetIconRefFromFolder); -#endif - if (!PyArg_ParseTuple(_args, "hllbb", - &vRefNum, - &parentFolderID, - &folderID, - &attributes, - &accessPrivileges)) - return NULL; - _err = GetIconRefFromFolder(vRefNum, - parentFolderID, - folderID, - attributes, - accessPrivileges, - &theIconRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, theIconRef); - return _res; -} - -static PyObject *Icn_RegisterIconRefFromIconFamily(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType creator; - OSType iconType; - IconFamilyHandle iconFamily; - IconRef theIconRef; -#ifndef RegisterIconRefFromIconFamily - PyMac_PRECHECK(RegisterIconRefFromIconFamily); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - PyMac_GetOSType, &creator, - PyMac_GetOSType, &iconType, - ResObj_Convert, &iconFamily)) - return NULL; - _err = RegisterIconRefFromIconFamily(creator, - iconType, - iconFamily, - &theIconRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, theIconRef); - return _res; -} - -static PyObject *Icn_RegisterIconRefFromResource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType creator; - OSType iconType; - FSSpec resourceFile; - SInt16 resourceID; - IconRef theIconRef; -#ifndef RegisterIconRefFromResource - PyMac_PRECHECK(RegisterIconRefFromResource); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&h", - PyMac_GetOSType, &creator, - PyMac_GetOSType, &iconType, - PyMac_GetFSSpec, &resourceFile, - &resourceID)) - return NULL; - _err = RegisterIconRefFromResource(creator, - iconType, - &resourceFile, - resourceID, - &theIconRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, theIconRef); - return _res; -} - -static PyObject *Icn_RegisterIconRefFromFSRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType creator; - OSType iconType; - FSRef iconFile; - IconRef theIconRef; -#ifndef RegisterIconRefFromFSRef - PyMac_PRECHECK(RegisterIconRefFromFSRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - PyMac_GetOSType, &creator, - PyMac_GetOSType, &iconType, - PyMac_GetFSRef, &iconFile)) - return NULL; - _err = RegisterIconRefFromFSRef(creator, - iconType, - &iconFile, - &theIconRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, theIconRef); - return _res; -} - -static PyObject *Icn_UnregisterIconRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType creator; - OSType iconType; -#ifndef UnregisterIconRef - PyMac_PRECHECK(UnregisterIconRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &creator, - PyMac_GetOSType, &iconType)) - return NULL; - _err = UnregisterIconRef(creator, - iconType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_UpdateIconRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconRef theIconRef; -#ifndef UpdateIconRef - PyMac_PRECHECK(UpdateIconRef); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theIconRef)) - return NULL; - _err = UpdateIconRef(theIconRef); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_OverrideIconRefFromResource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconRef theIconRef; - FSSpec resourceFile; - SInt16 resourceID; -#ifndef OverrideIconRefFromResource - PyMac_PRECHECK(OverrideIconRefFromResource); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - ResObj_Convert, &theIconRef, - PyMac_GetFSSpec, &resourceFile, - &resourceID)) - return NULL; - _err = OverrideIconRefFromResource(theIconRef, - &resourceFile, - resourceID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_OverrideIconRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconRef oldIconRef; - IconRef newIconRef; -#ifndef OverrideIconRef - PyMac_PRECHECK(OverrideIconRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &oldIconRef, - ResObj_Convert, &newIconRef)) - return NULL; - _err = OverrideIconRef(oldIconRef, - newIconRef); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_RemoveIconRefOverride(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconRef theIconRef; -#ifndef RemoveIconRefOverride - PyMac_PRECHECK(RemoveIconRefOverride); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theIconRef)) - return NULL; - _err = RemoveIconRefOverride(theIconRef); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_CompositeIconRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconRef backgroundIconRef; - IconRef foregroundIconRef; - IconRef compositeIconRef; -#ifndef CompositeIconRef - PyMac_PRECHECK(CompositeIconRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &backgroundIconRef, - ResObj_Convert, &foregroundIconRef)) - return NULL; - _err = CompositeIconRef(backgroundIconRef, - foregroundIconRef, - &compositeIconRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, compositeIconRef); - return _res; -} - -static PyObject *Icn_IsIconRefComposite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconRef compositeIconRef; - IconRef backgroundIconRef; - IconRef foregroundIconRef; -#ifndef IsIconRefComposite - PyMac_PRECHECK(IsIconRefComposite); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &compositeIconRef)) - return NULL; - _err = IsIconRefComposite(compositeIconRef, - &backgroundIconRef, - &foregroundIconRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - ResObj_New, backgroundIconRef, - ResObj_New, foregroundIconRef); - return _res; -} - -static PyObject *Icn_IsValidIconRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - IconRef theIconRef; -#ifndef IsValidIconRef - PyMac_PRECHECK(IsValidIconRef); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theIconRef)) - return NULL; - _rv = IsValidIconRef(theIconRef); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Icn_PlotIconRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Rect theRect; - IconAlignmentType align; - IconTransformType transform; - IconServicesUsageFlags theIconServicesUsageFlags; - IconRef theIconRef; -#ifndef PlotIconRef - PyMac_PRECHECK(PlotIconRef); -#endif - if (!PyArg_ParseTuple(_args, "O&hhlO&", - PyMac_GetRect, &theRect, - &align, - &transform, - &theIconServicesUsageFlags, - ResObj_Convert, &theIconRef)) - return NULL; - _err = PlotIconRef(&theRect, - align, - transform, - theIconServicesUsageFlags, - theIconRef); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_PtInIconRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point testPt; - Rect iconRect; - IconAlignmentType align; - IconServicesUsageFlags theIconServicesUsageFlags; - IconRef theIconRef; -#ifndef PtInIconRef - PyMac_PRECHECK(PtInIconRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hlO&", - PyMac_GetPoint, &testPt, - PyMac_GetRect, &iconRect, - &align, - &theIconServicesUsageFlags, - ResObj_Convert, &theIconRef)) - return NULL; - _rv = PtInIconRef(&testPt, - &iconRect, - align, - theIconServicesUsageFlags, - theIconRef); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Icn_RectInIconRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Rect testRect; - Rect iconRect; - IconAlignmentType align; - IconServicesUsageFlags iconServicesUsageFlags; - IconRef theIconRef; -#ifndef RectInIconRef - PyMac_PRECHECK(RectInIconRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hlO&", - PyMac_GetRect, &testRect, - PyMac_GetRect, &iconRect, - &align, - &iconServicesUsageFlags, - ResObj_Convert, &theIconRef)) - return NULL; - _rv = RectInIconRef(&testRect, - &iconRect, - align, - iconServicesUsageFlags, - theIconRef); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Icn_IconRefToRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - RgnHandle theRgn; - Rect iconRect; - IconAlignmentType align; - IconServicesUsageFlags iconServicesUsageFlags; - IconRef theIconRef; -#ifndef IconRefToRgn - PyMac_PRECHECK(IconRefToRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hlO&", - ResObj_Convert, &theRgn, - PyMac_GetRect, &iconRect, - &align, - &iconServicesUsageFlags, - ResObj_Convert, &theIconRef)) - return NULL; - _err = IconRefToRgn(theRgn, - &iconRect, - align, - iconServicesUsageFlags, - theIconRef); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_GetIconSizesFromIconRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconSelectorValue iconSelectorInput; - IconSelectorValue iconSelectorOutputPtr; - IconServicesUsageFlags iconServicesUsageFlags; - IconRef theIconRef; -#ifndef GetIconSizesFromIconRef - PyMac_PRECHECK(GetIconSizesFromIconRef); -#endif - if (!PyArg_ParseTuple(_args, "llO&", - &iconSelectorInput, - &iconServicesUsageFlags, - ResObj_Convert, &theIconRef)) - return NULL; - _err = GetIconSizesFromIconRef(iconSelectorInput, - &iconSelectorOutputPtr, - iconServicesUsageFlags, - theIconRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - iconSelectorOutputPtr); - return _res; -} - -static PyObject *Icn_FlushIconRefs(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType creator; - OSType iconType; -#ifndef FlushIconRefs - PyMac_PRECHECK(FlushIconRefs); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &creator, - PyMac_GetOSType, &iconType)) - return NULL; - _err = FlushIconRefs(creator, - iconType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_FlushIconRefsByVolume(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 vRefNum; -#ifndef FlushIconRefsByVolume - PyMac_PRECHECK(FlushIconRefsByVolume); -#endif - if (!PyArg_ParseTuple(_args, "h", - &vRefNum)) - return NULL; - _err = FlushIconRefsByVolume(vRefNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_SetCustomIconsEnabled(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 vRefNum; - Boolean enableCustomIcons; -#ifndef SetCustomIconsEnabled - PyMac_PRECHECK(SetCustomIconsEnabled); -#endif - if (!PyArg_ParseTuple(_args, "hb", - &vRefNum, - &enableCustomIcons)) - return NULL; - _err = SetCustomIconsEnabled(vRefNum, - enableCustomIcons); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Icn_GetCustomIconsEnabled(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 vRefNum; - Boolean customIconsEnabled; -#ifndef GetCustomIconsEnabled - PyMac_PRECHECK(GetCustomIconsEnabled); -#endif - if (!PyArg_ParseTuple(_args, "h", - &vRefNum)) - return NULL; - _err = GetCustomIconsEnabled(vRefNum, - &customIconsEnabled); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - customIconsEnabled); - return _res; -} - -static PyObject *Icn_IsIconRefMaskEmpty(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - IconRef iconRef; -#ifndef IsIconRefMaskEmpty - PyMac_PRECHECK(IsIconRefMaskEmpty); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &iconRef)) - return NULL; - _rv = IsIconRefMaskEmpty(iconRef); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Icn_GetIconRefVariant(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - IconRef _rv; - IconRef inIconRef; - OSType inVariant; - IconTransformType outTransform; -#ifndef GetIconRefVariant - PyMac_PRECHECK(GetIconRefVariant); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &inIconRef, - PyMac_GetOSType, &inVariant)) - return NULL; - _rv = GetIconRefVariant(inIconRef, - inVariant, - &outTransform); - _res = Py_BuildValue("O&h", - ResObj_New, _rv, - outTransform); - return _res; -} - -static PyObject *Icn_RegisterIconRefFromIconFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType creator; - OSType iconType; - FSSpec iconFile; - IconRef theIconRef; -#ifndef RegisterIconRefFromIconFile - PyMac_PRECHECK(RegisterIconRefFromIconFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - PyMac_GetOSType, &creator, - PyMac_GetOSType, &iconType, - PyMac_GetFSSpec, &iconFile)) - return NULL; - _err = RegisterIconRefFromIconFile(creator, - iconType, - &iconFile, - &theIconRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, theIconRef); - return _res; -} - -static PyObject *Icn_ReadIconFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec iconFile; - IconFamilyHandle iconFamily; -#ifndef ReadIconFile - PyMac_PRECHECK(ReadIconFile); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFSSpec, &iconFile)) - return NULL; - _err = ReadIconFile(&iconFile, - &iconFamily); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, iconFamily); - return _res; -} - -static PyObject *Icn_ReadIconFromFSRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FSRef ref; - IconFamilyHandle iconFamily; -#ifndef ReadIconFromFSRef - PyMac_PRECHECK(ReadIconFromFSRef); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFSRef, &ref)) - return NULL; - _err = ReadIconFromFSRef(&ref, - &iconFamily); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, iconFamily); - return _res; -} - -static PyObject *Icn_WriteIconFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - IconFamilyHandle iconFamily; - FSSpec iconFile; -#ifndef WriteIconFile - PyMac_PRECHECK(WriteIconFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &iconFamily, - PyMac_GetFSSpec, &iconFile)) - return NULL; - _err = WriteIconFile(iconFamily, - &iconFile); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} -#endif /* __LP64__ */ - -static PyMethodDef Icn_methods[] = { -#ifndef __LP64__ - {"GetCIcon", (PyCFunction)Icn_GetCIcon, 1, - PyDoc_STR("(SInt16 iconID) -> (CIconHandle _rv)")}, - {"PlotCIcon", (PyCFunction)Icn_PlotCIcon, 1, - PyDoc_STR("(Rect theRect, CIconHandle theIcon) -> None")}, - {"DisposeCIcon", (PyCFunction)Icn_DisposeCIcon, 1, - PyDoc_STR("(CIconHandle theIcon) -> None")}, - {"GetIcon", (PyCFunction)Icn_GetIcon, 1, - PyDoc_STR("(SInt16 iconID) -> (Handle _rv)")}, - {"PlotIcon", (PyCFunction)Icn_PlotIcon, 1, - PyDoc_STR("(Rect theRect, Handle theIcon) -> None")}, - {"PlotIconID", (PyCFunction)Icn_PlotIconID, 1, - PyDoc_STR("(Rect theRect, IconAlignmentType align, IconTransformType transform, SInt16 theResID) -> None")}, - {"NewIconSuite", (PyCFunction)Icn_NewIconSuite, 1, - PyDoc_STR("() -> (IconSuiteRef theIconSuite)")}, - {"AddIconToSuite", (PyCFunction)Icn_AddIconToSuite, 1, - PyDoc_STR("(Handle theIconData, IconSuiteRef theSuite, ResType theType) -> None")}, - {"GetIconFromSuite", (PyCFunction)Icn_GetIconFromSuite, 1, - PyDoc_STR("(IconSuiteRef theSuite, ResType theType) -> (Handle theIconData)")}, - {"GetIconSuite", (PyCFunction)Icn_GetIconSuite, 1, - PyDoc_STR("(SInt16 theResID, IconSelectorValue selector) -> (IconSuiteRef theIconSuite)")}, - {"DisposeIconSuite", (PyCFunction)Icn_DisposeIconSuite, 1, - PyDoc_STR("(IconSuiteRef theIconSuite, Boolean disposeData) -> None")}, - {"PlotIconSuite", (PyCFunction)Icn_PlotIconSuite, 1, - PyDoc_STR("(Rect theRect, IconAlignmentType align, IconTransformType transform, IconSuiteRef theIconSuite) -> None")}, - {"LoadIconCache", (PyCFunction)Icn_LoadIconCache, 1, - PyDoc_STR("(Rect theRect, IconAlignmentType align, IconTransformType transform, IconCacheRef theIconCache) -> None")}, - {"GetLabel", (PyCFunction)Icn_GetLabel, 1, - PyDoc_STR("(SInt16 labelNumber, Str255 labelString) -> (RGBColor labelColor)")}, - {"PtInIconID", (PyCFunction)Icn_PtInIconID, 1, - PyDoc_STR("(Point testPt, Rect iconRect, IconAlignmentType align, SInt16 iconID) -> (Boolean _rv)")}, - {"PtInIconSuite", (PyCFunction)Icn_PtInIconSuite, 1, - PyDoc_STR("(Point testPt, Rect iconRect, IconAlignmentType align, IconSuiteRef theIconSuite) -> (Boolean _rv)")}, - {"RectInIconID", (PyCFunction)Icn_RectInIconID, 1, - PyDoc_STR("(Rect testRect, Rect iconRect, IconAlignmentType align, SInt16 iconID) -> (Boolean _rv)")}, - {"RectInIconSuite", (PyCFunction)Icn_RectInIconSuite, 1, - PyDoc_STR("(Rect testRect, Rect iconRect, IconAlignmentType align, IconSuiteRef theIconSuite) -> (Boolean _rv)")}, - {"IconIDToRgn", (PyCFunction)Icn_IconIDToRgn, 1, - PyDoc_STR("(RgnHandle theRgn, Rect iconRect, IconAlignmentType align, SInt16 iconID) -> None")}, - {"IconSuiteToRgn", (PyCFunction)Icn_IconSuiteToRgn, 1, - PyDoc_STR("(RgnHandle theRgn, Rect iconRect, IconAlignmentType align, IconSuiteRef theIconSuite) -> None")}, - {"SetSuiteLabel", (PyCFunction)Icn_SetSuiteLabel, 1, - PyDoc_STR("(IconSuiteRef theSuite, SInt16 theLabel) -> None")}, - {"GetSuiteLabel", (PyCFunction)Icn_GetSuiteLabel, 1, - PyDoc_STR("(IconSuiteRef theSuite) -> (SInt16 _rv)")}, - {"PlotIconHandle", (PyCFunction)Icn_PlotIconHandle, 1, - PyDoc_STR("(Rect theRect, IconAlignmentType align, IconTransformType transform, Handle theIcon) -> None")}, - {"PlotSICNHandle", (PyCFunction)Icn_PlotSICNHandle, 1, - PyDoc_STR("(Rect theRect, IconAlignmentType align, IconTransformType transform, Handle theSICN) -> None")}, - {"PlotCIconHandle", (PyCFunction)Icn_PlotCIconHandle, 1, - PyDoc_STR("(Rect theRect, IconAlignmentType align, IconTransformType transform, CIconHandle theCIcon) -> None")}, - {"IconRefToIconFamily", (PyCFunction)Icn_IconRefToIconFamily, 1, - PyDoc_STR("(IconRef theIconRef, IconSelectorValue whichIcons) -> (IconFamilyHandle iconFamily)")}, - {"IconFamilyToIconSuite", (PyCFunction)Icn_IconFamilyToIconSuite, 1, - PyDoc_STR("(IconFamilyHandle iconFamily, IconSelectorValue whichIcons) -> (IconSuiteRef iconSuite)")}, - {"IconSuiteToIconFamily", (PyCFunction)Icn_IconSuiteToIconFamily, 1, - PyDoc_STR("(IconSuiteRef iconSuite, IconSelectorValue whichIcons) -> (IconFamilyHandle iconFamily)")}, - {"SetIconFamilyData", (PyCFunction)Icn_SetIconFamilyData, 1, - PyDoc_STR("(IconFamilyHandle iconFamily, OSType iconType, Handle h) -> None")}, - {"GetIconFamilyData", (PyCFunction)Icn_GetIconFamilyData, 1, - PyDoc_STR("(IconFamilyHandle iconFamily, OSType iconType, Handle h) -> None")}, - {"GetIconRefOwners", (PyCFunction)Icn_GetIconRefOwners, 1, - PyDoc_STR("(IconRef theIconRef) -> (UInt16 owners)")}, - {"AcquireIconRef", (PyCFunction)Icn_AcquireIconRef, 1, - PyDoc_STR("(IconRef theIconRef) -> None")}, - {"ReleaseIconRef", (PyCFunction)Icn_ReleaseIconRef, 1, - PyDoc_STR("(IconRef theIconRef) -> None")}, - {"GetIconRefFromFile", (PyCFunction)Icn_GetIconRefFromFile, 1, - PyDoc_STR("(FSSpec theFile) -> (IconRef theIconRef, SInt16 theLabel)")}, - {"GetIconRef", (PyCFunction)Icn_GetIconRef, 1, - PyDoc_STR("(SInt16 vRefNum, OSType creator, OSType iconType) -> (IconRef theIconRef)")}, - {"GetIconRefFromFolder", (PyCFunction)Icn_GetIconRefFromFolder, 1, - PyDoc_STR("(SInt16 vRefNum, SInt32 parentFolderID, SInt32 folderID, SInt8 attributes, SInt8 accessPrivileges) -> (IconRef theIconRef)")}, - {"RegisterIconRefFromIconFamily", (PyCFunction)Icn_RegisterIconRefFromIconFamily, 1, - PyDoc_STR("(OSType creator, OSType iconType, IconFamilyHandle iconFamily) -> (IconRef theIconRef)")}, - {"RegisterIconRefFromResource", (PyCFunction)Icn_RegisterIconRefFromResource, 1, - PyDoc_STR("(OSType creator, OSType iconType, FSSpec resourceFile, SInt16 resourceID) -> (IconRef theIconRef)")}, - {"RegisterIconRefFromFSRef", (PyCFunction)Icn_RegisterIconRefFromFSRef, 1, - PyDoc_STR("(OSType creator, OSType iconType, FSRef iconFile) -> (IconRef theIconRef)")}, - {"UnregisterIconRef", (PyCFunction)Icn_UnregisterIconRef, 1, - PyDoc_STR("(OSType creator, OSType iconType) -> None")}, - {"UpdateIconRef", (PyCFunction)Icn_UpdateIconRef, 1, - PyDoc_STR("(IconRef theIconRef) -> None")}, - {"OverrideIconRefFromResource", (PyCFunction)Icn_OverrideIconRefFromResource, 1, - PyDoc_STR("(IconRef theIconRef, FSSpec resourceFile, SInt16 resourceID) -> None")}, - {"OverrideIconRef", (PyCFunction)Icn_OverrideIconRef, 1, - PyDoc_STR("(IconRef oldIconRef, IconRef newIconRef) -> None")}, - {"RemoveIconRefOverride", (PyCFunction)Icn_RemoveIconRefOverride, 1, - PyDoc_STR("(IconRef theIconRef) -> None")}, - {"CompositeIconRef", (PyCFunction)Icn_CompositeIconRef, 1, - PyDoc_STR("(IconRef backgroundIconRef, IconRef foregroundIconRef) -> (IconRef compositeIconRef)")}, - {"IsIconRefComposite", (PyCFunction)Icn_IsIconRefComposite, 1, - PyDoc_STR("(IconRef compositeIconRef) -> (IconRef backgroundIconRef, IconRef foregroundIconRef)")}, - {"IsValidIconRef", (PyCFunction)Icn_IsValidIconRef, 1, - PyDoc_STR("(IconRef theIconRef) -> (Boolean _rv)")}, - {"PlotIconRef", (PyCFunction)Icn_PlotIconRef, 1, - PyDoc_STR("(Rect theRect, IconAlignmentType align, IconTransformType transform, IconServicesUsageFlags theIconServicesUsageFlags, IconRef theIconRef) -> None")}, - {"PtInIconRef", (PyCFunction)Icn_PtInIconRef, 1, - PyDoc_STR("(Point testPt, Rect iconRect, IconAlignmentType align, IconServicesUsageFlags theIconServicesUsageFlags, IconRef theIconRef) -> (Boolean _rv)")}, - {"RectInIconRef", (PyCFunction)Icn_RectInIconRef, 1, - PyDoc_STR("(Rect testRect, Rect iconRect, IconAlignmentType align, IconServicesUsageFlags iconServicesUsageFlags, IconRef theIconRef) -> (Boolean _rv)")}, - {"IconRefToRgn", (PyCFunction)Icn_IconRefToRgn, 1, - PyDoc_STR("(RgnHandle theRgn, Rect iconRect, IconAlignmentType align, IconServicesUsageFlags iconServicesUsageFlags, IconRef theIconRef) -> None")}, - {"GetIconSizesFromIconRef", (PyCFunction)Icn_GetIconSizesFromIconRef, 1, - PyDoc_STR("(IconSelectorValue iconSelectorInput, IconServicesUsageFlags iconServicesUsageFlags, IconRef theIconRef) -> (IconSelectorValue iconSelectorOutputPtr)")}, - {"FlushIconRefs", (PyCFunction)Icn_FlushIconRefs, 1, - PyDoc_STR("(OSType creator, OSType iconType) -> None")}, - {"FlushIconRefsByVolume", (PyCFunction)Icn_FlushIconRefsByVolume, 1, - PyDoc_STR("(SInt16 vRefNum) -> None")}, - {"SetCustomIconsEnabled", (PyCFunction)Icn_SetCustomIconsEnabled, 1, - PyDoc_STR("(SInt16 vRefNum, Boolean enableCustomIcons) -> None")}, - {"GetCustomIconsEnabled", (PyCFunction)Icn_GetCustomIconsEnabled, 1, - PyDoc_STR("(SInt16 vRefNum) -> (Boolean customIconsEnabled)")}, - {"IsIconRefMaskEmpty", (PyCFunction)Icn_IsIconRefMaskEmpty, 1, - PyDoc_STR("(IconRef iconRef) -> (Boolean _rv)")}, - {"GetIconRefVariant", (PyCFunction)Icn_GetIconRefVariant, 1, - PyDoc_STR("(IconRef inIconRef, OSType inVariant) -> (IconRef _rv, IconTransformType outTransform)")}, - {"RegisterIconRefFromIconFile", (PyCFunction)Icn_RegisterIconRefFromIconFile, 1, - PyDoc_STR("(OSType creator, OSType iconType, FSSpec iconFile) -> (IconRef theIconRef)")}, - {"ReadIconFile", (PyCFunction)Icn_ReadIconFile, 1, - PyDoc_STR("(FSSpec iconFile) -> (IconFamilyHandle iconFamily)")}, - {"ReadIconFromFSRef", (PyCFunction)Icn_ReadIconFromFSRef, 1, - PyDoc_STR("(FSRef ref) -> (IconFamilyHandle iconFamily)")}, - {"WriteIconFile", (PyCFunction)Icn_WriteIconFile, 1, - PyDoc_STR("(IconFamilyHandle iconFamily, FSSpec iconFile) -> None")}, -#endif /* __LP64__ */ - {NULL, NULL, 0} -}; - - - - -void init_Icn(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; -#endif /* __LP64__ */ - - - - - m = Py_InitModule("_Icn", Icn_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - Icn_Error = PyMac_GetOSErrException(); - if (Icn_Error == NULL || - PyDict_SetItemString(d, "Error", Icn_Error) != 0) - return; -#endif /* __LP64__ */ -} - -/* ======================== End module _Icn ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/icn/icnscan.py b/project/jni/python/src/Mac/Modules/icn/icnscan.py deleted file mode 100644 index 6af3a4ea0..000000000 --- a/project/jni/python/src/Mac/Modules/icn/icnscan.py +++ /dev/null @@ -1,71 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner - -LONG = "Icons" -SHORT = "icn" -OBJECT = "NOTUSED" - -def main(): - input = LONG + ".h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - # This is non-functional today - if t == OBJECT and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def makeblacklistnames(self): - return [ - "GetIconCacheData", - "SetIconCacheData", - # Constants with funny definitions - "kSelectorAllHugeData", - "kSelectorAllAvailableData", - "svAllAvailableData", - # Something in a comment accidentally seen as a const definition - "err", - # OS8 only - 'IconServicesTerminate', - # Lazy, right now. - "GetIconRefFromFileInfo" - ] - - def makeblacklisttypes(self): - return [ - "IconActionUPP", - "IconGetterUPP", - "CFragInitBlockPtr", - "CGRect_ptr", - ] - - def makerepairinstructions(self): - return [ - ] - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - self.defsfile.write("from Carbon.Files import *\n") - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/icn/icnsupport.py b/project/jni/python/src/Mac/Modules/icn/icnsupport.py deleted file mode 100644 index 1b153854b..000000000 --- a/project/jni/python/src/Mac/Modules/icn/icnsupport.py +++ /dev/null @@ -1,90 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'Icons.h' # The Apple header file -MODNAME = '_Icn' # The name of the module -OBJECTNAME = 'Icon' # The basic name of the objects used here -KIND = 'Handle' # Usually 'Ptr' or 'Handle' - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Icn' # The prefix for module-wide routines -OBJECTTYPE = OBJECTNAME + KIND # The C type used to represent them -OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects -CIconHandle = OpaqueByValueType("CIconHandle", "ResObj") -IconSuiteRef = OpaqueByValueType("IconSuiteRef", "ResObj") -IconCacheRef = OpaqueByValueType("IconCacheRef", "ResObj") -IconRef = OpaqueByValueType("IconRef", "ResObj") -IconFamilyHandle = OpaqueByValueType("IconFamilyHandle", "ResObj") -RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") -IconAlignmentType = Type("IconAlignmentType", "h") -IconTransformType = Type("IconTransformType", "h") -IconSelectorValue = Type("IconSelectorValue", "l") -IconServicesUsageFlags = Type("IconServicesUsageFlags", "l") -RGBColor = OpaqueType("RGBColor", "QdRGB") -CGContextRef = OpaqueByValueType("CGContextRef", "CGContextRefObj") - -#WindowPeek = OpaqueByValueType("WindowPeek", OBJECTPREFIX) - -# RgnHandle = FakeType("(RgnHandle)0") -# XXXX Should be next, but this will break a lot of code... -# RgnHandle = OpaqueByValueType("RgnHandle", "OptResObj") - -# KeyMap = ArrayOutputBufferType("KeyMap") -#MacOSEventKind = Type("MacOSEventKind", "h") # Old-style -#MacOSEventMask = Type("MacOSEventMask", "h") # Old-style -#EventMask = Type("EventMask", "H") -#EventKind = Type("EventKind", "H") - -includestuff = includestuff + """ -#include - -""" - -class MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") - def outputCheckConvertArg(self): - OutLbrace("if (DlgObj_Check(v))") - Output("*p_itself = ((WindowObject *)v)->ob_itself;") - Output("return 1;") - OutRbrace() - Out(""" - if (v == Py_None) { *p_itself = NULL; return 1; } - if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; } - """) - -# From here on it's basically all boiler plate... - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -##object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE) -##module.addobject(object) - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -##Method = OSErrMethodGenerator - -# Create and populate the lists -functions = [] -##methods = [] -execfile(INPUTFILE) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -##for f in methods: object.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/launch/_Launchmodule.c b/project/jni/python/src/Mac/Modules/launch/_Launchmodule.c deleted file mode 100644 index fa21eced8..000000000 --- a/project/jni/python/src/Mac/Modules/launch/_Launchmodule.c +++ /dev/null @@ -1,481 +0,0 @@ - -/* ========================= Module _Launch ========================= */ - -#include "Python.h" - - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#if PY_VERSION_HEX < 0x02040000 -PyObject *PyMac_GetOSErrException(void); -#endif - -#include - -/* -** Optional CFStringRef. None will pass NULL -*/ -static int -OptCFStringRefObj_Convert(PyObject *v, CFStringRef *spec) -{ - if (v == Py_None) { - *spec = NULL; - return 1; - } - return CFStringRefObj_Convert(v, spec); -} - -PyObject * -OptCFStringRefObj_New(CFStringRef it) -{ - if (it == NULL) { - Py_INCREF(Py_None); - return Py_None; - } - return CFStringRefObj_New(it); -} - -/* -** Convert LSItemInfoRecord to Python. -*/ -PyObject * -LSItemInfoRecord_New(LSItemInfoRecord *it) -{ -#ifndef __LP64__ - return Py_BuildValue("{s:is:O&s:O&s:O&s:O&s:i}", - "flags", it->flags, - "filetype", PyMac_BuildOSType, it->filetype, - "creator", PyMac_BuildOSType, it->creator, - "extension", OptCFStringRefObj_New, it->extension, - "iconFileName", OptCFStringRefObj_New, it->iconFileName, - "kindID", it->kindID); -#else - return Py_BuildValue("{s:is:O&s:O&s:O&}", - "flags", it->flags, - "filetype", PyMac_BuildOSType, it->filetype, - "creator", PyMac_BuildOSType, it->creator, - "extension", OptCFStringRefObj_New, it->extension); -#endif -} - -static PyObject *Launch_Error; - -static PyObject *Launch_LSCopyItemInfoForRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FSRef inItemRef; - LSRequestedInfo inWhichInfo; - LSItemInfoRecord outItemInfo; - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetFSRef, &inItemRef, - &inWhichInfo)) - return NULL; - _err = LSCopyItemInfoForRef(&inItemRef, - inWhichInfo, - &outItemInfo); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - LSItemInfoRecord_New, &outItemInfo); - return _res; -} - -static PyObject *Launch_LSCopyItemInfoForURL(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFURLRef inURL; - LSRequestedInfo inWhichInfo; - LSItemInfoRecord outItemInfo; - if (!PyArg_ParseTuple(_args, "O&l", - CFURLRefObj_Convert, &inURL, - &inWhichInfo)) - return NULL; - _err = LSCopyItemInfoForURL(inURL, - inWhichInfo, - &outItemInfo); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - LSItemInfoRecord_New, &outItemInfo); - return _res; -} - -static PyObject *Launch_LSGetExtensionInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UniChar *inNameLen__in__; - UniCharCount inNameLen__len__; - int inNameLen__in_len__; - UniCharCount outExtStartIndex; - if (!PyArg_ParseTuple(_args, "u#", - &inNameLen__in__, &inNameLen__in_len__)) - return NULL; - inNameLen__len__ = inNameLen__in_len__; - _err = LSGetExtensionInfo(inNameLen__len__, inNameLen__in__, - &outExtStartIndex); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outExtStartIndex); - return _res; -} - -static PyObject *Launch_LSCopyDisplayNameForRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FSRef inRef; - CFStringRef outDisplayName; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFSRef, &inRef)) - return NULL; - _err = LSCopyDisplayNameForRef(&inRef, - &outDisplayName); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CFStringRefObj_New, outDisplayName); - return _res; -} - -static PyObject *Launch_LSCopyDisplayNameForURL(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFURLRef inURL; - CFStringRef outDisplayName; - if (!PyArg_ParseTuple(_args, "O&", - CFURLRefObj_Convert, &inURL)) - return NULL; - _err = LSCopyDisplayNameForURL(inURL, - &outDisplayName); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CFStringRefObj_New, outDisplayName); - return _res; -} - -static PyObject *Launch_LSSetExtensionHiddenForRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FSRef inRef; - Boolean inHide; - if (!PyArg_ParseTuple(_args, "O&b", - PyMac_GetFSRef, &inRef, - &inHide)) - return NULL; - _err = LSSetExtensionHiddenForRef(&inRef, - inHide); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Launch_LSSetExtensionHiddenForURL(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFURLRef inURL; - Boolean inHide; - if (!PyArg_ParseTuple(_args, "O&b", - CFURLRefObj_Convert, &inURL, - &inHide)) - return NULL; - _err = LSSetExtensionHiddenForURL(inURL, - inHide); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Launch_LSCopyKindStringForRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FSRef inFSRef; - CFStringRef outKindString; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFSRef, &inFSRef)) - return NULL; - _err = LSCopyKindStringForRef(&inFSRef, - &outKindString); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CFStringRefObj_New, outKindString); - return _res; -} - -static PyObject *Launch_LSCopyKindStringForURL(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFURLRef inURL; - CFStringRef outKindString; - if (!PyArg_ParseTuple(_args, "O&", - CFURLRefObj_Convert, &inURL)) - return NULL; - _err = LSCopyKindStringForURL(inURL, - &outKindString); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CFStringRefObj_New, outKindString); - return _res; -} - -static PyObject *Launch_LSGetApplicationForItem(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FSRef inItemRef; - LSRolesMask inRoleMask; - FSRef outAppRef; - CFURLRef outAppURL; - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetFSRef, &inItemRef, - &inRoleMask)) - return NULL; - _err = LSGetApplicationForItem(&inItemRef, - inRoleMask, - &outAppRef, - &outAppURL); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - PyMac_BuildFSRef, &outAppRef, - CFURLRefObj_New, outAppURL); - return _res; -} - -static PyObject *Launch_LSGetApplicationForInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType inType; - OSType inCreator; - CFStringRef inExtension; - LSRolesMask inRoleMask; - FSRef outAppRef; - CFURLRef outAppURL; - if (!PyArg_ParseTuple(_args, "O&O&O&l", - PyMac_GetOSType, &inType, - PyMac_GetOSType, &inCreator, - OptCFStringRefObj_Convert, &inExtension, - &inRoleMask)) - return NULL; - _err = LSGetApplicationForInfo(inType, - inCreator, - inExtension, - inRoleMask, - &outAppRef, - &outAppURL); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - PyMac_BuildFSRef, &outAppRef, - CFURLRefObj_New, outAppURL); - return _res; -} - -static PyObject *Launch_LSGetApplicationForURL(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFURLRef inURL; - LSRolesMask inRoleMask; - FSRef outAppRef; - CFURLRef outAppURL; - if (!PyArg_ParseTuple(_args, "O&l", - CFURLRefObj_Convert, &inURL, - &inRoleMask)) - return NULL; - _err = LSGetApplicationForURL(inURL, - inRoleMask, - &outAppRef, - &outAppURL); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - PyMac_BuildFSRef, &outAppRef, - CFURLRefObj_New, outAppURL); - return _res; -} - -static PyObject *Launch_LSFindApplicationForInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType inCreator; - CFStringRef inBundleID; - CFStringRef inName; - FSRef outAppRef; - CFURLRef outAppURL; - if (!PyArg_ParseTuple(_args, "O&O&O&", - PyMac_GetOSType, &inCreator, - OptCFStringRefObj_Convert, &inBundleID, - OptCFStringRefObj_Convert, &inName)) - return NULL; - _err = LSFindApplicationForInfo(inCreator, - inBundleID, - inName, - &outAppRef, - &outAppURL); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - PyMac_BuildFSRef, &outAppRef, - CFURLRefObj_New, outAppURL); - return _res; -} - -static PyObject *Launch_LSCanRefAcceptItem(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FSRef inItemFSRef; - FSRef inTargetRef; - LSRolesMask inRoleMask; - LSAcceptanceFlags inFlags; - Boolean outAcceptsItem; - if (!PyArg_ParseTuple(_args, "O&O&ll", - PyMac_GetFSRef, &inItemFSRef, - PyMac_GetFSRef, &inTargetRef, - &inRoleMask, - &inFlags)) - return NULL; - _err = LSCanRefAcceptItem(&inItemFSRef, - &inTargetRef, - inRoleMask, - inFlags, - &outAcceptsItem); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - outAcceptsItem); - return _res; -} - -static PyObject *Launch_LSCanURLAcceptURL(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFURLRef inItemURL; - CFURLRef inTargetURL; - LSRolesMask inRoleMask; - LSAcceptanceFlags inFlags; - Boolean outAcceptsItem; - if (!PyArg_ParseTuple(_args, "O&O&ll", - CFURLRefObj_Convert, &inItemURL, - CFURLRefObj_Convert, &inTargetURL, - &inRoleMask, - &inFlags)) - return NULL; - _err = LSCanURLAcceptURL(inItemURL, - inTargetURL, - inRoleMask, - inFlags, - &outAcceptsItem); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - outAcceptsItem); - return _res; -} - -static PyObject *Launch_LSOpenFSRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FSRef inRef; - FSRef outLaunchedRef; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFSRef, &inRef)) - return NULL; - _err = LSOpenFSRef(&inRef, - &outLaunchedRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildFSRef, &outLaunchedRef); - return _res; -} - -static PyObject *Launch_LSOpenCFURLRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFURLRef inURL; - CFURLRef outLaunchedURL; - if (!PyArg_ParseTuple(_args, "O&", - CFURLRefObj_Convert, &inURL)) - return NULL; - _err = LSOpenCFURLRef(inURL, - &outLaunchedURL); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CFURLRefObj_New, outLaunchedURL); - return _res; -} - -static PyMethodDef Launch_methods[] = { - {"LSCopyItemInfoForRef", (PyCFunction)Launch_LSCopyItemInfoForRef, 1, - PyDoc_STR("(FSRef inItemRef, LSRequestedInfo inWhichInfo) -> (LSItemInfoRecord outItemInfo)")}, - {"LSCopyItemInfoForURL", (PyCFunction)Launch_LSCopyItemInfoForURL, 1, - PyDoc_STR("(CFURLRef inURL, LSRequestedInfo inWhichInfo) -> (LSItemInfoRecord outItemInfo)")}, - {"LSGetExtensionInfo", (PyCFunction)Launch_LSGetExtensionInfo, 1, - PyDoc_STR("(Buffer inNameLen) -> (UniCharCount outExtStartIndex)")}, - {"LSCopyDisplayNameForRef", (PyCFunction)Launch_LSCopyDisplayNameForRef, 1, - PyDoc_STR("(FSRef inRef) -> (CFStringRef outDisplayName)")}, - {"LSCopyDisplayNameForURL", (PyCFunction)Launch_LSCopyDisplayNameForURL, 1, - PyDoc_STR("(CFURLRef inURL) -> (CFStringRef outDisplayName)")}, - {"LSSetExtensionHiddenForRef", (PyCFunction)Launch_LSSetExtensionHiddenForRef, 1, - PyDoc_STR("(FSRef inRef, Boolean inHide) -> None")}, - {"LSSetExtensionHiddenForURL", (PyCFunction)Launch_LSSetExtensionHiddenForURL, 1, - PyDoc_STR("(CFURLRef inURL, Boolean inHide) -> None")}, - {"LSCopyKindStringForRef", (PyCFunction)Launch_LSCopyKindStringForRef, 1, - PyDoc_STR("(FSRef inFSRef) -> (CFStringRef outKindString)")}, - {"LSCopyKindStringForURL", (PyCFunction)Launch_LSCopyKindStringForURL, 1, - PyDoc_STR("(CFURLRef inURL) -> (CFStringRef outKindString)")}, - {"LSGetApplicationForItem", (PyCFunction)Launch_LSGetApplicationForItem, 1, - PyDoc_STR("(FSRef inItemRef, LSRolesMask inRoleMask) -> (FSRef outAppRef, CFURLRef outAppURL)")}, - {"LSGetApplicationForInfo", (PyCFunction)Launch_LSGetApplicationForInfo, 1, - PyDoc_STR("(OSType inType, OSType inCreator, CFStringRef inExtension, LSRolesMask inRoleMask) -> (FSRef outAppRef, CFURLRef outAppURL)")}, - {"LSGetApplicationForURL", (PyCFunction)Launch_LSGetApplicationForURL, 1, - PyDoc_STR("(CFURLRef inURL, LSRolesMask inRoleMask) -> (FSRef outAppRef, CFURLRef outAppURL)")}, - {"LSFindApplicationForInfo", (PyCFunction)Launch_LSFindApplicationForInfo, 1, - PyDoc_STR("(OSType inCreator, CFStringRef inBundleID, CFStringRef inName) -> (FSRef outAppRef, CFURLRef outAppURL)")}, - {"LSCanRefAcceptItem", (PyCFunction)Launch_LSCanRefAcceptItem, 1, - PyDoc_STR("(FSRef inItemFSRef, FSRef inTargetRef, LSRolesMask inRoleMask, LSAcceptanceFlags inFlags) -> (Boolean outAcceptsItem)")}, - {"LSCanURLAcceptURL", (PyCFunction)Launch_LSCanURLAcceptURL, 1, - PyDoc_STR("(CFURLRef inItemURL, CFURLRef inTargetURL, LSRolesMask inRoleMask, LSAcceptanceFlags inFlags) -> (Boolean outAcceptsItem)")}, - {"LSOpenFSRef", (PyCFunction)Launch_LSOpenFSRef, 1, - PyDoc_STR("(FSRef inRef) -> (FSRef outLaunchedRef)")}, - {"LSOpenCFURLRef", (PyCFunction)Launch_LSOpenCFURLRef, 1, - PyDoc_STR("(CFURLRef inURL) -> (CFURLRef outLaunchedURL)")}, - {NULL, NULL, 0} -}; - - - - -void init_Launch(void) -{ - PyObject *m; - PyObject *d; - - - - - m = Py_InitModule("_Launch", Launch_methods); - d = PyModule_GetDict(m); - Launch_Error = PyMac_GetOSErrException(); - if (Launch_Error == NULL || - PyDict_SetItemString(d, "Error", Launch_Error) != 0) - return; -} - -/* ======================= End module _Launch ======================= */ - diff --git a/project/jni/python/src/Mac/Modules/launch/launchscan.py b/project/jni/python/src/Mac/Modules/launch/launchscan.py deleted file mode 100644 index 3e0723843..000000000 --- a/project/jni/python/src/Mac/Modules/launch/launchscan.py +++ /dev/null @@ -1,85 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner - -LONG = "LaunchServices" -SHORT = "launch" -OBJECT = "NOTUSED" - -def main(): - input = LONG + ".h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - scanner.gentypetest(SHORT+"typetest.py") - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - # This is non-functional today - if t == OBJECT and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - self.defsfile.write("from Carbon.Files import *\n") - self.defsfile.write("kLSRequestAllInfo = -1\n") - self.defsfile.write("kLSRolesAll = -1\n") - self.defsfile.write("kLSUnknownType = FOUR_CHAR_CODE('\\0\\0\\0\\0')\n") - self.defsfile.write("kLSUnknownCreator = FOUR_CHAR_CODE('\\0\\0\\0\\0')\n") - self.defsfile.write("kLSInvalidExtensionIndex = -1\n") - - def makeblacklistnames(self): - return [ - "LSInit", - "LSTerm", - "kLSRequestAllInfo", - "kLSRolesAll", - "kLSInvalidExtensionIndex", - "kLSUnknownType", - "kLSUnknownCreator" - ] - - def makeblacklisttypes(self): - return [ - "LSLaunchFSRefSpec_ptr", - "LSLaunchURLSpec_ptr", - ] - - def makerepairinstructions(self): - return [ - # LSGetApplicationForInfo - ([('CFStringRef', 'inExtension', 'InMode')], - [('OptCFStringRef', 'inExtension', 'InMode')]), - - # LSFindApplicationForInfo - ([('CFStringRef', 'inBundleID', 'InMode')], - [('OptCFStringRef', 'inBundleID', 'InMode')]), - ([('CFStringRef', 'inName', 'InMode')], - [('OptCFStringRef', 'inName', 'InMode')]), - - # Unicode filenames passed as length, buffer. LSGetExtensionInfo - ([('UniCharCount', '*', 'InMode'), - ('UniChar_ptr', '*', 'InMode')], - [('UnicodeReverseInBuffer', '*', 'InMode')] - ), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/launch/launchsupport.py b/project/jni/python/src/Mac/Modules/launch/launchsupport.py deleted file mode 100644 index 34c2efbcf..000000000 --- a/project/jni/python/src/Mac/Modules/launch/launchsupport.py +++ /dev/null @@ -1,101 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MODNAME = '_Launch' # The name of the module -OBJECTNAME = 'UNUSED' # The basic name of the objects used here -KIND = 'Record' # Usually 'Ptr' or 'Handle' - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Launch' # The prefix for module-wide routines -OBJECTTYPE = OBJECTNAME + KIND # The C type used to represent them -OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects -LSAcceptanceFlags = Type("LSAcceptanceFlags", "l") -LSInitializeFlags = Type("LSInitializeFlags", "l") -LSRequestedInfo = Type("LSRequestedInfo", "l") -LSRolesMask = Type("LSRolesMask", "l") -UniCharCount = Type("UniCharCount", "l") -OptCFStringRef = OpaqueByValueType("CFStringRef", "OptCFStringRefObj") -LSItemInfoRecord = OpaqueType("LSItemInfoRecord", "LSItemInfoRecord") - -includestuff = includestuff + """ -#if PY_VERSION_HEX < 0x02040000 -PyObject *PyMac_GetOSErrException(void); -#endif - -#include - -/* -** Optional CFStringRef. None will pass NULL -*/ -static int -OptCFStringRefObj_Convert(PyObject *v, CFStringRef *spec) -{ - if (v == Py_None) { - *spec = NULL; - return 1; - } - return CFStringRefObj_Convert(v, spec); -} - -PyObject * -OptCFStringRefObj_New(CFStringRef it) -{ - if (it == NULL) { - Py_INCREF(Py_None); - return Py_None; - } - return CFStringRefObj_New(it); -} - -/* -** Convert LSItemInfoRecord to Python. -*/ -PyObject * -LSItemInfoRecord_New(LSItemInfoRecord *it) -{ - return Py_BuildValue("{s:is:O&s:O&s:O&s:O&s:i}", - "flags", it->flags, - "filetype", PyMac_BuildOSType, it->filetype, - "creator", PyMac_BuildOSType, it->creator, - "extension", OptCFStringRefObj_New, it->extension, - "iconFileName", OptCFStringRefObj_New, it->iconFileName, - "kindID", it->kindID); -} -""" - -# From here on it's basically all boiler plate... -execfile(string.lower(MODPREFIX) + 'typetest.py') - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -##object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE) -##module.addobject(object) - -# Create the generator classes used to populate the lists -Function = OSErrFunctionGenerator -##Method = OSErrMethodGenerator - -# Create and populate the lists -functions = [] -##methods = [] -execfile(INPUTFILE) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -##for f in methods: object.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/launch/setup.py b/project/jni/python/src/Mac/Modules/launch/setup.py deleted file mode 100644 index 205419524..000000000 --- a/project/jni/python/src/Mac/Modules/launch/setup.py +++ /dev/null @@ -1,13 +0,0 @@ -# This is a temporary setup script to allow distribution of -# MacPython 2.4 modules for MacPython 2.3. - -from distutils.core import Extension, setup - -setup(name="LaunchServices", version="0.2", - ext_modules=[ - Extension('_Launch', ['_Launchmodule.c'], - extra_link_args=['-framework', 'ApplicationServices']) - ], - py_modules=['LaunchServices.Launch', 'LaunchServices.LaunchServices'], - package_dir={'LaunchServices':'../../../Lib/plat-mac/Carbon'} - ) diff --git a/project/jni/python/src/Mac/Modules/list/_Listmodule.c b/project/jni/python/src/Mac/Modules/list/_Listmodule.c deleted file mode 100644 index 079740430..000000000 --- a/project/jni/python/src/Mac/Modules/list/_Listmodule.c +++ /dev/null @@ -1,1140 +0,0 @@ - -/* ========================== Module _List ========================== */ - -#include "Python.h" - -#ifndef __LP64__ - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_ListObj_New(ListHandle); -extern int _ListObj_Convert(PyObject *, ListHandle *); - -#define ListObj_New _ListObj_New -#define ListObj_Convert _ListObj_Convert -#endif - -#define as_List(x) ((ListHandle)x) -#define as_Resource(lh) ((Handle)lh) - -static ListDefUPP myListDefFunctionUPP; - - -static PyObject *List_Error; - -/* ------------------------ Object type List ------------------------ */ - -PyTypeObject List_Type; - -#define ListObj_Check(x) ((x)->ob_type == &List_Type || PyObject_TypeCheck((x), &List_Type)) - -typedef struct ListObject { - PyObject_HEAD - ListHandle ob_itself; - PyObject *ob_ldef_func; - int ob_must_be_disposed; -} ListObject; - -PyObject *ListObj_New(ListHandle itself) -{ - ListObject *it; - if (itself == NULL) { - PyErr_SetString(List_Error,"Cannot create null List"); - return NULL; - } - it = PyObject_NEW(ListObject, &List_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - it->ob_ldef_func = NULL; - it->ob_must_be_disposed = 1; - SetListRefCon(itself, (long)it); - return (PyObject *)it; -} - -int ListObj_Convert(PyObject *v, ListHandle *p_itself) -{ - if (!ListObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "List required"); - return 0; - } - *p_itself = ((ListObject *)v)->ob_itself; - return 1; -} - -static void ListObj_dealloc(ListObject *self) -{ - Py_XDECREF(self->ob_ldef_func); - self->ob_ldef_func = NULL; - SetListRefCon(self->ob_itself, (long)0); - if (self->ob_must_be_disposed && self->ob_itself) LDispose(self->ob_itself); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *ListObj_LAddColumn(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - short count; - short colNum; - if (!PyArg_ParseTuple(_args, "hh", - &count, - &colNum)) - return NULL; - _rv = LAddColumn(count, - colNum, - _self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *ListObj_LAddRow(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - short count; - short rowNum; - if (!PyArg_ParseTuple(_args, "hh", - &count, - &rowNum)) - return NULL; - _rv = LAddRow(count, - rowNum, - _self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *ListObj_LDelColumn(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short count; - short colNum; - if (!PyArg_ParseTuple(_args, "hh", - &count, - &colNum)) - return NULL; - LDelColumn(count, - colNum, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LDelRow(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short count; - short rowNum; - if (!PyArg_ParseTuple(_args, "hh", - &count, - &rowNum)) - return NULL; - LDelRow(count, - rowNum, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LGetSelect(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Boolean next; - Point theCell; - if (!PyArg_ParseTuple(_args, "bO&", - &next, - PyMac_GetPoint, &theCell)) - return NULL; - _rv = LGetSelect(next, - &theCell, - _self->ob_itself); - _res = Py_BuildValue("bO&", - _rv, - PyMac_BuildPoint, theCell); - return _res; -} - -static PyObject *ListObj_LLastClick(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LLastClick(_self->ob_itself); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, _rv); - return _res; -} - -static PyObject *ListObj_LNextCell(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Boolean hNext; - Boolean vNext; - Point theCell; - if (!PyArg_ParseTuple(_args, "bbO&", - &hNext, - &vNext, - PyMac_GetPoint, &theCell)) - return NULL; - _rv = LNextCell(hNext, - vNext, - &theCell, - _self->ob_itself); - _res = Py_BuildValue("bO&", - _rv, - PyMac_BuildPoint, theCell); - return _res; -} - -static PyObject *ListObj_LSize(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short listWidth; - short listHeight; - if (!PyArg_ParseTuple(_args, "hh", - &listWidth, - &listHeight)) - return NULL; - LSize(listWidth, - listHeight, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LSetDrawingMode(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean drawIt; - if (!PyArg_ParseTuple(_args, "b", - &drawIt)) - return NULL; - LSetDrawingMode(drawIt, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LScroll(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short dCols; - short dRows; - if (!PyArg_ParseTuple(_args, "hh", - &dCols, - &dRows)) - return NULL; - LScroll(dCols, - dRows, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LAutoScroll(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - LAutoScroll(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LUpdate(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle theRgn; - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theRgn)) - return NULL; - LUpdate(theRgn, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LActivate(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean act; - if (!PyArg_ParseTuple(_args, "b", - &act)) - return NULL; - LActivate(act, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LCellSize(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point cSize; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &cSize)) - return NULL; - LCellSize(cSize, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LClick(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point pt; - EventModifiers modifiers; - if (!PyArg_ParseTuple(_args, "O&H", - PyMac_GetPoint, &pt, - &modifiers)) - return NULL; - _rv = LClick(pt, - modifiers, - _self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *ListObj_LAddToCell(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - char *dataPtr__in__; - short dataPtr__len__; - int dataPtr__in_len__; - Point theCell; - if (!PyArg_ParseTuple(_args, "s#O&", - &dataPtr__in__, &dataPtr__in_len__, - PyMac_GetPoint, &theCell)) - return NULL; - dataPtr__len__ = dataPtr__in_len__; - LAddToCell(dataPtr__in__, dataPtr__len__, - theCell, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LClrCell(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point theCell; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &theCell)) - return NULL; - LClrCell(theCell, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LGetCell(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - char *dataPtr__out__; - short dataPtr__len__; - int dataPtr__in_len__; - Point theCell; - if (!PyArg_ParseTuple(_args, "iO&", - &dataPtr__in_len__, - PyMac_GetPoint, &theCell)) - return NULL; - if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL) - { - PyErr_NoMemory(); - goto dataPtr__error__; - } - dataPtr__len__ = dataPtr__in_len__; - LGetCell(dataPtr__out__, &dataPtr__len__, - theCell, - _self->ob_itself); - _res = Py_BuildValue("s#", - dataPtr__out__, (int)dataPtr__len__); - free(dataPtr__out__); - dataPtr__error__: ; - return _res; -} - -static PyObject *ListObj_LRect(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect cellRect; - Point theCell; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &theCell)) - return NULL; - LRect(&cellRect, - theCell, - _self->ob_itself); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &cellRect); - return _res; -} - -static PyObject *ListObj_LSetCell(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - char *dataPtr__in__; - short dataPtr__len__; - int dataPtr__in_len__; - Point theCell; - if (!PyArg_ParseTuple(_args, "s#O&", - &dataPtr__in__, &dataPtr__in_len__, - PyMac_GetPoint, &theCell)) - return NULL; - dataPtr__len__ = dataPtr__in_len__; - LSetCell(dataPtr__in__, dataPtr__len__, - theCell, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LSetSelect(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean setIt; - Point theCell; - if (!PyArg_ParseTuple(_args, "bO&", - &setIt, - PyMac_GetPoint, &theCell)) - return NULL; - LSetSelect(setIt, - theCell, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LDraw(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point theCell; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &theCell)) - return NULL; - LDraw(theCell, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ListObj_LGetCellDataLocation(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short offset; - short len; - Point theCell; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &theCell)) - return NULL; - LGetCellDataLocation(&offset, - &len, - theCell, - _self->ob_itself); - _res = Py_BuildValue("hh", - offset, - len); - return _res; -} - -static PyObject *ListObj_GetListPort(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGrafPtr _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetListPort(_self->ob_itself); - _res = Py_BuildValue("O&", - GrafObj_New, _rv); - return _res; -} - -static PyObject *ListObj_GetListVerticalScrollBar(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ControlHandle _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetListVerticalScrollBar(_self->ob_itself); - _res = Py_BuildValue("O&", - CtlObj_New, _rv); - return _res; -} - -static PyObject *ListObj_GetListHorizontalScrollBar(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ControlHandle _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetListHorizontalScrollBar(_self->ob_itself); - _res = Py_BuildValue("O&", - CtlObj_New, _rv); - return _res; -} - -static PyObject *ListObj_GetListActive(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetListActive(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *ListObj_GetListClickTime(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetListClickTime(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *ListObj_GetListRefCon(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetListRefCon(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *ListObj_GetListDefinition(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetListDefinition(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *ListObj_GetListUserHandle(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetListUserHandle(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *ListObj_GetListDataHandle(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DataHandle _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetListDataHandle(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *ListObj_GetListFlags(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OptionBits _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetListFlags(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *ListObj_GetListSelectionFlags(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OptionBits _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetListSelectionFlags(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *ListObj_as_Resource(ListObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = as_Resource(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyMethodDef ListObj_methods[] = { - {"LAddColumn", (PyCFunction)ListObj_LAddColumn, 1, - PyDoc_STR("(short count, short colNum) -> (short _rv)")}, - {"LAddRow", (PyCFunction)ListObj_LAddRow, 1, - PyDoc_STR("(short count, short rowNum) -> (short _rv)")}, - {"LDelColumn", (PyCFunction)ListObj_LDelColumn, 1, - PyDoc_STR("(short count, short colNum) -> None")}, - {"LDelRow", (PyCFunction)ListObj_LDelRow, 1, - PyDoc_STR("(short count, short rowNum) -> None")}, - {"LGetSelect", (PyCFunction)ListObj_LGetSelect, 1, - PyDoc_STR("(Boolean next, Point theCell) -> (Boolean _rv, Point theCell)")}, - {"LLastClick", (PyCFunction)ListObj_LLastClick, 1, - PyDoc_STR("() -> (Point _rv)")}, - {"LNextCell", (PyCFunction)ListObj_LNextCell, 1, - PyDoc_STR("(Boolean hNext, Boolean vNext, Point theCell) -> (Boolean _rv, Point theCell)")}, - {"LSize", (PyCFunction)ListObj_LSize, 1, - PyDoc_STR("(short listWidth, short listHeight) -> None")}, - {"LSetDrawingMode", (PyCFunction)ListObj_LSetDrawingMode, 1, - PyDoc_STR("(Boolean drawIt) -> None")}, - {"LScroll", (PyCFunction)ListObj_LScroll, 1, - PyDoc_STR("(short dCols, short dRows) -> None")}, - {"LAutoScroll", (PyCFunction)ListObj_LAutoScroll, 1, - PyDoc_STR("() -> None")}, - {"LUpdate", (PyCFunction)ListObj_LUpdate, 1, - PyDoc_STR("(RgnHandle theRgn) -> None")}, - {"LActivate", (PyCFunction)ListObj_LActivate, 1, - PyDoc_STR("(Boolean act) -> None")}, - {"LCellSize", (PyCFunction)ListObj_LCellSize, 1, - PyDoc_STR("(Point cSize) -> None")}, - {"LClick", (PyCFunction)ListObj_LClick, 1, - PyDoc_STR("(Point pt, EventModifiers modifiers) -> (Boolean _rv)")}, - {"LAddToCell", (PyCFunction)ListObj_LAddToCell, 1, - PyDoc_STR("(Buffer dataPtr, Point theCell) -> None")}, - {"LClrCell", (PyCFunction)ListObj_LClrCell, 1, - PyDoc_STR("(Point theCell) -> None")}, - {"LGetCell", (PyCFunction)ListObj_LGetCell, 1, - PyDoc_STR("(Buffer dataPtr, Point theCell) -> (Buffer dataPtr)")}, - {"LRect", (PyCFunction)ListObj_LRect, 1, - PyDoc_STR("(Point theCell) -> (Rect cellRect)")}, - {"LSetCell", (PyCFunction)ListObj_LSetCell, 1, - PyDoc_STR("(Buffer dataPtr, Point theCell) -> None")}, - {"LSetSelect", (PyCFunction)ListObj_LSetSelect, 1, - PyDoc_STR("(Boolean setIt, Point theCell) -> None")}, - {"LDraw", (PyCFunction)ListObj_LDraw, 1, - PyDoc_STR("(Point theCell) -> None")}, - {"LGetCellDataLocation", (PyCFunction)ListObj_LGetCellDataLocation, 1, - PyDoc_STR("(Point theCell) -> (short offset, short len)")}, - {"GetListPort", (PyCFunction)ListObj_GetListPort, 1, - PyDoc_STR("() -> (CGrafPtr _rv)")}, - {"GetListVerticalScrollBar", (PyCFunction)ListObj_GetListVerticalScrollBar, 1, - PyDoc_STR("() -> (ControlHandle _rv)")}, - {"GetListHorizontalScrollBar", (PyCFunction)ListObj_GetListHorizontalScrollBar, 1, - PyDoc_STR("() -> (ControlHandle _rv)")}, - {"GetListActive", (PyCFunction)ListObj_GetListActive, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"GetListClickTime", (PyCFunction)ListObj_GetListClickTime, 1, - PyDoc_STR("() -> (SInt32 _rv)")}, - {"GetListRefCon", (PyCFunction)ListObj_GetListRefCon, 1, - PyDoc_STR("() -> (SInt32 _rv)")}, - {"GetListDefinition", (PyCFunction)ListObj_GetListDefinition, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {"GetListUserHandle", (PyCFunction)ListObj_GetListUserHandle, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {"GetListDataHandle", (PyCFunction)ListObj_GetListDataHandle, 1, - PyDoc_STR("() -> (DataHandle _rv)")}, - {"GetListFlags", (PyCFunction)ListObj_GetListFlags, 1, - PyDoc_STR("() -> (OptionBits _rv)")}, - {"GetListSelectionFlags", (PyCFunction)ListObj_GetListSelectionFlags, 1, - PyDoc_STR("() -> (OptionBits _rv)")}, - {"as_Resource", (PyCFunction)ListObj_as_Resource, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {NULL, NULL, 0} -}; - -static PyObject *ListObj_get_listFlags(ListObject *self, void *closure) -{ - return Py_BuildValue("l", (long)GetListFlags(self->ob_itself) & 0xff); -} - -static int ListObj_set_listFlags(ListObject *self, PyObject *v, void *closure) -{ - if (!PyArg_Parse(v, "B", &(*self->ob_itself)->listFlags)) return -1; - return 0; -} - -static PyObject *ListObj_get_selFlags(ListObject *self, void *closure) -{ - return Py_BuildValue("l", (long)GetListSelectionFlags(self->ob_itself) & 0xff); -} - -static int ListObj_set_selFlags(ListObject *self, PyObject *v, void *closure) -{ - if (!PyArg_Parse(v, "B", &(*self->ob_itself)->selFlags)) return -1; - return 0; -} - -static PyObject *ListObj_get_cellSize(ListObject *self, void *closure) -{ - return Py_BuildValue("O&", PyMac_BuildPoint, (*self->ob_itself)->cellSize); -} - -static int ListObj_set_cellSize(ListObject *self, PyObject *v, void *closure) -{ - if (!PyArg_Parse(v, "O&", PyMac_GetPoint, &(*self->ob_itself)->cellSize)) return -1; - return 0; -} - -static PyGetSetDef ListObj_getsetlist[] = { - {"listFlags", (getter)ListObj_get_listFlags, (setter)ListObj_set_listFlags, NULL}, - {"selFlags", (getter)ListObj_get_selFlags, (setter)ListObj_set_selFlags, NULL}, - {"cellSize", (getter)ListObj_get_cellSize, (setter)ListObj_set_cellSize, NULL}, - {NULL, NULL, NULL, NULL}, -}; - - -#define ListObj_compare NULL - -#define ListObj_repr NULL - -#define ListObj_hash NULL -#define ListObj_tp_init 0 - -#define ListObj_tp_alloc PyType_GenericAlloc - -static PyObject *ListObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - ListHandle itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, ListObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((ListObject *)_self)->ob_itself = itself; - return _self; -} - -#define ListObj_tp_free PyObject_Del - - -PyTypeObject List_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_List.List", /*tp_name*/ - sizeof(ListObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) ListObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) ListObj_compare, /*tp_compare*/ - (reprfunc) ListObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) ListObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - ListObj_methods, /* tp_methods */ - 0, /*tp_members*/ - ListObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - ListObj_tp_init, /* tp_init */ - ListObj_tp_alloc, /* tp_alloc */ - ListObj_tp_new, /* tp_new */ - ListObj_tp_free, /* tp_free */ -}; - -/* ---------------------- End object type List ---------------------- */ - - -static PyObject *List_CreateCustomList(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect rView; - Rect dataBounds; - Point cellSize; - - PyObject *listDefFunc; - ListDefSpec theSpec; - WindowPtr theWindow; - Boolean drawIt; - Boolean hasGrow; - Boolean scrollHoriz; - Boolean scrollVert; - ListHandle outList; - - if (!PyArg_ParseTuple(_args, "O&O&O&(iO)O&bbbb", - PyMac_GetRect, &rView, - PyMac_GetRect, &dataBounds, - PyMac_GetPoint, &cellSize, - &theSpec.defType, &listDefFunc, - WinObj_Convert, &theWindow, - &drawIt, - &hasGrow, - &scrollHoriz, - &scrollVert)) - return NULL; - - - /* Carbon applications use the CreateCustomList API */ - theSpec.u.userProc = myListDefFunctionUPP; - CreateCustomList(&rView, - &dataBounds, - cellSize, - &theSpec, - theWindow, - drawIt, - hasGrow, - scrollHoriz, - scrollVert, - &outList); - - - _res = ListObj_New(outList); - if (_res == NULL) - return NULL; - Py_INCREF(listDefFunc); - ((ListObject*)_res)->ob_ldef_func = listDefFunc; - return _res; -} - -static PyObject *List_LNew(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ListHandle _rv; - Rect rView; - Rect dataBounds; - Point cSize; - short theProc; - WindowPtr theWindow; - Boolean drawIt; - Boolean hasGrow; - Boolean scrollHoriz; - Boolean scrollVert; - if (!PyArg_ParseTuple(_args, "O&O&O&hO&bbbb", - PyMac_GetRect, &rView, - PyMac_GetRect, &dataBounds, - PyMac_GetPoint, &cSize, - &theProc, - WinObj_Convert, &theWindow, - &drawIt, - &hasGrow, - &scrollHoriz, - &scrollVert)) - return NULL; - _rv = LNew(&rView, - &dataBounds, - cSize, - theProc, - theWindow, - drawIt, - hasGrow, - scrollHoriz, - scrollVert); - _res = Py_BuildValue("O&", - ListObj_New, _rv); - return _res; -} - -static PyObject *List_SetListViewBounds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ListHandle list; - Rect view; - if (!PyArg_ParseTuple(_args, "O&O&", - ListObj_Convert, &list, - PyMac_GetRect, &view)) - return NULL; - SetListViewBounds(list, - &view); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *List_SetListPort(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ListHandle list; - CGrafPtr port; - if (!PyArg_ParseTuple(_args, "O&O&", - ListObj_Convert, &list, - GrafObj_Convert, &port)) - return NULL; - SetListPort(list, - port); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *List_SetListCellIndent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ListHandle list; - Point indent; - if (!PyArg_ParseTuple(_args, "O&O&", - ListObj_Convert, &list, - PyMac_GetPoint, &indent)) - return NULL; - SetListCellIndent(list, - &indent); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *List_SetListClickTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ListHandle list; - SInt32 time; - if (!PyArg_ParseTuple(_args, "O&l", - ListObj_Convert, &list, - &time)) - return NULL; - SetListClickTime(list, - time); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *List_SetListRefCon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ListHandle list; - SInt32 refCon; - if (!PyArg_ParseTuple(_args, "O&l", - ListObj_Convert, &list, - &refCon)) - return NULL; - SetListRefCon(list, - refCon); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *List_SetListUserHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ListHandle list; - Handle userHandle; - if (!PyArg_ParseTuple(_args, "O&O&", - ListObj_Convert, &list, - ResObj_Convert, &userHandle)) - return NULL; - SetListUserHandle(list, - userHandle); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *List_SetListFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ListHandle list; - OptionBits listFlags; - if (!PyArg_ParseTuple(_args, "O&l", - ListObj_Convert, &list, - &listFlags)) - return NULL; - SetListFlags(list, - listFlags); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *List_SetListSelectionFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ListHandle list; - OptionBits selectionFlags; - if (!PyArg_ParseTuple(_args, "O&l", - ListObj_Convert, &list, - &selectionFlags)) - return NULL; - SetListSelectionFlags(list, - selectionFlags); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *List_as_List(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - Handle h; - ListObject *l; - if (!PyArg_ParseTuple(_args, "O&", ResObj_Convert, &h)) - return NULL; - l = (ListObject *)ListObj_New(as_List(h)); - l->ob_must_be_disposed = 0; - _res = Py_BuildValue("O", l); - return _res; - -} -#endif /* __LP64__ */ - -static PyMethodDef List_methods[] = { -#ifndef __LP64__ - {"CreateCustomList", (PyCFunction)List_CreateCustomList, 1, - PyDoc_STR("(Rect rView, Rect dataBounds, Point cellSize, ListDefSpec theSpec, WindowPtr theWindow, Boolean drawIt, Boolean hasGrow, Boolean scrollHoriz, Boolean scrollVert) -> (ListHandle outList)")}, - {"LNew", (PyCFunction)List_LNew, 1, - PyDoc_STR("(Rect rView, Rect dataBounds, Point cSize, short theProc, WindowPtr theWindow, Boolean drawIt, Boolean hasGrow, Boolean scrollHoriz, Boolean scrollVert) -> (ListHandle _rv)")}, - {"SetListViewBounds", (PyCFunction)List_SetListViewBounds, 1, - PyDoc_STR("(ListHandle list, Rect view) -> None")}, - {"SetListPort", (PyCFunction)List_SetListPort, 1, - PyDoc_STR("(ListHandle list, CGrafPtr port) -> None")}, - {"SetListCellIndent", (PyCFunction)List_SetListCellIndent, 1, - PyDoc_STR("(ListHandle list, Point indent) -> None")}, - {"SetListClickTime", (PyCFunction)List_SetListClickTime, 1, - PyDoc_STR("(ListHandle list, SInt32 time) -> None")}, - {"SetListRefCon", (PyCFunction)List_SetListRefCon, 1, - PyDoc_STR("(ListHandle list, SInt32 refCon) -> None")}, - {"SetListUserHandle", (PyCFunction)List_SetListUserHandle, 1, - PyDoc_STR("(ListHandle list, Handle userHandle) -> None")}, - {"SetListFlags", (PyCFunction)List_SetListFlags, 1, - PyDoc_STR("(ListHandle list, OptionBits listFlags) -> None")}, - {"SetListSelectionFlags", (PyCFunction)List_SetListSelectionFlags, 1, - PyDoc_STR("(ListHandle list, OptionBits selectionFlags) -> None")}, - {"as_List", (PyCFunction)List_as_List, 1, - PyDoc_STR("(Resource)->List.\nReturns List object (which is not auto-freed!)")}, -#endif /* __LP64__ */ - {NULL, NULL, 0} -}; - -#ifndef __LP64__ - - -static void myListDefFunction(SInt16 message, - Boolean selected, - Rect *cellRect, - Cell theCell, - SInt16 dataOffset, - SInt16 dataLen, - ListHandle theList) -{ - PyObject *listDefFunc, *args, *rv=NULL; - ListObject *self; - - self = (ListObject*)GetListRefCon(theList); - if (self == NULL || self->ob_itself != theList) - return; /* nothing we can do */ - listDefFunc = self->ob_ldef_func; - if (listDefFunc == NULL) - return; /* nothing we can do */ - args = Py_BuildValue("hbO&O&hhO", message, - selected, - PyMac_BuildRect, cellRect, - PyMac_BuildPoint, theCell, - dataOffset, - dataLen, - self); - if (args != NULL) { - rv = PyEval_CallObject(listDefFunc, args); - Py_DECREF(args); - } - if (rv == NULL) { - PySys_WriteStderr("error in list definition callback:\n"); - PyErr_Print(); - } else { - Py_DECREF(rv); - } -} -#endif /* __LP64__ */ - - -void init_List(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; - - - - myListDefFunctionUPP = NewListDefUPP((ListDefProcPtr)myListDefFunction); - - PyMac_INIT_TOOLBOX_OBJECT_NEW(ListHandle, ListObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ListHandle, ListObj_Convert); -#endif /* __LP64__ */ - - - m = Py_InitModule("_List", List_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - List_Error = PyMac_GetOSErrException(); - if (List_Error == NULL || - PyDict_SetItemString(d, "Error", List_Error) != 0) - return; - List_Type.ob_type = &PyType_Type; - if (PyType_Ready(&List_Type) < 0) return; - Py_INCREF(&List_Type); - PyModule_AddObject(m, "List", (PyObject *)&List_Type); - /* Backward-compatible name */ - Py_INCREF(&List_Type); - PyModule_AddObject(m, "ListType", (PyObject *)&List_Type); -#endif /* __LP64__ */ -} - -/* ======================== End module _List ======================== */ - diff --git a/project/jni/python/src/Mac/Modules/list/listscan.py b/project/jni/python/src/Mac/Modules/list/listscan.py deleted file mode 100644 index a0274595b..000000000 --- a/project/jni/python/src/Mac/Modules/list/listscan.py +++ /dev/null @@ -1,87 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner - -LONG = "Lists" -SHORT = "list" -OBJECT = "ListHandle" - -def main(): - input = LONG + ".h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[-1] - # This is non-functional today - if t in ('ListHandle', 'ListRef') and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def makeblacklistnames(self): - return [ - "LDispose", # Done by removing the object - "LSearch", # We don't want to handle procs just yet - "CreateCustomList", # done manually - "SetListDefinitionProc", - - # These have funny argument/return values - "GetListViewBounds", - "GetListCellIndent", - "GetListCellSize", - "GetListVisibleCells", - "GetListClickLocation", - "GetListMouseLocation", - "GetListDataBounds", - "SetListLastClick", - ] - - def makeblacklisttypes(self): - return [ - "ListClickLoopUPP", # Too difficult for now - "ListDefSpecPtr", # later - ] - - def makerepairinstructions(self): - return [ - ([('ListBounds_ptr', '*', 'InMode')], - [('Rect_ptr', '*', 'InMode')]), - - ([("Cell", "theCell", "OutMode")], - [("Cell", "theCell", "InOutMode")]), - - ([("void_ptr", "*", "InMode"), ("short", "*", "InMode")], - [("InBufferShortsize", "*", "*")]), - - ([("void", "*", "OutMode"), ("short", "*", "OutMode")], - [("VarOutBufferShortsize", "*", "InOutMode")]), - - # SetListCellIndent doesn't have const - ([("Point", "indent", "OutMode")], - [("Point_ptr", "indent", "InMode")]), - - ] - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/list/listsupport.py b/project/jni/python/src/Mac/Modules/list/listsupport.py deleted file mode 100644 index 93baede80..000000000 --- a/project/jni/python/src/Mac/Modules/list/listsupport.py +++ /dev/null @@ -1,255 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'Lists.h' # The Apple header file -MODNAME = '_List' # The name of the module -OBJECTNAME = 'List' # The basic name of the objects used here -KIND = 'Handle' # Usually 'Ptr' or 'Handle' - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'List' # The prefix for module-wide routines -OBJECTTYPE = "ListHandle" # The C type used to represent them -OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects -ListHandle = OpaqueByValueType("ListHandle", "ListObj") -ListRef = ListHandle # Obsolete, but used in Lists.h -Cell = Point -ListBounds = Rect -ListBounds_ptr = Rect_ptr - -ListDefSpec = ListDefSpec_ptr = OpaqueType("ListDefSpec", "PyMac_BuildListDefSpec", "PyMac_GetListDefSpec") - -VarOutBufferShortsize = VarHeapOutputBufferType('char', 'short', 's') # (buf, &len) -InBufferShortsize = VarInputBufferType('char', 'short', 's') # (buf, len) - -RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") -DataHandle = OpaqueByValueType("DataHandle", "ResObj") -Handle = OpaqueByValueType("Handle", "ResObj") -CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj") -EventModifiers = Type("EventModifiers", "H") - -includestuff = includestuff + """ -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_ListObj_New(ListHandle); -extern int _ListObj_Convert(PyObject *, ListHandle *); - -#define ListObj_New _ListObj_New -#define ListObj_Convert _ListObj_Convert -#endif - -#define as_List(x) ((ListHandle)x) -#define as_Resource(lh) ((Handle)lh) - -static ListDefUPP myListDefFunctionUPP; - -""" - -initstuff = initstuff + """ -myListDefFunctionUPP = NewListDefUPP((ListDefProcPtr)myListDefFunction); - -PyMac_INIT_TOOLBOX_OBJECT_NEW(ListHandle, ListObj_New); -PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ListHandle, ListObj_Convert); -""" - -class ListMethodGenerator(MethodGenerator): - """Similar to MethodGenerator, but has self as last argument""" - - def parseArgumentList(self, args): - args, a0 = args[:-1], args[-1] - t0, n0, m0 = a0 - if m0 != InMode: - raise ValueError, "method's 'self' must be 'InMode'" - self.itself = Variable(t0, "_self->ob_itself", SelfMode) - FunctionGenerator.parseArgumentList(self, args) - self.argumentList.append(self.itself) - -class MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - # XXXX Should inherit from Resource - getsetlist = [( - 'listFlags', - 'return Py_BuildValue("l", (long)GetListFlags(self->ob_itself) & 0xff);', - 'if (!PyArg_Parse(v, "B", &(*self->ob_itself)->listFlags)) return -1;', - None, - ), ( - 'selFlags', - 'return Py_BuildValue("l", (long)GetListSelectionFlags(self->ob_itself) & 0xff);', - 'if (!PyArg_Parse(v, "B", &(*self->ob_itself)->selFlags)) return -1;', - None, - ), ( - 'cellSize', - 'return Py_BuildValue("O&", PyMac_BuildPoint, (*self->ob_itself)->cellSize);', - 'if (!PyArg_Parse(v, "O&", PyMac_GetPoint, &(*self->ob_itself)->cellSize)) return -1;', - None - )] - - def outputStructMembers(self): - ObjectDefinition.outputStructMembers(self) - Output("PyObject *ob_ldef_func;") - Output("int ob_must_be_disposed;") - - def outputCheckNewArg(self): - Output("""if (itself == NULL) { - PyErr_SetString(List_Error,"Cannot create null List"); - return NULL; - }""") - - def outputInitStructMembers(self): - ObjectDefinition.outputInitStructMembers(self) - Output("it->ob_ldef_func = NULL;") - Output("it->ob_must_be_disposed = 1;") - Output("SetListRefCon(itself, (long)it);") - - def outputFreeIt(self, itselfname): - Output("Py_XDECREF(self->ob_ldef_func);") - Output("self->ob_ldef_func = NULL;") - Output("SetListRefCon(self->ob_itself, (long)0);") - Output("if (self->ob_must_be_disposed && %s) LDispose(%s);", itselfname, itselfname) - -# From here on it's basically all boiler plate... - -finalstuff = finalstuff + """ -static void myListDefFunction(SInt16 message, - Boolean selected, - Rect *cellRect, - Cell theCell, - SInt16 dataOffset, - SInt16 dataLen, - ListHandle theList) -{ - PyObject *listDefFunc, *args, *rv=NULL; - ListObject *self; - - self = (ListObject*)GetListRefCon(theList); - if (self == NULL || self->ob_itself != theList) - return; /* nothing we can do */ - listDefFunc = self->ob_ldef_func; - if (listDefFunc == NULL) - return; /* nothing we can do */ - args = Py_BuildValue("hbO&O&hhO", message, - selected, - PyMac_BuildRect, cellRect, - PyMac_BuildPoint, theCell, - dataOffset, - dataLen, - self); - if (args != NULL) { - rv = PyEval_CallObject(listDefFunc, args); - Py_DECREF(args); - } - if (rv == NULL) { - PySys_WriteStderr("error in list definition callback:\\n"); - PyErr_Print(); - } else { - Py_DECREF(rv); - } -} -""" - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE) -module.addobject(object) - -# Create the generator classes used to populate the lists -Function = FunctionGenerator -Method = ListMethodGenerator - -# Create and populate the lists -functions = [] -methods = [] -execfile(INPUTFILE) - -# Function to convert any handle to a list and vv. -##f = Function(ListHandle, 'as_List', (Handle, 'h', InMode)) -as_List_body = """ -Handle h; -ListObject *l; -if (!PyArg_ParseTuple(_args, "O&", ResObj_Convert, &h)) - return NULL; -l = (ListObject *)ListObj_New(as_List(h)); -l->ob_must_be_disposed = 0; -_res = Py_BuildValue("O", l); -return _res; -""" -f = ManualGenerator("as_List", as_List_body) -f.docstring = lambda: "(Resource)->List.\nReturns List object (which is not auto-freed!)" -functions.append(f) - -f = Method(Handle, 'as_Resource', (ListHandle, 'lh', InMode)) -methods.append(f) - -# Manual generator for CreateCustomList, due to callback ideosyncracies -CreateCustomList_body = """\ -Rect rView; -Rect dataBounds; -Point cellSize; - -PyObject *listDefFunc; -ListDefSpec theSpec; -WindowPtr theWindow; -Boolean drawIt; -Boolean hasGrow; -Boolean scrollHoriz; -Boolean scrollVert; -ListHandle outList; - -if (!PyArg_ParseTuple(_args, "O&O&O&(iO)O&bbbb", - PyMac_GetRect, &rView, - PyMac_GetRect, &dataBounds, - PyMac_GetPoint, &cellSize, - &theSpec.defType, &listDefFunc, - WinObj_Convert, &theWindow, - &drawIt, - &hasGrow, - &scrollHoriz, - &scrollVert)) - return NULL; - - -/* Carbon applications use the CreateCustomList API */ -theSpec.u.userProc = myListDefFunctionUPP; -CreateCustomList(&rView, - &dataBounds, - cellSize, - &theSpec, - theWindow, - drawIt, - hasGrow, - scrollHoriz, - scrollVert, - &outList); - - -_res = ListObj_New(outList); -if (_res == NULL) - return NULL; -Py_INCREF(listDefFunc); -((ListObject*)_res)->ob_ldef_func = listDefFunc; -return _res;\ -""" - -f = ManualGenerator("CreateCustomList", CreateCustomList_body); -f.docstring = lambda: "(Rect rView, Rect dataBounds, Point cellSize, ListDefSpec theSpec, WindowPtr theWindow, Boolean drawIt, Boolean hasGrow, Boolean scrollHoriz, Boolean scrollVert) -> (ListHandle outList)" -module.add(f) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -for f in methods: object.add(f) - - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/menu/_Menumodule.c b/project/jni/python/src/Mac/Modules/menu/_Menumodule.c deleted file mode 100644 index 66ebf79dc..000000000 --- a/project/jni/python/src/Mac/Modules/menu/_Menumodule.c +++ /dev/null @@ -1,3477 +0,0 @@ - -/* ========================== Module _Menu ========================== */ - -#include "Python.h" - -#ifndef __LP64__ - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - - -#ifdef USE_TOOLBOX_OBJECT_GLUE - -extern PyObject *_MenuObj_New(MenuHandle); -extern int _MenuObj_Convert(PyObject *, MenuHandle *); - -#define MenuObj_New _MenuObj_New -#define MenuObj_Convert _MenuObj_Convert -#endif - -#define as_Menu(h) ((MenuHandle)h) -#define as_Resource(h) ((Handle)h) - - -/* Alternative version of MenuObj_New, which returns None for NULL argument */ -PyObject *OptMenuObj_New(MenuRef itself) -{ - if (itself == NULL) { - Py_INCREF(Py_None); - return Py_None; - } - return MenuObj_New(itself); -} - -/* Alternative version of MenuObj_Convert, which returns NULL for a None argument */ -int OptMenuObj_Convert(PyObject *v, MenuRef *p_itself) -{ - if ( v == Py_None ) { - *p_itself = NULL; - return 1; - } - return MenuObj_Convert(v, p_itself); -} - -static PyObject *Menu_Error; - -/* ------------------------ Object type Menu ------------------------ */ - -PyTypeObject Menu_Type; - -#define MenuObj_Check(x) ((x)->ob_type == &Menu_Type || PyObject_TypeCheck((x), &Menu_Type)) - -typedef struct MenuObject { - PyObject_HEAD - MenuHandle ob_itself; -} MenuObject; - -PyObject *MenuObj_New(MenuHandle itself) -{ - MenuObject *it; - it = PyObject_NEW(MenuObject, &Menu_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int MenuObj_Convert(PyObject *v, MenuHandle *p_itself) -{ - if (!MenuObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "Menu required"); - return 0; - } - *p_itself = ((MenuObject *)v)->ob_itself; - return 1; -} - -static void MenuObj_dealloc(MenuObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *MenuObj_DisposeMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef DisposeMenu - PyMac_PRECHECK(DisposeMenu); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - DisposeMenu(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_CalcMenuSize(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef CalcMenuSize - PyMac_PRECHECK(CalcMenuSize); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CalcMenuSize(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_CountMenuItems(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt16 _rv; -#ifndef CountMenuItems - PyMac_PRECHECK(CountMenuItems); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CountMenuItems(_self->ob_itself); - _res = Py_BuildValue("H", - _rv); - return _res; -} - -static PyObject *MenuObj_GetMenuFont(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - SInt16 outFontID; - UInt16 outFontSize; -#ifndef GetMenuFont - PyMac_PRECHECK(GetMenuFont); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetMenuFont(_self->ob_itself, - &outFontID, - &outFontSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("hH", - outFontID, - outFontSize); - return _res; -} - -static PyObject *MenuObj_SetMenuFont(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - SInt16 inFontID; - UInt16 inFontSize; -#ifndef SetMenuFont - PyMac_PRECHECK(SetMenuFont); -#endif - if (!PyArg_ParseTuple(_args, "hH", - &inFontID, - &inFontSize)) - return NULL; - _err = SetMenuFont(_self->ob_itself, - inFontID, - inFontSize); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuExcludesMarkColumn(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef GetMenuExcludesMarkColumn - PyMac_PRECHECK(GetMenuExcludesMarkColumn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMenuExcludesMarkColumn(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MenuObj_SetMenuExcludesMarkColumn(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean excludesMark; -#ifndef SetMenuExcludesMarkColumn - PyMac_PRECHECK(SetMenuExcludesMarkColumn); -#endif - if (!PyArg_ParseTuple(_args, "b", - &excludesMark)) - return NULL; - _err = SetMenuExcludesMarkColumn(_self->ob_itself, - excludesMark); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_IsValidMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsValidMenu - PyMac_PRECHECK(IsValidMenu); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsValidMenu(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MenuObj_GetMenuRetainCount(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ItemCount _rv; -#ifndef GetMenuRetainCount - PyMac_PRECHECK(GetMenuRetainCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMenuRetainCount(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MenuObj_RetainMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef RetainMenu - PyMac_PRECHECK(RetainMenu); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = RetainMenu(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_ReleaseMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef ReleaseMenu - PyMac_PRECHECK(ReleaseMenu); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = ReleaseMenu(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_DuplicateMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuHandle outMenu; -#ifndef DuplicateMenu - PyMac_PRECHECK(DuplicateMenu); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = DuplicateMenu(_self->ob_itself, - &outMenu); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - MenuObj_New, outMenu); - return _res; -} - -static PyObject *MenuObj_CopyMenuTitleAsCFString(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef outString; -#ifndef CopyMenuTitleAsCFString - PyMac_PRECHECK(CopyMenuTitleAsCFString); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = CopyMenuTitleAsCFString(_self->ob_itself, - &outString); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CFStringRefObj_New, outString); - return _res; -} - -static PyObject *MenuObj_SetMenuTitleWithCFString(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef inString; -#ifndef SetMenuTitleWithCFString - PyMac_PRECHECK(SetMenuTitleWithCFString); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &inString)) - return NULL; - _err = SetMenuTitleWithCFString(_self->ob_itself, - inString); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_InvalidateMenuSize(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef InvalidateMenuSize - PyMac_PRECHECK(InvalidateMenuSize); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = InvalidateMenuSize(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_IsMenuSizeInvalid(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsMenuSizeInvalid - PyMac_PRECHECK(IsMenuSizeInvalid); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsMenuSizeInvalid(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MenuObj_MacAppendMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Str255 data; -#ifndef MacAppendMenu - PyMac_PRECHECK(MacAppendMenu); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetStr255, data)) - return NULL; - MacAppendMenu(_self->ob_itself, - data); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_InsertResMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ResType theType; - short afterItem; -#ifndef InsertResMenu - PyMac_PRECHECK(InsertResMenu); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetOSType, &theType, - &afterItem)) - return NULL; - InsertResMenu(_self->ob_itself, - theType, - afterItem); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_AppendResMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ResType theType; -#ifndef AppendResMenu - PyMac_PRECHECK(AppendResMenu); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &theType)) - return NULL; - AppendResMenu(_self->ob_itself, - theType); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_MacInsertMenuItem(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Str255 itemString; - short afterItem; -#ifndef MacInsertMenuItem - PyMac_PRECHECK(MacInsertMenuItem); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetStr255, itemString, - &afterItem)) - return NULL; - MacInsertMenuItem(_self->ob_itself, - itemString, - afterItem); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_DeleteMenuItem(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short item; -#ifndef DeleteMenuItem - PyMac_PRECHECK(DeleteMenuItem); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - DeleteMenuItem(_self->ob_itself, - item); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_InsertFontResMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short afterItem; - short scriptFilter; -#ifndef InsertFontResMenu - PyMac_PRECHECK(InsertFontResMenu); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &afterItem, - &scriptFilter)) - return NULL; - InsertFontResMenu(_self->ob_itself, - afterItem, - scriptFilter); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_InsertIntlResMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ResType theType; - short afterItem; - short scriptFilter; -#ifndef InsertIntlResMenu - PyMac_PRECHECK(InsertIntlResMenu); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetOSType, &theType, - &afterItem, - &scriptFilter)) - return NULL; - InsertIntlResMenu(_self->ob_itself, - theType, - afterItem, - scriptFilter); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_AppendMenuItemText(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Str255 inString; -#ifndef AppendMenuItemText - PyMac_PRECHECK(AppendMenuItemText); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetStr255, inString)) - return NULL; - _err = AppendMenuItemText(_self->ob_itself, - inString); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_InsertMenuItemText(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Str255 inString; - MenuItemIndex afterItem; -#ifndef InsertMenuItemText - PyMac_PRECHECK(InsertMenuItemText); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetStr255, inString, - &afterItem)) - return NULL; - _err = InsertMenuItemText(_self->ob_itself, - inString, - afterItem); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_CopyMenuItems(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex inFirstItem; - ItemCount inNumItems; - MenuHandle inDestMenu; - MenuItemIndex inInsertAfter; -#ifndef CopyMenuItems - PyMac_PRECHECK(CopyMenuItems); -#endif - if (!PyArg_ParseTuple(_args, "hlO&h", - &inFirstItem, - &inNumItems, - MenuObj_Convert, &inDestMenu, - &inInsertAfter)) - return NULL; - _err = CopyMenuItems(_self->ob_itself, - inFirstItem, - inNumItems, - inDestMenu, - inInsertAfter); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_DeleteMenuItems(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex inFirstItem; - ItemCount inNumItems; -#ifndef DeleteMenuItems - PyMac_PRECHECK(DeleteMenuItems); -#endif - if (!PyArg_ParseTuple(_args, "hl", - &inFirstItem, - &inNumItems)) - return NULL; - _err = DeleteMenuItems(_self->ob_itself, - inFirstItem, - inNumItems); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_AppendMenuItemTextWithCFString(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef inString; - MenuItemAttributes inAttributes; - MenuCommand inCommandID; - MenuItemIndex outNewItem; -#ifndef AppendMenuItemTextWithCFString - PyMac_PRECHECK(AppendMenuItemTextWithCFString); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CFStringRefObj_Convert, &inString, - &inAttributes, - &inCommandID)) - return NULL; - _err = AppendMenuItemTextWithCFString(_self->ob_itself, - inString, - inAttributes, - inCommandID, - &outNewItem); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - outNewItem); - return _res; -} - -static PyObject *MenuObj_InsertMenuItemTextWithCFString(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef inString; - MenuItemIndex inAfterItem; - MenuItemAttributes inAttributes; - MenuCommand inCommandID; -#ifndef InsertMenuItemTextWithCFString - PyMac_PRECHECK(InsertMenuItemTextWithCFString); -#endif - if (!PyArg_ParseTuple(_args, "O&hll", - CFStringRefObj_Convert, &inString, - &inAfterItem, - &inAttributes, - &inCommandID)) - return NULL; - _err = InsertMenuItemTextWithCFString(_self->ob_itself, - inString, - inAfterItem, - inAttributes, - inCommandID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_PopUpMenuSelect(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - short top; - short left; - short popUpItem; -#ifndef PopUpMenuSelect - PyMac_PRECHECK(PopUpMenuSelect); -#endif - if (!PyArg_ParseTuple(_args, "hhh", - &top, - &left, - &popUpItem)) - return NULL; - _rv = PopUpMenuSelect(_self->ob_itself, - top, - left, - popUpItem); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MenuObj_InvalidateMenuEnabling(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef InvalidateMenuEnabling - PyMac_PRECHECK(InvalidateMenuEnabling); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = InvalidateMenuEnabling(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_IsMenuBarInvalid(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsMenuBarInvalid - PyMac_PRECHECK(IsMenuBarInvalid); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsMenuBarInvalid(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MenuObj_MacInsertMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuID beforeID; -#ifndef MacInsertMenu - PyMac_PRECHECK(MacInsertMenu); -#endif - if (!PyArg_ParseTuple(_args, "h", - &beforeID)) - return NULL; - MacInsertMenu(_self->ob_itself, - beforeID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_SetRootMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef SetRootMenu - PyMac_PRECHECK(SetRootMenu); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = SetRootMenu(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_MacCheckMenuItem(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short item; - Boolean checked; -#ifndef MacCheckMenuItem - PyMac_PRECHECK(MacCheckMenuItem); -#endif - if (!PyArg_ParseTuple(_args, "hb", - &item, - &checked)) - return NULL; - MacCheckMenuItem(_self->ob_itself, - item, - checked); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_SetMenuItemText(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short item; - Str255 itemString; -#ifndef SetMenuItemText - PyMac_PRECHECK(SetMenuItemText); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &item, - PyMac_GetStr255, itemString)) - return NULL; - SetMenuItemText(_self->ob_itself, - item, - itemString); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemText(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short item; - Str255 itemString; -#ifndef GetMenuItemText - PyMac_PRECHECK(GetMenuItemText); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - GetMenuItemText(_self->ob_itself, - item, - itemString); - _res = Py_BuildValue("O&", - PyMac_BuildStr255, itemString); - return _res; -} - -static PyObject *MenuObj_SetItemMark(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short item; - CharParameter markChar; -#ifndef SetItemMark - PyMac_PRECHECK(SetItemMark); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &item, - &markChar)) - return NULL; - SetItemMark(_self->ob_itself, - item, - markChar); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetItemMark(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short item; - CharParameter markChar; -#ifndef GetItemMark - PyMac_PRECHECK(GetItemMark); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - GetItemMark(_self->ob_itself, - item, - &markChar); - _res = Py_BuildValue("h", - markChar); - return _res; -} - -static PyObject *MenuObj_SetItemCmd(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short item; - CharParameter cmdChar; -#ifndef SetItemCmd - PyMac_PRECHECK(SetItemCmd); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &item, - &cmdChar)) - return NULL; - SetItemCmd(_self->ob_itself, - item, - cmdChar); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetItemCmd(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short item; - CharParameter cmdChar; -#ifndef GetItemCmd - PyMac_PRECHECK(GetItemCmd); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - GetItemCmd(_self->ob_itself, - item, - &cmdChar); - _res = Py_BuildValue("h", - cmdChar); - return _res; -} - -static PyObject *MenuObj_SetItemIcon(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short item; - short iconIndex; -#ifndef SetItemIcon - PyMac_PRECHECK(SetItemIcon); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &item, - &iconIndex)) - return NULL; - SetItemIcon(_self->ob_itself, - item, - iconIndex); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetItemIcon(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short item; - short iconIndex; -#ifndef GetItemIcon - PyMac_PRECHECK(GetItemIcon); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - GetItemIcon(_self->ob_itself, - item, - &iconIndex); - _res = Py_BuildValue("h", - iconIndex); - return _res; -} - -static PyObject *MenuObj_SetItemStyle(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short item; - StyleParameter chStyle; -#ifndef SetItemStyle - PyMac_PRECHECK(SetItemStyle); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &item, - &chStyle)) - return NULL; - SetItemStyle(_self->ob_itself, - item, - chStyle); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetItemStyle(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short item; - Style chStyle; -#ifndef GetItemStyle - PyMac_PRECHECK(GetItemStyle); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - GetItemStyle(_self->ob_itself, - item, - &chStyle); - _res = Py_BuildValue("b", - chStyle); - return _res; -} - -static PyObject *MenuObj_SetMenuItemCommandID(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - MenuCommand inCommandID; -#ifndef SetMenuItemCommandID - PyMac_PRECHECK(SetMenuItemCommandID); -#endif - if (!PyArg_ParseTuple(_args, "hl", - &inItem, - &inCommandID)) - return NULL; - _err = SetMenuItemCommandID(_self->ob_itself, - inItem, - inCommandID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemCommandID(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - MenuCommand outCommandID; -#ifndef GetMenuItemCommandID - PyMac_PRECHECK(GetMenuItemCommandID); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inItem)) - return NULL; - _err = GetMenuItemCommandID(_self->ob_itself, - inItem, - &outCommandID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outCommandID); - return _res; -} - -static PyObject *MenuObj_SetMenuItemModifiers(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - UInt8 inModifiers; -#ifndef SetMenuItemModifiers - PyMac_PRECHECK(SetMenuItemModifiers); -#endif - if (!PyArg_ParseTuple(_args, "hb", - &inItem, - &inModifiers)) - return NULL; - _err = SetMenuItemModifiers(_self->ob_itself, - inItem, - inModifiers); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemModifiers(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - UInt8 outModifiers; -#ifndef GetMenuItemModifiers - PyMac_PRECHECK(GetMenuItemModifiers); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inItem)) - return NULL; - _err = GetMenuItemModifiers(_self->ob_itself, - inItem, - &outModifiers); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - outModifiers); - return _res; -} - -static PyObject *MenuObj_SetMenuItemIconHandle(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - UInt8 inIconType; - Handle inIconHandle; -#ifndef SetMenuItemIconHandle - PyMac_PRECHECK(SetMenuItemIconHandle); -#endif - if (!PyArg_ParseTuple(_args, "hbO&", - &inItem, - &inIconType, - ResObj_Convert, &inIconHandle)) - return NULL; - _err = SetMenuItemIconHandle(_self->ob_itself, - inItem, - inIconType, - inIconHandle); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemIconHandle(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - UInt8 outIconType; - Handle outIconHandle; -#ifndef GetMenuItemIconHandle - PyMac_PRECHECK(GetMenuItemIconHandle); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inItem)) - return NULL; - _err = GetMenuItemIconHandle(_self->ob_itself, - inItem, - &outIconType, - &outIconHandle); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("bO&", - outIconType, - ResObj_New, outIconHandle); - return _res; -} - -static PyObject *MenuObj_SetMenuItemTextEncoding(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - TextEncoding inScriptID; -#ifndef SetMenuItemTextEncoding - PyMac_PRECHECK(SetMenuItemTextEncoding); -#endif - if (!PyArg_ParseTuple(_args, "hl", - &inItem, - &inScriptID)) - return NULL; - _err = SetMenuItemTextEncoding(_self->ob_itself, - inItem, - inScriptID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemTextEncoding(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - TextEncoding outScriptID; -#ifndef GetMenuItemTextEncoding - PyMac_PRECHECK(GetMenuItemTextEncoding); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inItem)) - return NULL; - _err = GetMenuItemTextEncoding(_self->ob_itself, - inItem, - &outScriptID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outScriptID); - return _res; -} - -static PyObject *MenuObj_SetMenuItemHierarchicalID(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - MenuID inHierID; -#ifndef SetMenuItemHierarchicalID - PyMac_PRECHECK(SetMenuItemHierarchicalID); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &inItem, - &inHierID)) - return NULL; - _err = SetMenuItemHierarchicalID(_self->ob_itself, - inItem, - inHierID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemHierarchicalID(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - MenuID outHierID; -#ifndef GetMenuItemHierarchicalID - PyMac_PRECHECK(GetMenuItemHierarchicalID); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inItem)) - return NULL; - _err = GetMenuItemHierarchicalID(_self->ob_itself, - inItem, - &outHierID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - outHierID); - return _res; -} - -static PyObject *MenuObj_SetMenuItemFontID(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - SInt16 inFontID; -#ifndef SetMenuItemFontID - PyMac_PRECHECK(SetMenuItemFontID); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &inItem, - &inFontID)) - return NULL; - _err = SetMenuItemFontID(_self->ob_itself, - inItem, - inFontID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemFontID(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - SInt16 outFontID; -#ifndef GetMenuItemFontID - PyMac_PRECHECK(GetMenuItemFontID); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inItem)) - return NULL; - _err = GetMenuItemFontID(_self->ob_itself, - inItem, - &outFontID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - outFontID); - return _res; -} - -static PyObject *MenuObj_SetMenuItemRefCon(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - UInt32 inRefCon; -#ifndef SetMenuItemRefCon - PyMac_PRECHECK(SetMenuItemRefCon); -#endif - if (!PyArg_ParseTuple(_args, "hl", - &inItem, - &inRefCon)) - return NULL; - _err = SetMenuItemRefCon(_self->ob_itself, - inItem, - inRefCon); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemRefCon(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - UInt32 outRefCon; -#ifndef GetMenuItemRefCon - PyMac_PRECHECK(GetMenuItemRefCon); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inItem)) - return NULL; - _err = GetMenuItemRefCon(_self->ob_itself, - inItem, - &outRefCon); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outRefCon); - return _res; -} - -static PyObject *MenuObj_SetMenuItemKeyGlyph(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - SInt16 inGlyph; -#ifndef SetMenuItemKeyGlyph - PyMac_PRECHECK(SetMenuItemKeyGlyph); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &inItem, - &inGlyph)) - return NULL; - _err = SetMenuItemKeyGlyph(_self->ob_itself, - inItem, - inGlyph); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemKeyGlyph(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 inItem; - SInt16 outGlyph; -#ifndef GetMenuItemKeyGlyph - PyMac_PRECHECK(GetMenuItemKeyGlyph); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inItem)) - return NULL; - _err = GetMenuItemKeyGlyph(_self->ob_itself, - inItem, - &outGlyph); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - outGlyph); - return _res; -} - -static PyObject *MenuObj_MacEnableMenuItem(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuItemIndex item; -#ifndef MacEnableMenuItem - PyMac_PRECHECK(MacEnableMenuItem); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - MacEnableMenuItem(_self->ob_itself, - item); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_DisableMenuItem(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuItemIndex item; -#ifndef DisableMenuItem - PyMac_PRECHECK(DisableMenuItem); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - DisableMenuItem(_self->ob_itself, - item); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_IsMenuItemEnabled(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - MenuItemIndex item; -#ifndef IsMenuItemEnabled - PyMac_PRECHECK(IsMenuItemEnabled); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - _rv = IsMenuItemEnabled(_self->ob_itself, - item); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MenuObj_EnableMenuItemIcon(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuItemIndex item; -#ifndef EnableMenuItemIcon - PyMac_PRECHECK(EnableMenuItemIcon); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - EnableMenuItemIcon(_self->ob_itself, - item); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_DisableMenuItemIcon(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuItemIndex item; -#ifndef DisableMenuItemIcon - PyMac_PRECHECK(DisableMenuItemIcon); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - DisableMenuItemIcon(_self->ob_itself, - item); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_IsMenuItemIconEnabled(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - MenuItemIndex item; -#ifndef IsMenuItemIconEnabled - PyMac_PRECHECK(IsMenuItemIconEnabled); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - _rv = IsMenuItemIconEnabled(_self->ob_itself, - item); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MenuObj_SetMenuItemHierarchicalMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex inItem; - MenuHandle inHierMenu; -#ifndef SetMenuItemHierarchicalMenu - PyMac_PRECHECK(SetMenuItemHierarchicalMenu); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &inItem, - MenuObj_Convert, &inHierMenu)) - return NULL; - _err = SetMenuItemHierarchicalMenu(_self->ob_itself, - inItem, - inHierMenu); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemHierarchicalMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex inItem; - MenuHandle outHierMenu; -#ifndef GetMenuItemHierarchicalMenu - PyMac_PRECHECK(GetMenuItemHierarchicalMenu); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inItem)) - return NULL; - _err = GetMenuItemHierarchicalMenu(_self->ob_itself, - inItem, - &outHierMenu); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - OptMenuObj_New, outHierMenu); - return _res; -} - -static PyObject *MenuObj_CopyMenuItemTextAsCFString(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex inItem; - CFStringRef outString; -#ifndef CopyMenuItemTextAsCFString - PyMac_PRECHECK(CopyMenuItemTextAsCFString); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inItem)) - return NULL; - _err = CopyMenuItemTextAsCFString(_self->ob_itself, - inItem, - &outString); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CFStringRefObj_New, outString); - return _res; -} - -static PyObject *MenuObj_SetMenuItemTextWithCFString(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex inItem; - CFStringRef inString; -#ifndef SetMenuItemTextWithCFString - PyMac_PRECHECK(SetMenuItemTextWithCFString); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &inItem, - CFStringRefObj_Convert, &inString)) - return NULL; - _err = SetMenuItemTextWithCFString(_self->ob_itself, - inItem, - inString); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemIndent(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex inItem; - UInt32 outIndent; -#ifndef GetMenuItemIndent - PyMac_PRECHECK(GetMenuItemIndent); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inItem)) - return NULL; - _err = GetMenuItemIndent(_self->ob_itself, - inItem, - &outIndent); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outIndent); - return _res; -} - -static PyObject *MenuObj_SetMenuItemIndent(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex inItem; - UInt32 inIndent; -#ifndef SetMenuItemIndent - PyMac_PRECHECK(SetMenuItemIndent); -#endif - if (!PyArg_ParseTuple(_args, "hl", - &inItem, - &inIndent)) - return NULL; - _err = SetMenuItemIndent(_self->ob_itself, - inItem, - inIndent); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemCommandKey(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex inItem; - Boolean inGetVirtualKey; - UInt16 outKey; -#ifndef GetMenuItemCommandKey - PyMac_PRECHECK(GetMenuItemCommandKey); -#endif - if (!PyArg_ParseTuple(_args, "hb", - &inItem, - &inGetVirtualKey)) - return NULL; - _err = GetMenuItemCommandKey(_self->ob_itself, - inItem, - inGetVirtualKey, - &outKey); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - outKey); - return _res; -} - -static PyObject *MenuObj_SetMenuItemCommandKey(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex inItem; - Boolean inSetVirtualKey; - UInt16 inKey; -#ifndef SetMenuItemCommandKey - PyMac_PRECHECK(SetMenuItemCommandKey); -#endif - if (!PyArg_ParseTuple(_args, "hbH", - &inItem, - &inSetVirtualKey, - &inKey)) - return NULL; - _err = SetMenuItemCommandKey(_self->ob_itself, - inItem, - inSetVirtualKey, - inKey); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemPropertyAttributes(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex item; - OSType propertyCreator; - OSType propertyTag; - UInt32 attributes; -#ifndef GetMenuItemPropertyAttributes - PyMac_PRECHECK(GetMenuItemPropertyAttributes); -#endif - if (!PyArg_ParseTuple(_args, "hO&O&", - &item, - PyMac_GetOSType, &propertyCreator, - PyMac_GetOSType, &propertyTag)) - return NULL; - _err = GetMenuItemPropertyAttributes(_self->ob_itself, - item, - propertyCreator, - propertyTag, - &attributes); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - attributes); - return _res; -} - -static PyObject *MenuObj_ChangeMenuItemPropertyAttributes(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex item; - OSType propertyCreator; - OSType propertyTag; - UInt32 attributesToSet; - UInt32 attributesToClear; -#ifndef ChangeMenuItemPropertyAttributes - PyMac_PRECHECK(ChangeMenuItemPropertyAttributes); -#endif - if (!PyArg_ParseTuple(_args, "hO&O&ll", - &item, - PyMac_GetOSType, &propertyCreator, - PyMac_GetOSType, &propertyTag, - &attributesToSet, - &attributesToClear)) - return NULL; - _err = ChangeMenuItemPropertyAttributes(_self->ob_itself, - item, - propertyCreator, - propertyTag, - attributesToSet, - attributesToClear); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuAttributes(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuAttributes outAttributes; -#ifndef GetMenuAttributes - PyMac_PRECHECK(GetMenuAttributes); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetMenuAttributes(_self->ob_itself, - &outAttributes); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outAttributes); - return _res; -} - -static PyObject *MenuObj_ChangeMenuAttributes(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuAttributes setTheseAttributes; - MenuAttributes clearTheseAttributes; -#ifndef ChangeMenuAttributes - PyMac_PRECHECK(ChangeMenuAttributes); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &setTheseAttributes, - &clearTheseAttributes)) - return NULL; - _err = ChangeMenuAttributes(_self->ob_itself, - setTheseAttributes, - clearTheseAttributes); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuItemAttributes(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex item; - MenuItemAttributes outAttributes; -#ifndef GetMenuItemAttributes - PyMac_PRECHECK(GetMenuItemAttributes); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - _err = GetMenuItemAttributes(_self->ob_itself, - item, - &outAttributes); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outAttributes); - return _res; -} - -static PyObject *MenuObj_ChangeMenuItemAttributes(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex item; - MenuItemAttributes setTheseAttributes; - MenuItemAttributes clearTheseAttributes; -#ifndef ChangeMenuItemAttributes - PyMac_PRECHECK(ChangeMenuItemAttributes); -#endif - if (!PyArg_ParseTuple(_args, "hll", - &item, - &setTheseAttributes, - &clearTheseAttributes)) - return NULL; - _err = ChangeMenuItemAttributes(_self->ob_itself, - item, - setTheseAttributes, - clearTheseAttributes); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_DisableAllMenuItems(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef DisableAllMenuItems - PyMac_PRECHECK(DisableAllMenuItems); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - DisableAllMenuItems(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_EnableAllMenuItems(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef EnableAllMenuItems - PyMac_PRECHECK(EnableAllMenuItems); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - EnableAllMenuItems(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_MenuHasEnabledItems(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef MenuHasEnabledItems - PyMac_PRECHECK(MenuHasEnabledItems); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MenuHasEnabledItems(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MenuObj_GetMenuType(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt16 outType; -#ifndef GetMenuType - PyMac_PRECHECK(GetMenuType); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetMenuType(_self->ob_itself, - &outType); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("H", - outType); - return _res; -} - -static PyObject *MenuObj_CountMenuItemsWithCommandID(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ItemCount _rv; - MenuCommand inCommandID; -#ifndef CountMenuItemsWithCommandID - PyMac_PRECHECK(CountMenuItemsWithCommandID); -#endif - if (!PyArg_ParseTuple(_args, "l", - &inCommandID)) - return NULL; - _rv = CountMenuItemsWithCommandID(_self->ob_itself, - inCommandID); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MenuObj_GetIndMenuItemWithCommandID(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuCommand inCommandID; - UInt32 inItemIndex; - MenuHandle outMenu; - MenuItemIndex outIndex; -#ifndef GetIndMenuItemWithCommandID - PyMac_PRECHECK(GetIndMenuItemWithCommandID); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &inCommandID, - &inItemIndex)) - return NULL; - _err = GetIndMenuItemWithCommandID(_self->ob_itself, - inCommandID, - inItemIndex, - &outMenu, - &outIndex); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&h", - MenuObj_New, outMenu, - outIndex); - return _res; -} - -static PyObject *MenuObj_EnableMenuCommand(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuCommand inCommandID; -#ifndef EnableMenuCommand - PyMac_PRECHECK(EnableMenuCommand); -#endif - if (!PyArg_ParseTuple(_args, "l", - &inCommandID)) - return NULL; - EnableMenuCommand(_self->ob_itself, - inCommandID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_DisableMenuCommand(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuCommand inCommandID; -#ifndef DisableMenuCommand - PyMac_PRECHECK(DisableMenuCommand); -#endif - if (!PyArg_ParseTuple(_args, "l", - &inCommandID)) - return NULL; - DisableMenuCommand(_self->ob_itself, - inCommandID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_IsMenuCommandEnabled(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - MenuCommand inCommandID; -#ifndef IsMenuCommandEnabled - PyMac_PRECHECK(IsMenuCommandEnabled); -#endif - if (!PyArg_ParseTuple(_args, "l", - &inCommandID)) - return NULL; - _rv = IsMenuCommandEnabled(_self->ob_itself, - inCommandID); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MenuObj_SetMenuCommandMark(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuCommand inCommandID; - UniChar inMark; -#ifndef SetMenuCommandMark - PyMac_PRECHECK(SetMenuCommandMark); -#endif - if (!PyArg_ParseTuple(_args, "lh", - &inCommandID, - &inMark)) - return NULL; - _err = SetMenuCommandMark(_self->ob_itself, - inCommandID, - inMark); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_GetMenuCommandMark(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuCommand inCommandID; - UniChar outMark; -#ifndef GetMenuCommandMark - PyMac_PRECHECK(GetMenuCommandMark); -#endif - if (!PyArg_ParseTuple(_args, "l", - &inCommandID)) - return NULL; - _err = GetMenuCommandMark(_self->ob_itself, - inCommandID, - &outMark); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - outMark); - return _res; -} - -static PyObject *MenuObj_GetMenuCommandPropertySize(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuCommand inCommandID; - OSType inPropertyCreator; - OSType inPropertyTag; - ByteCount outSize; -#ifndef GetMenuCommandPropertySize - PyMac_PRECHECK(GetMenuCommandPropertySize); -#endif - if (!PyArg_ParseTuple(_args, "lO&O&", - &inCommandID, - PyMac_GetOSType, &inPropertyCreator, - PyMac_GetOSType, &inPropertyTag)) - return NULL; - _err = GetMenuCommandPropertySize(_self->ob_itself, - inCommandID, - inPropertyCreator, - inPropertyTag, - &outSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outSize); - return _res; -} - -static PyObject *MenuObj_RemoveMenuCommandProperty(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuCommand inCommandID; - OSType inPropertyCreator; - OSType inPropertyTag; -#ifndef RemoveMenuCommandProperty - PyMac_PRECHECK(RemoveMenuCommandProperty); -#endif - if (!PyArg_ParseTuple(_args, "lO&O&", - &inCommandID, - PyMac_GetOSType, &inPropertyCreator, - PyMac_GetOSType, &inPropertyTag)) - return NULL; - _err = RemoveMenuCommandProperty(_self->ob_itself, - inCommandID, - inPropertyCreator, - inPropertyTag); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_IsMenuItemInvalid(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - MenuItemIndex inItem; -#ifndef IsMenuItemInvalid - PyMac_PRECHECK(IsMenuItemInvalid); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inItem)) - return NULL; - _rv = IsMenuItemInvalid(_self->ob_itself, - inItem); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MenuObj_InvalidateMenuItems(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex inFirstItem; - ItemCount inNumItems; -#ifndef InvalidateMenuItems - PyMac_PRECHECK(InvalidateMenuItems); -#endif - if (!PyArg_ParseTuple(_args, "hl", - &inFirstItem, - &inNumItems)) - return NULL; - _err = InvalidateMenuItems(_self->ob_itself, - inFirstItem, - inNumItems); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_UpdateInvalidMenuItems(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef UpdateInvalidMenuItems - PyMac_PRECHECK(UpdateInvalidMenuItems); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = UpdateInvalidMenuItems(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_CreateStandardFontMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex afterItem; - MenuID firstHierMenuID; - OptionBits options; - ItemCount outHierMenuCount; -#ifndef CreateStandardFontMenu - PyMac_PRECHECK(CreateStandardFontMenu); -#endif - if (!PyArg_ParseTuple(_args, "hhl", - &afterItem, - &firstHierMenuID, - &options)) - return NULL; - _err = CreateStandardFontMenu(_self->ob_itself, - afterItem, - firstHierMenuID, - options, - &outHierMenuCount); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outHierMenuCount); - return _res; -} - -static PyObject *MenuObj_UpdateStandardFontMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ItemCount outHierMenuCount; -#ifndef UpdateStandardFontMenu - PyMac_PRECHECK(UpdateStandardFontMenu); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = UpdateStandardFontMenu(_self->ob_itself, - &outHierMenuCount); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outHierMenuCount); - return _res; -} - -static PyObject *MenuObj_GetFontFamilyFromMenuSelection(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuItemIndex item; - FMFontFamily outFontFamily; - FMFontStyle outStyle; -#ifndef GetFontFamilyFromMenuSelection - PyMac_PRECHECK(GetFontFamilyFromMenuSelection); -#endif - if (!PyArg_ParseTuple(_args, "h", - &item)) - return NULL; - _err = GetFontFamilyFromMenuSelection(_self->ob_itself, - item, - &outFontFamily, - &outStyle); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("hh", - outFontFamily, - outStyle); - return _res; -} - -static PyObject *MenuObj_GetMenuID(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuID _rv; -#ifndef GetMenuID - PyMac_PRECHECK(GetMenuID); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMenuID(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *MenuObj_GetMenuWidth(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef GetMenuWidth - PyMac_PRECHECK(GetMenuWidth); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMenuWidth(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *MenuObj_GetMenuHeight(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef GetMenuHeight - PyMac_PRECHECK(GetMenuHeight); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMenuHeight(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *MenuObj_SetMenuID(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuID menuID; -#ifndef SetMenuID - PyMac_PRECHECK(SetMenuID); -#endif - if (!PyArg_ParseTuple(_args, "h", - &menuID)) - return NULL; - SetMenuID(_self->ob_itself, - menuID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_SetMenuWidth(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 width; -#ifndef SetMenuWidth - PyMac_PRECHECK(SetMenuWidth); -#endif - if (!PyArg_ParseTuple(_args, "h", - &width)) - return NULL; - SetMenuWidth(_self->ob_itself, - width); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_SetMenuHeight(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 height; -#ifndef SetMenuHeight - PyMac_PRECHECK(SetMenuHeight); -#endif - if (!PyArg_ParseTuple(_args, "h", - &height)) - return NULL; - SetMenuHeight(_self->ob_itself, - height); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_as_Resource(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; -#ifndef as_Resource - PyMac_PRECHECK(as_Resource); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = as_Resource(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *MenuObj_AppendMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Str255 data; -#ifndef AppendMenu - PyMac_PRECHECK(AppendMenu); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetStr255, data)) - return NULL; - AppendMenu(_self->ob_itself, - data); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_InsertMenu(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short beforeID; -#ifndef InsertMenu - PyMac_PRECHECK(InsertMenu); -#endif - if (!PyArg_ParseTuple(_args, "h", - &beforeID)) - return NULL; - InsertMenu(_self->ob_itself, - beforeID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_InsertMenuItem(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Str255 itemString; - short afterItem; -#ifndef InsertMenuItem - PyMac_PRECHECK(InsertMenuItem); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetStr255, itemString, - &afterItem)) - return NULL; - InsertMenuItem(_self->ob_itself, - itemString, - afterItem); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_EnableMenuItem(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt16 item; -#ifndef EnableMenuItem - PyMac_PRECHECK(EnableMenuItem); -#endif - if (!PyArg_ParseTuple(_args, "H", - &item)) - return NULL; - EnableMenuItem(_self->ob_itself, - item); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MenuObj_CheckMenuItem(MenuObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short item; - Boolean checked; -#ifndef CheckMenuItem - PyMac_PRECHECK(CheckMenuItem); -#endif - if (!PyArg_ParseTuple(_args, "hb", - &item, - &checked)) - return NULL; - CheckMenuItem(_self->ob_itself, - item, - checked); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef MenuObj_methods[] = { - {"DisposeMenu", (PyCFunction)MenuObj_DisposeMenu, 1, - PyDoc_STR("() -> None")}, - {"CalcMenuSize", (PyCFunction)MenuObj_CalcMenuSize, 1, - PyDoc_STR("() -> None")}, - {"CountMenuItems", (PyCFunction)MenuObj_CountMenuItems, 1, - PyDoc_STR("() -> (UInt16 _rv)")}, - {"GetMenuFont", (PyCFunction)MenuObj_GetMenuFont, 1, - PyDoc_STR("() -> (SInt16 outFontID, UInt16 outFontSize)")}, - {"SetMenuFont", (PyCFunction)MenuObj_SetMenuFont, 1, - PyDoc_STR("(SInt16 inFontID, UInt16 inFontSize) -> None")}, - {"GetMenuExcludesMarkColumn", (PyCFunction)MenuObj_GetMenuExcludesMarkColumn, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"SetMenuExcludesMarkColumn", (PyCFunction)MenuObj_SetMenuExcludesMarkColumn, 1, - PyDoc_STR("(Boolean excludesMark) -> None")}, - {"IsValidMenu", (PyCFunction)MenuObj_IsValidMenu, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"GetMenuRetainCount", (PyCFunction)MenuObj_GetMenuRetainCount, 1, - PyDoc_STR("() -> (ItemCount _rv)")}, - {"RetainMenu", (PyCFunction)MenuObj_RetainMenu, 1, - PyDoc_STR("() -> None")}, - {"ReleaseMenu", (PyCFunction)MenuObj_ReleaseMenu, 1, - PyDoc_STR("() -> None")}, - {"DuplicateMenu", (PyCFunction)MenuObj_DuplicateMenu, 1, - PyDoc_STR("() -> (MenuHandle outMenu)")}, - {"CopyMenuTitleAsCFString", (PyCFunction)MenuObj_CopyMenuTitleAsCFString, 1, - PyDoc_STR("() -> (CFStringRef outString)")}, - {"SetMenuTitleWithCFString", (PyCFunction)MenuObj_SetMenuTitleWithCFString, 1, - PyDoc_STR("(CFStringRef inString) -> None")}, - {"InvalidateMenuSize", (PyCFunction)MenuObj_InvalidateMenuSize, 1, - PyDoc_STR("() -> None")}, - {"IsMenuSizeInvalid", (PyCFunction)MenuObj_IsMenuSizeInvalid, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"MacAppendMenu", (PyCFunction)MenuObj_MacAppendMenu, 1, - PyDoc_STR("(Str255 data) -> None")}, - {"InsertResMenu", (PyCFunction)MenuObj_InsertResMenu, 1, - PyDoc_STR("(ResType theType, short afterItem) -> None")}, - {"AppendResMenu", (PyCFunction)MenuObj_AppendResMenu, 1, - PyDoc_STR("(ResType theType) -> None")}, - {"MacInsertMenuItem", (PyCFunction)MenuObj_MacInsertMenuItem, 1, - PyDoc_STR("(Str255 itemString, short afterItem) -> None")}, - {"DeleteMenuItem", (PyCFunction)MenuObj_DeleteMenuItem, 1, - PyDoc_STR("(short item) -> None")}, - {"InsertFontResMenu", (PyCFunction)MenuObj_InsertFontResMenu, 1, - PyDoc_STR("(short afterItem, short scriptFilter) -> None")}, - {"InsertIntlResMenu", (PyCFunction)MenuObj_InsertIntlResMenu, 1, - PyDoc_STR("(ResType theType, short afterItem, short scriptFilter) -> None")}, - {"AppendMenuItemText", (PyCFunction)MenuObj_AppendMenuItemText, 1, - PyDoc_STR("(Str255 inString) -> None")}, - {"InsertMenuItemText", (PyCFunction)MenuObj_InsertMenuItemText, 1, - PyDoc_STR("(Str255 inString, MenuItemIndex afterItem) -> None")}, - {"CopyMenuItems", (PyCFunction)MenuObj_CopyMenuItems, 1, - PyDoc_STR("(MenuItemIndex inFirstItem, ItemCount inNumItems, MenuHandle inDestMenu, MenuItemIndex inInsertAfter) -> None")}, - {"DeleteMenuItems", (PyCFunction)MenuObj_DeleteMenuItems, 1, - PyDoc_STR("(MenuItemIndex inFirstItem, ItemCount inNumItems) -> None")}, - {"AppendMenuItemTextWithCFString", (PyCFunction)MenuObj_AppendMenuItemTextWithCFString, 1, - PyDoc_STR("(CFStringRef inString, MenuItemAttributes inAttributes, MenuCommand inCommandID) -> (MenuItemIndex outNewItem)")}, - {"InsertMenuItemTextWithCFString", (PyCFunction)MenuObj_InsertMenuItemTextWithCFString, 1, - PyDoc_STR("(CFStringRef inString, MenuItemIndex inAfterItem, MenuItemAttributes inAttributes, MenuCommand inCommandID) -> None")}, - {"PopUpMenuSelect", (PyCFunction)MenuObj_PopUpMenuSelect, 1, - PyDoc_STR("(short top, short left, short popUpItem) -> (long _rv)")}, - {"InvalidateMenuEnabling", (PyCFunction)MenuObj_InvalidateMenuEnabling, 1, - PyDoc_STR("() -> None")}, - {"IsMenuBarInvalid", (PyCFunction)MenuObj_IsMenuBarInvalid, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"MacInsertMenu", (PyCFunction)MenuObj_MacInsertMenu, 1, - PyDoc_STR("(MenuID beforeID) -> None")}, - {"SetRootMenu", (PyCFunction)MenuObj_SetRootMenu, 1, - PyDoc_STR("() -> None")}, - {"MacCheckMenuItem", (PyCFunction)MenuObj_MacCheckMenuItem, 1, - PyDoc_STR("(short item, Boolean checked) -> None")}, - {"SetMenuItemText", (PyCFunction)MenuObj_SetMenuItemText, 1, - PyDoc_STR("(short item, Str255 itemString) -> None")}, - {"GetMenuItemText", (PyCFunction)MenuObj_GetMenuItemText, 1, - PyDoc_STR("(short item) -> (Str255 itemString)")}, - {"SetItemMark", (PyCFunction)MenuObj_SetItemMark, 1, - PyDoc_STR("(short item, CharParameter markChar) -> None")}, - {"GetItemMark", (PyCFunction)MenuObj_GetItemMark, 1, - PyDoc_STR("(short item) -> (CharParameter markChar)")}, - {"SetItemCmd", (PyCFunction)MenuObj_SetItemCmd, 1, - PyDoc_STR("(short item, CharParameter cmdChar) -> None")}, - {"GetItemCmd", (PyCFunction)MenuObj_GetItemCmd, 1, - PyDoc_STR("(short item) -> (CharParameter cmdChar)")}, - {"SetItemIcon", (PyCFunction)MenuObj_SetItemIcon, 1, - PyDoc_STR("(short item, short iconIndex) -> None")}, - {"GetItemIcon", (PyCFunction)MenuObj_GetItemIcon, 1, - PyDoc_STR("(short item) -> (short iconIndex)")}, - {"SetItemStyle", (PyCFunction)MenuObj_SetItemStyle, 1, - PyDoc_STR("(short item, StyleParameter chStyle) -> None")}, - {"GetItemStyle", (PyCFunction)MenuObj_GetItemStyle, 1, - PyDoc_STR("(short item) -> (Style chStyle)")}, - {"SetMenuItemCommandID", (PyCFunction)MenuObj_SetMenuItemCommandID, 1, - PyDoc_STR("(SInt16 inItem, MenuCommand inCommandID) -> None")}, - {"GetMenuItemCommandID", (PyCFunction)MenuObj_GetMenuItemCommandID, 1, - PyDoc_STR("(SInt16 inItem) -> (MenuCommand outCommandID)")}, - {"SetMenuItemModifiers", (PyCFunction)MenuObj_SetMenuItemModifiers, 1, - PyDoc_STR("(SInt16 inItem, UInt8 inModifiers) -> None")}, - {"GetMenuItemModifiers", (PyCFunction)MenuObj_GetMenuItemModifiers, 1, - PyDoc_STR("(SInt16 inItem) -> (UInt8 outModifiers)")}, - {"SetMenuItemIconHandle", (PyCFunction)MenuObj_SetMenuItemIconHandle, 1, - PyDoc_STR("(SInt16 inItem, UInt8 inIconType, Handle inIconHandle) -> None")}, - {"GetMenuItemIconHandle", (PyCFunction)MenuObj_GetMenuItemIconHandle, 1, - PyDoc_STR("(SInt16 inItem) -> (UInt8 outIconType, Handle outIconHandle)")}, - {"SetMenuItemTextEncoding", (PyCFunction)MenuObj_SetMenuItemTextEncoding, 1, - PyDoc_STR("(SInt16 inItem, TextEncoding inScriptID) -> None")}, - {"GetMenuItemTextEncoding", (PyCFunction)MenuObj_GetMenuItemTextEncoding, 1, - PyDoc_STR("(SInt16 inItem) -> (TextEncoding outScriptID)")}, - {"SetMenuItemHierarchicalID", (PyCFunction)MenuObj_SetMenuItemHierarchicalID, 1, - PyDoc_STR("(SInt16 inItem, MenuID inHierID) -> None")}, - {"GetMenuItemHierarchicalID", (PyCFunction)MenuObj_GetMenuItemHierarchicalID, 1, - PyDoc_STR("(SInt16 inItem) -> (MenuID outHierID)")}, - {"SetMenuItemFontID", (PyCFunction)MenuObj_SetMenuItemFontID, 1, - PyDoc_STR("(SInt16 inItem, SInt16 inFontID) -> None")}, - {"GetMenuItemFontID", (PyCFunction)MenuObj_GetMenuItemFontID, 1, - PyDoc_STR("(SInt16 inItem) -> (SInt16 outFontID)")}, - {"SetMenuItemRefCon", (PyCFunction)MenuObj_SetMenuItemRefCon, 1, - PyDoc_STR("(SInt16 inItem, UInt32 inRefCon) -> None")}, - {"GetMenuItemRefCon", (PyCFunction)MenuObj_GetMenuItemRefCon, 1, - PyDoc_STR("(SInt16 inItem) -> (UInt32 outRefCon)")}, - {"SetMenuItemKeyGlyph", (PyCFunction)MenuObj_SetMenuItemKeyGlyph, 1, - PyDoc_STR("(SInt16 inItem, SInt16 inGlyph) -> None")}, - {"GetMenuItemKeyGlyph", (PyCFunction)MenuObj_GetMenuItemKeyGlyph, 1, - PyDoc_STR("(SInt16 inItem) -> (SInt16 outGlyph)")}, - {"MacEnableMenuItem", (PyCFunction)MenuObj_MacEnableMenuItem, 1, - PyDoc_STR("(MenuItemIndex item) -> None")}, - {"DisableMenuItem", (PyCFunction)MenuObj_DisableMenuItem, 1, - PyDoc_STR("(MenuItemIndex item) -> None")}, - {"IsMenuItemEnabled", (PyCFunction)MenuObj_IsMenuItemEnabled, 1, - PyDoc_STR("(MenuItemIndex item) -> (Boolean _rv)")}, - {"EnableMenuItemIcon", (PyCFunction)MenuObj_EnableMenuItemIcon, 1, - PyDoc_STR("(MenuItemIndex item) -> None")}, - {"DisableMenuItemIcon", (PyCFunction)MenuObj_DisableMenuItemIcon, 1, - PyDoc_STR("(MenuItemIndex item) -> None")}, - {"IsMenuItemIconEnabled", (PyCFunction)MenuObj_IsMenuItemIconEnabled, 1, - PyDoc_STR("(MenuItemIndex item) -> (Boolean _rv)")}, - {"SetMenuItemHierarchicalMenu", (PyCFunction)MenuObj_SetMenuItemHierarchicalMenu, 1, - PyDoc_STR("(MenuItemIndex inItem, MenuHandle inHierMenu) -> None")}, - {"GetMenuItemHierarchicalMenu", (PyCFunction)MenuObj_GetMenuItemHierarchicalMenu, 1, - PyDoc_STR("(MenuItemIndex inItem) -> (MenuHandle outHierMenu)")}, - {"CopyMenuItemTextAsCFString", (PyCFunction)MenuObj_CopyMenuItemTextAsCFString, 1, - PyDoc_STR("(MenuItemIndex inItem) -> (CFStringRef outString)")}, - {"SetMenuItemTextWithCFString", (PyCFunction)MenuObj_SetMenuItemTextWithCFString, 1, - PyDoc_STR("(MenuItemIndex inItem, CFStringRef inString) -> None")}, - {"GetMenuItemIndent", (PyCFunction)MenuObj_GetMenuItemIndent, 1, - PyDoc_STR("(MenuItemIndex inItem) -> (UInt32 outIndent)")}, - {"SetMenuItemIndent", (PyCFunction)MenuObj_SetMenuItemIndent, 1, - PyDoc_STR("(MenuItemIndex inItem, UInt32 inIndent) -> None")}, - {"GetMenuItemCommandKey", (PyCFunction)MenuObj_GetMenuItemCommandKey, 1, - PyDoc_STR("(MenuItemIndex inItem, Boolean inGetVirtualKey) -> (UInt16 outKey)")}, - {"SetMenuItemCommandKey", (PyCFunction)MenuObj_SetMenuItemCommandKey, 1, - PyDoc_STR("(MenuItemIndex inItem, Boolean inSetVirtualKey, UInt16 inKey) -> None")}, - {"GetMenuItemPropertyAttributes", (PyCFunction)MenuObj_GetMenuItemPropertyAttributes, 1, - PyDoc_STR("(MenuItemIndex item, OSType propertyCreator, OSType propertyTag) -> (UInt32 attributes)")}, - {"ChangeMenuItemPropertyAttributes", (PyCFunction)MenuObj_ChangeMenuItemPropertyAttributes, 1, - PyDoc_STR("(MenuItemIndex item, OSType propertyCreator, OSType propertyTag, UInt32 attributesToSet, UInt32 attributesToClear) -> None")}, - {"GetMenuAttributes", (PyCFunction)MenuObj_GetMenuAttributes, 1, - PyDoc_STR("() -> (MenuAttributes outAttributes)")}, - {"ChangeMenuAttributes", (PyCFunction)MenuObj_ChangeMenuAttributes, 1, - PyDoc_STR("(MenuAttributes setTheseAttributes, MenuAttributes clearTheseAttributes) -> None")}, - {"GetMenuItemAttributes", (PyCFunction)MenuObj_GetMenuItemAttributes, 1, - PyDoc_STR("(MenuItemIndex item) -> (MenuItemAttributes outAttributes)")}, - {"ChangeMenuItemAttributes", (PyCFunction)MenuObj_ChangeMenuItemAttributes, 1, - PyDoc_STR("(MenuItemIndex item, MenuItemAttributes setTheseAttributes, MenuItemAttributes clearTheseAttributes) -> None")}, - {"DisableAllMenuItems", (PyCFunction)MenuObj_DisableAllMenuItems, 1, - PyDoc_STR("() -> None")}, - {"EnableAllMenuItems", (PyCFunction)MenuObj_EnableAllMenuItems, 1, - PyDoc_STR("() -> None")}, - {"MenuHasEnabledItems", (PyCFunction)MenuObj_MenuHasEnabledItems, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"GetMenuType", (PyCFunction)MenuObj_GetMenuType, 1, - PyDoc_STR("() -> (UInt16 outType)")}, - {"CountMenuItemsWithCommandID", (PyCFunction)MenuObj_CountMenuItemsWithCommandID, 1, - PyDoc_STR("(MenuCommand inCommandID) -> (ItemCount _rv)")}, - {"GetIndMenuItemWithCommandID", (PyCFunction)MenuObj_GetIndMenuItemWithCommandID, 1, - PyDoc_STR("(MenuCommand inCommandID, UInt32 inItemIndex) -> (MenuHandle outMenu, MenuItemIndex outIndex)")}, - {"EnableMenuCommand", (PyCFunction)MenuObj_EnableMenuCommand, 1, - PyDoc_STR("(MenuCommand inCommandID) -> None")}, - {"DisableMenuCommand", (PyCFunction)MenuObj_DisableMenuCommand, 1, - PyDoc_STR("(MenuCommand inCommandID) -> None")}, - {"IsMenuCommandEnabled", (PyCFunction)MenuObj_IsMenuCommandEnabled, 1, - PyDoc_STR("(MenuCommand inCommandID) -> (Boolean _rv)")}, - {"SetMenuCommandMark", (PyCFunction)MenuObj_SetMenuCommandMark, 1, - PyDoc_STR("(MenuCommand inCommandID, UniChar inMark) -> None")}, - {"GetMenuCommandMark", (PyCFunction)MenuObj_GetMenuCommandMark, 1, - PyDoc_STR("(MenuCommand inCommandID) -> (UniChar outMark)")}, - {"GetMenuCommandPropertySize", (PyCFunction)MenuObj_GetMenuCommandPropertySize, 1, - PyDoc_STR("(MenuCommand inCommandID, OSType inPropertyCreator, OSType inPropertyTag) -> (ByteCount outSize)")}, - {"RemoveMenuCommandProperty", (PyCFunction)MenuObj_RemoveMenuCommandProperty, 1, - PyDoc_STR("(MenuCommand inCommandID, OSType inPropertyCreator, OSType inPropertyTag) -> None")}, - {"IsMenuItemInvalid", (PyCFunction)MenuObj_IsMenuItemInvalid, 1, - PyDoc_STR("(MenuItemIndex inItem) -> (Boolean _rv)")}, - {"InvalidateMenuItems", (PyCFunction)MenuObj_InvalidateMenuItems, 1, - PyDoc_STR("(MenuItemIndex inFirstItem, ItemCount inNumItems) -> None")}, - {"UpdateInvalidMenuItems", (PyCFunction)MenuObj_UpdateInvalidMenuItems, 1, - PyDoc_STR("() -> None")}, - {"CreateStandardFontMenu", (PyCFunction)MenuObj_CreateStandardFontMenu, 1, - PyDoc_STR("(MenuItemIndex afterItem, MenuID firstHierMenuID, OptionBits options) -> (ItemCount outHierMenuCount)")}, - {"UpdateStandardFontMenu", (PyCFunction)MenuObj_UpdateStandardFontMenu, 1, - PyDoc_STR("() -> (ItemCount outHierMenuCount)")}, - {"GetFontFamilyFromMenuSelection", (PyCFunction)MenuObj_GetFontFamilyFromMenuSelection, 1, - PyDoc_STR("(MenuItemIndex item) -> (FMFontFamily outFontFamily, FMFontStyle outStyle)")}, - {"GetMenuID", (PyCFunction)MenuObj_GetMenuID, 1, - PyDoc_STR("() -> (MenuID _rv)")}, - {"GetMenuWidth", (PyCFunction)MenuObj_GetMenuWidth, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"GetMenuHeight", (PyCFunction)MenuObj_GetMenuHeight, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"SetMenuID", (PyCFunction)MenuObj_SetMenuID, 1, - PyDoc_STR("(MenuID menuID) -> None")}, - {"SetMenuWidth", (PyCFunction)MenuObj_SetMenuWidth, 1, - PyDoc_STR("(SInt16 width) -> None")}, - {"SetMenuHeight", (PyCFunction)MenuObj_SetMenuHeight, 1, - PyDoc_STR("(SInt16 height) -> None")}, - {"as_Resource", (PyCFunction)MenuObj_as_Resource, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {"AppendMenu", (PyCFunction)MenuObj_AppendMenu, 1, - PyDoc_STR("(Str255 data) -> None")}, - {"InsertMenu", (PyCFunction)MenuObj_InsertMenu, 1, - PyDoc_STR("(short beforeID) -> None")}, - {"InsertMenuItem", (PyCFunction)MenuObj_InsertMenuItem, 1, - PyDoc_STR("(Str255 itemString, short afterItem) -> None")}, - {"EnableMenuItem", (PyCFunction)MenuObj_EnableMenuItem, 1, - PyDoc_STR("(UInt16 item) -> None")}, - {"CheckMenuItem", (PyCFunction)MenuObj_CheckMenuItem, 1, - PyDoc_STR("(short item, Boolean checked) -> None")}, - {NULL, NULL, 0} -}; - -#define MenuObj_getsetlist NULL - - -#define MenuObj_compare NULL - -#define MenuObj_repr NULL - -#define MenuObj_hash NULL -#define MenuObj_tp_init 0 - -#define MenuObj_tp_alloc PyType_GenericAlloc - -static PyObject *MenuObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - MenuHandle itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, MenuObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((MenuObject *)_self)->ob_itself = itself; - return _self; -} - -#define MenuObj_tp_free PyObject_Del - - -PyTypeObject Menu_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Menu.Menu", /*tp_name*/ - sizeof(MenuObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) MenuObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) MenuObj_compare, /*tp_compare*/ - (reprfunc) MenuObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) MenuObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - MenuObj_methods, /* tp_methods */ - 0, /*tp_members*/ - MenuObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - MenuObj_tp_init, /* tp_init */ - MenuObj_tp_alloc, /* tp_alloc */ - MenuObj_tp_new, /* tp_new */ - MenuObj_tp_free, /* tp_free */ -}; - -/* ---------------------- End object type Menu ---------------------- */ - - -static PyObject *Menu_NewMenu(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuHandle _rv; - MenuID menuID; - Str255 menuTitle; -#ifndef NewMenu - PyMac_PRECHECK(NewMenu); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &menuID, - PyMac_GetStr255, menuTitle)) - return NULL; - _rv = NewMenu(menuID, - menuTitle); - _res = Py_BuildValue("O&", - MenuObj_New, _rv); - return _res; -} - -static PyObject *Menu_MacGetMenu(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuHandle _rv; - short resourceID; -#ifndef MacGetMenu - PyMac_PRECHECK(MacGetMenu); -#endif - if (!PyArg_ParseTuple(_args, "h", - &resourceID)) - return NULL; - _rv = MacGetMenu(resourceID); - _res = Py_BuildValue("O&", - MenuObj_New, _rv); - return _res; -} - -static PyObject *Menu_CreateNewMenu(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuID inMenuID; - MenuAttributes inMenuAttributes; - MenuHandle outMenuRef; -#ifndef CreateNewMenu - PyMac_PRECHECK(CreateNewMenu); -#endif - if (!PyArg_ParseTuple(_args, "hl", - &inMenuID, - &inMenuAttributes)) - return NULL; - _err = CreateNewMenu(inMenuID, - inMenuAttributes, - &outMenuRef); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - MenuObj_New, outMenuRef); - return _res; -} - -static PyObject *Menu_MenuKey(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - CharParameter ch; -#ifndef MenuKey - PyMac_PRECHECK(MenuKey); -#endif - if (!PyArg_ParseTuple(_args, "h", - &ch)) - return NULL; - _rv = MenuKey(ch); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Menu_MenuSelect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - Point startPt; -#ifndef MenuSelect - PyMac_PRECHECK(MenuSelect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &startPt)) - return NULL; - _rv = MenuSelect(startPt); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Menu_MenuChoice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef MenuChoice - PyMac_PRECHECK(MenuChoice); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MenuChoice(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Menu_MenuEvent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt32 _rv; - EventRecord inEvent; -#ifndef MenuEvent - PyMac_PRECHECK(MenuEvent); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetEventRecord, &inEvent)) - return NULL; - _rv = MenuEvent(&inEvent); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Menu_GetMBarHeight(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetMBarHeight - PyMac_PRECHECK(GetMBarHeight); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMBarHeight(); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Menu_MacDrawMenuBar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef MacDrawMenuBar - PyMac_PRECHECK(MacDrawMenuBar); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - MacDrawMenuBar(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_InvalMenuBar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef InvalMenuBar - PyMac_PRECHECK(InvalMenuBar); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - InvalMenuBar(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_HiliteMenu(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuID menuID; -#ifndef HiliteMenu - PyMac_PRECHECK(HiliteMenu); -#endif - if (!PyArg_ParseTuple(_args, "h", - &menuID)) - return NULL; - HiliteMenu(menuID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_GetNewMBar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuBarHandle _rv; - short menuBarID; -#ifndef GetNewMBar - PyMac_PRECHECK(GetNewMBar); -#endif - if (!PyArg_ParseTuple(_args, "h", - &menuBarID)) - return NULL; - _rv = GetNewMBar(menuBarID); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Menu_GetMenuBar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuBarHandle _rv; -#ifndef GetMenuBar - PyMac_PRECHECK(GetMenuBar); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMenuBar(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Menu_SetMenuBar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuBarHandle mbar; -#ifndef SetMenuBar - PyMac_PRECHECK(SetMenuBar); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &mbar)) - return NULL; - SetMenuBar(mbar); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_DuplicateMenuBar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuBarHandle inMbar; - MenuBarHandle outMbar; -#ifndef DuplicateMenuBar - PyMac_PRECHECK(DuplicateMenuBar); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &inMbar)) - return NULL; - _err = DuplicateMenuBar(inMbar, - &outMbar); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, outMbar); - return _res; -} - -static PyObject *Menu_DisposeMenuBar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuBarHandle inMbar; -#ifndef DisposeMenuBar - PyMac_PRECHECK(DisposeMenuBar); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &inMbar)) - return NULL; - _err = DisposeMenuBar(inMbar); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_GetMenuHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuHandle _rv; - MenuID menuID; -#ifndef GetMenuHandle - PyMac_PRECHECK(GetMenuHandle); -#endif - if (!PyArg_ParseTuple(_args, "h", - &menuID)) - return NULL; - _rv = GetMenuHandle(menuID); - _res = Py_BuildValue("O&", - MenuObj_New, _rv); - return _res; -} - -static PyObject *Menu_MacDeleteMenu(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuID menuID; -#ifndef MacDeleteMenu - PyMac_PRECHECK(MacDeleteMenu); -#endif - if (!PyArg_ParseTuple(_args, "h", - &menuID)) - return NULL; - MacDeleteMenu(menuID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_ClearMenuBar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ClearMenuBar - PyMac_PRECHECK(ClearMenuBar); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ClearMenuBar(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_SetMenuFlashCount(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short count; -#ifndef SetMenuFlashCount - PyMac_PRECHECK(SetMenuFlashCount); -#endif - if (!PyArg_ParseTuple(_args, "h", - &count)) - return NULL; - SetMenuFlashCount(count); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_FlashMenuBar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuID menuID; -#ifndef FlashMenuBar - PyMac_PRECHECK(FlashMenuBar); -#endif - if (!PyArg_ParseTuple(_args, "h", - &menuID)) - return NULL; - FlashMenuBar(menuID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_IsMenuBarVisible(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsMenuBarVisible - PyMac_PRECHECK(IsMenuBarVisible); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsMenuBarVisible(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Menu_ShowMenuBar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ShowMenuBar - PyMac_PRECHECK(ShowMenuBar); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ShowMenuBar(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_HideMenuBar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef HideMenuBar - PyMac_PRECHECK(HideMenuBar); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - HideMenuBar(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_AcquireRootMenu(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuHandle _rv; -#ifndef AcquireRootMenu - PyMac_PRECHECK(AcquireRootMenu); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = AcquireRootMenu(); - _res = Py_BuildValue("O&", - MenuObj_New, _rv); - return _res; -} - -static PyObject *Menu_DeleteMCEntries(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuID menuID; - short menuItem; -#ifndef DeleteMCEntries - PyMac_PRECHECK(DeleteMCEntries); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &menuID, - &menuItem)) - return NULL; - DeleteMCEntries(menuID, - menuItem); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_InitContextualMenus(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef InitContextualMenus - PyMac_PRECHECK(InitContextualMenus); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = InitContextualMenus(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_IsShowContextualMenuClick(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - EventRecord inEvent; -#ifndef IsShowContextualMenuClick - PyMac_PRECHECK(IsShowContextualMenuClick); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetEventRecord, &inEvent)) - return NULL; - _rv = IsShowContextualMenuClick(&inEvent); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Menu_LMGetTheMenu(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef LMGetTheMenu - PyMac_PRECHECK(LMGetTheMenu); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetTheMenu(); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Menu_as_Menu(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuHandle _rv; - Handle h; -#ifndef as_Menu - PyMac_PRECHECK(as_Menu); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &h)) - return NULL; - _rv = as_Menu(h); - _res = Py_BuildValue("O&", - MenuObj_New, _rv); - return _res; -} - -static PyObject *Menu_GetMenu(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuHandle _rv; - short resourceID; -#ifndef GetMenu - PyMac_PRECHECK(GetMenu); -#endif - if (!PyArg_ParseTuple(_args, "h", - &resourceID)) - return NULL; - _rv = GetMenu(resourceID); - _res = Py_BuildValue("O&", - MenuObj_New, _rv); - return _res; -} - -static PyObject *Menu_DeleteMenu(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short menuID; -#ifndef DeleteMenu - PyMac_PRECHECK(DeleteMenu); -#endif - if (!PyArg_ParseTuple(_args, "h", - &menuID)) - return NULL; - DeleteMenu(menuID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_DrawMenuBar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef DrawMenuBar - PyMac_PRECHECK(DrawMenuBar); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - DrawMenuBar(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_CountMenuItemsWithCommandID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ItemCount _rv; - MenuHandle inMenu; - MenuCommand inCommandID; -#ifndef CountMenuItemsWithCommandID - PyMac_PRECHECK(CountMenuItemsWithCommandID); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - OptMenuObj_Convert, &inMenu, - &inCommandID)) - return NULL; - _rv = CountMenuItemsWithCommandID(inMenu, - inCommandID); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Menu_GetIndMenuItemWithCommandID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuHandle inMenu; - MenuCommand inCommandID; - UInt32 inItemIndex; - MenuHandle outMenu; - MenuItemIndex outIndex; -#ifndef GetIndMenuItemWithCommandID - PyMac_PRECHECK(GetIndMenuItemWithCommandID); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - OptMenuObj_Convert, &inMenu, - &inCommandID, - &inItemIndex)) - return NULL; - _err = GetIndMenuItemWithCommandID(inMenu, - inCommandID, - inItemIndex, - &outMenu, - &outIndex); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&h", - MenuObj_New, outMenu, - outIndex); - return _res; -} - -static PyObject *Menu_EnableMenuCommand(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuHandle inMenu; - MenuCommand inCommandID; -#ifndef EnableMenuCommand - PyMac_PRECHECK(EnableMenuCommand); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - OptMenuObj_Convert, &inMenu, - &inCommandID)) - return NULL; - EnableMenuCommand(inMenu, - inCommandID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_DisableMenuCommand(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MenuHandle inMenu; - MenuCommand inCommandID; -#ifndef DisableMenuCommand - PyMac_PRECHECK(DisableMenuCommand); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - OptMenuObj_Convert, &inMenu, - &inCommandID)) - return NULL; - DisableMenuCommand(inMenu, - inCommandID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_IsMenuCommandEnabled(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - MenuHandle inMenu; - MenuCommand inCommandID; -#ifndef IsMenuCommandEnabled - PyMac_PRECHECK(IsMenuCommandEnabled); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - OptMenuObj_Convert, &inMenu, - &inCommandID)) - return NULL; - _rv = IsMenuCommandEnabled(inMenu, - inCommandID); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Menu_SetMenuCommandMark(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuHandle inMenu; - MenuCommand inCommandID; - UniChar inMark; -#ifndef SetMenuCommandMark - PyMac_PRECHECK(SetMenuCommandMark); -#endif - if (!PyArg_ParseTuple(_args, "O&lh", - OptMenuObj_Convert, &inMenu, - &inCommandID, - &inMark)) - return NULL; - _err = SetMenuCommandMark(inMenu, - inCommandID, - inMark); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Menu_GetMenuCommandMark(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuHandle inMenu; - MenuCommand inCommandID; - UniChar outMark; -#ifndef GetMenuCommandMark - PyMac_PRECHECK(GetMenuCommandMark); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - OptMenuObj_Convert, &inMenu, - &inCommandID)) - return NULL; - _err = GetMenuCommandMark(inMenu, - inCommandID, - &outMark); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - outMark); - return _res; -} - -static PyObject *Menu_GetMenuCommandPropertySize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuHandle inMenu; - MenuCommand inCommandID; - OSType inPropertyCreator; - OSType inPropertyTag; - ByteCount outSize; -#ifndef GetMenuCommandPropertySize - PyMac_PRECHECK(GetMenuCommandPropertySize); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&O&", - OptMenuObj_Convert, &inMenu, - &inCommandID, - PyMac_GetOSType, &inPropertyCreator, - PyMac_GetOSType, &inPropertyTag)) - return NULL; - _err = GetMenuCommandPropertySize(inMenu, - inCommandID, - inPropertyCreator, - inPropertyTag, - &outSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outSize); - return _res; -} - -static PyObject *Menu_RemoveMenuCommandProperty(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuHandle inMenu; - MenuCommand inCommandID; - OSType inPropertyCreator; - OSType inPropertyTag; -#ifndef RemoveMenuCommandProperty - PyMac_PRECHECK(RemoveMenuCommandProperty); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&O&", - OptMenuObj_Convert, &inMenu, - &inCommandID, - PyMac_GetOSType, &inPropertyCreator, - PyMac_GetOSType, &inPropertyTag)) - return NULL; - _err = RemoveMenuCommandProperty(inMenu, - inCommandID, - inPropertyCreator, - inPropertyTag); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} -#endif /* __LP64__ */ - -static PyMethodDef Menu_methods[] = { -#ifndef __LP64__ - {"NewMenu", (PyCFunction)Menu_NewMenu, 1, - PyDoc_STR("(MenuID menuID, Str255 menuTitle) -> (MenuHandle _rv)")}, - {"MacGetMenu", (PyCFunction)Menu_MacGetMenu, 1, - PyDoc_STR("(short resourceID) -> (MenuHandle _rv)")}, - {"CreateNewMenu", (PyCFunction)Menu_CreateNewMenu, 1, - PyDoc_STR("(MenuID inMenuID, MenuAttributes inMenuAttributes) -> (MenuHandle outMenuRef)")}, - {"MenuKey", (PyCFunction)Menu_MenuKey, 1, - PyDoc_STR("(CharParameter ch) -> (long _rv)")}, - {"MenuSelect", (PyCFunction)Menu_MenuSelect, 1, - PyDoc_STR("(Point startPt) -> (long _rv)")}, - {"MenuChoice", (PyCFunction)Menu_MenuChoice, 1, - PyDoc_STR("() -> (long _rv)")}, - {"MenuEvent", (PyCFunction)Menu_MenuEvent, 1, - PyDoc_STR("(EventRecord inEvent) -> (UInt32 _rv)")}, - {"GetMBarHeight", (PyCFunction)Menu_GetMBarHeight, 1, - PyDoc_STR("() -> (short _rv)")}, - {"MacDrawMenuBar", (PyCFunction)Menu_MacDrawMenuBar, 1, - PyDoc_STR("() -> None")}, - {"InvalMenuBar", (PyCFunction)Menu_InvalMenuBar, 1, - PyDoc_STR("() -> None")}, - {"HiliteMenu", (PyCFunction)Menu_HiliteMenu, 1, - PyDoc_STR("(MenuID menuID) -> None")}, - {"GetNewMBar", (PyCFunction)Menu_GetNewMBar, 1, - PyDoc_STR("(short menuBarID) -> (MenuBarHandle _rv)")}, - {"GetMenuBar", (PyCFunction)Menu_GetMenuBar, 1, - PyDoc_STR("() -> (MenuBarHandle _rv)")}, - {"SetMenuBar", (PyCFunction)Menu_SetMenuBar, 1, - PyDoc_STR("(MenuBarHandle mbar) -> None")}, - {"DuplicateMenuBar", (PyCFunction)Menu_DuplicateMenuBar, 1, - PyDoc_STR("(MenuBarHandle inMbar) -> (MenuBarHandle outMbar)")}, - {"DisposeMenuBar", (PyCFunction)Menu_DisposeMenuBar, 1, - PyDoc_STR("(MenuBarHandle inMbar) -> None")}, - {"GetMenuHandle", (PyCFunction)Menu_GetMenuHandle, 1, - PyDoc_STR("(MenuID menuID) -> (MenuHandle _rv)")}, - {"MacDeleteMenu", (PyCFunction)Menu_MacDeleteMenu, 1, - PyDoc_STR("(MenuID menuID) -> None")}, - {"ClearMenuBar", (PyCFunction)Menu_ClearMenuBar, 1, - PyDoc_STR("() -> None")}, - {"SetMenuFlashCount", (PyCFunction)Menu_SetMenuFlashCount, 1, - PyDoc_STR("(short count) -> None")}, - {"FlashMenuBar", (PyCFunction)Menu_FlashMenuBar, 1, - PyDoc_STR("(MenuID menuID) -> None")}, - {"IsMenuBarVisible", (PyCFunction)Menu_IsMenuBarVisible, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"ShowMenuBar", (PyCFunction)Menu_ShowMenuBar, 1, - PyDoc_STR("() -> None")}, - {"HideMenuBar", (PyCFunction)Menu_HideMenuBar, 1, - PyDoc_STR("() -> None")}, - {"AcquireRootMenu", (PyCFunction)Menu_AcquireRootMenu, 1, - PyDoc_STR("() -> (MenuHandle _rv)")}, - {"DeleteMCEntries", (PyCFunction)Menu_DeleteMCEntries, 1, - PyDoc_STR("(MenuID menuID, short menuItem) -> None")}, - {"InitContextualMenus", (PyCFunction)Menu_InitContextualMenus, 1, - PyDoc_STR("() -> None")}, - {"IsShowContextualMenuClick", (PyCFunction)Menu_IsShowContextualMenuClick, 1, - PyDoc_STR("(EventRecord inEvent) -> (Boolean _rv)")}, - {"LMGetTheMenu", (PyCFunction)Menu_LMGetTheMenu, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"as_Menu", (PyCFunction)Menu_as_Menu, 1, - PyDoc_STR("(Handle h) -> (MenuHandle _rv)")}, - {"GetMenu", (PyCFunction)Menu_GetMenu, 1, - PyDoc_STR("(short resourceID) -> (MenuHandle _rv)")}, - {"DeleteMenu", (PyCFunction)Menu_DeleteMenu, 1, - PyDoc_STR("(short menuID) -> None")}, - {"DrawMenuBar", (PyCFunction)Menu_DrawMenuBar, 1, - PyDoc_STR("() -> None")}, - {"CountMenuItemsWithCommandID", (PyCFunction)Menu_CountMenuItemsWithCommandID, 1, - PyDoc_STR("(MenuHandle inMenu, MenuCommand inCommandID) -> (ItemCount _rv)")}, - {"GetIndMenuItemWithCommandID", (PyCFunction)Menu_GetIndMenuItemWithCommandID, 1, - PyDoc_STR("(MenuHandle inMenu, MenuCommand inCommandID, UInt32 inItemIndex) -> (MenuHandle outMenu, MenuItemIndex outIndex)")}, - {"EnableMenuCommand", (PyCFunction)Menu_EnableMenuCommand, 1, - PyDoc_STR("(MenuHandle inMenu, MenuCommand inCommandID) -> None")}, - {"DisableMenuCommand", (PyCFunction)Menu_DisableMenuCommand, 1, - PyDoc_STR("(MenuHandle inMenu, MenuCommand inCommandID) -> None")}, - {"IsMenuCommandEnabled", (PyCFunction)Menu_IsMenuCommandEnabled, 1, - PyDoc_STR("(MenuHandle inMenu, MenuCommand inCommandID) -> (Boolean _rv)")}, - {"SetMenuCommandMark", (PyCFunction)Menu_SetMenuCommandMark, 1, - PyDoc_STR("(MenuHandle inMenu, MenuCommand inCommandID, UniChar inMark) -> None")}, - {"GetMenuCommandMark", (PyCFunction)Menu_GetMenuCommandMark, 1, - PyDoc_STR("(MenuHandle inMenu, MenuCommand inCommandID) -> (UniChar outMark)")}, - {"GetMenuCommandPropertySize", (PyCFunction)Menu_GetMenuCommandPropertySize, 1, - PyDoc_STR("(MenuHandle inMenu, MenuCommand inCommandID, OSType inPropertyCreator, OSType inPropertyTag) -> (ByteCount outSize)")}, - {"RemoveMenuCommandProperty", (PyCFunction)Menu_RemoveMenuCommandProperty, 1, - PyDoc_STR("(MenuHandle inMenu, MenuCommand inCommandID, OSType inPropertyCreator, OSType inPropertyTag) -> None")}, -#endif /* __LP64__ */ - {NULL, NULL, 0} -}; - - - - -void init_Menu(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; - - - - PyMac_INIT_TOOLBOX_OBJECT_NEW(MenuHandle, MenuObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MenuHandle, MenuObj_Convert); -#endif /* __LP64__ */ - - - m = Py_InitModule("_Menu", Menu_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - Menu_Error = PyMac_GetOSErrException(); - if (Menu_Error == NULL || - PyDict_SetItemString(d, "Error", Menu_Error) != 0) - return; - Menu_Type.ob_type = &PyType_Type; - if (PyType_Ready(&Menu_Type) < 0) return; - Py_INCREF(&Menu_Type); - PyModule_AddObject(m, "Menu", (PyObject *)&Menu_Type); - /* Backward-compatible name */ - Py_INCREF(&Menu_Type); - PyModule_AddObject(m, "MenuType", (PyObject *)&Menu_Type); -#endif /* __LP64__ */ -} - -/* ======================== End module _Menu ======================== */ - diff --git a/project/jni/python/src/Mac/Modules/menu/menuedit.py b/project/jni/python/src/Mac/Modules/menu/menuedit.py deleted file mode 100644 index b74301d3a..000000000 --- a/project/jni/python/src/Mac/Modules/menu/menuedit.py +++ /dev/null @@ -1,123 +0,0 @@ -f = Function(MenuHandle, 'as_Menu', (Handle, 'h', InMode)) -functions.append(f) - -f = Method(Handle, 'as_Resource', (MenuHandle, 'h', InMode)) -methods.append(f) - -# The following have "Mac" prepended to their names in the include file -# since UH 3.1, sigh... -f = Function(MenuHandle, 'GetMenu', - (short, 'resourceID', InMode), -) -functions.append(f) - -f = Method(void, 'AppendMenu', - (MenuHandle, 'menu', InMode), - (ConstStr255Param, 'data', InMode), -) -methods.append(f) - -f = Method(void, 'InsertMenu', - (MenuHandle, 'theMenu', InMode), - (short, 'beforeID', InMode), -) -methods.append(f) - -f = Function(void, 'DeleteMenu', - (short, 'menuID', InMode), -) -functions.append(f) - -f = Method(void, 'InsertMenuItem', - (MenuHandle, 'theMenu', InMode), - (ConstStr255Param, 'itemString', InMode), - (short, 'afterItem', InMode), -) -methods.append(f) - -f = Method(void, 'EnableMenuItem', - (MenuHandle, 'theMenu', InMode), - (UInt16, 'item', InMode), -) -methods.append(f) - -f = Method(void, 'CheckMenuItem', - (MenuRef, 'theMenu', InMode), - (short, 'item', InMode), - (Boolean, 'checked', InMode), -) -methods.append(f) - - -f = Function(void, 'DrawMenuBar', -) -functions.append(f) - - -# -# The following functions take an *optional* MenuRef as their first argument -# - -f = Function(ItemCount, 'CountMenuItemsWithCommandID', - (OptMenuRef, 'inMenu', InMode), - (MenuCommand, 'inCommandID', InMode), -) -functions.append(f) - -f = Function(OSStatus, 'GetIndMenuItemWithCommandID', - (OptMenuRef, 'inMenu', InMode), - (MenuCommand, 'inCommandID', InMode), - (UInt32, 'inItemIndex', InMode), - (MenuRef, 'outMenu', OutMode), - (MenuItemIndex, 'outIndex', OutMode), -) -functions.append(f) - -f = Function(void, 'EnableMenuCommand', - (OptMenuRef, 'inMenu', InMode), - (MenuCommand, 'inCommandID', InMode), -) -functions.append(f) - -f = Function(void, 'DisableMenuCommand', - (OptMenuRef, 'inMenu', InMode), - (MenuCommand, 'inCommandID', InMode), -) -functions.append(f) - -f = Function(Boolean, 'IsMenuCommandEnabled', - (OptMenuRef, 'inMenu', InMode), - (MenuCommand, 'inCommandID', InMode), -) -functions.append(f) - -f = Function(OSStatus, 'SetMenuCommandMark', - (OptMenuRef, 'inMenu', InMode), - (MenuCommand, 'inCommandID', InMode), - (UniChar, 'inMark', InMode), -) -functions.append(f) - -f = Function(OSStatus, 'GetMenuCommandMark', - (OptMenuRef, 'inMenu', InMode), - (MenuCommand, 'inCommandID', InMode), - (UniChar, 'outMark', OutMode), -) -functions.append(f) - -f = Function(OSStatus, 'GetMenuCommandPropertySize', - (OptMenuRef, 'inMenu', InMode), - (MenuCommand, 'inCommandID', InMode), - (OSType, 'inPropertyCreator', InMode), - (OSType, 'inPropertyTag', InMode), - (ByteCount, 'outSize', OutMode), -) -functions.append(f) - -f = Function(OSStatus, 'RemoveMenuCommandProperty', - (OptMenuRef, 'inMenu', InMode), - (MenuCommand, 'inCommandID', InMode), - (OSType, 'inPropertyCreator', InMode), - (OSType, 'inPropertyTag', InMode), -) -functions.append(f) diff --git a/project/jni/python/src/Mac/Modules/menu/menuscan.py b/project/jni/python/src/Mac/Modules/menu/menuscan.py deleted file mode 100644 index 8151581fe..000000000 --- a/project/jni/python/src/Mac/Modules/menu/menuscan.py +++ /dev/null @@ -1,96 +0,0 @@ -# Scan , generating menugen.py. -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) - -from scantools import Scanner - -def main(): - input = "Menus.h" - output = "menugen.py" - defsoutput = TOOLBOXDIR + "Menus.py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now doing 'import menusupport' ===" - import menusupport - print "=== Done. It's up to you to compile Menumodule.c ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t in ("MenuHandle", "MenuRef") and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def makeblacklistnames(self): - return [ -## "IsShowContextualMenuClick", # Can't find it in the library -## "InitContextualMenus", # ditto - "GetMenuItemProperty", # difficult for the moment - "GetMenuItemPropertySize", - "SetMenuItemProperty", - "RemoveMenuItemProperty", - "SetMenuCommandProperty", - "GetMenuCommandProperty", - "GetMenuTitle", # Funny arg/returnvalue - "SetMenuTitle", - "SetMenuTitleIcon", # void* - # OS8 calls: - 'GetMenuItemRefCon2', - 'SetMenuItemRefCon2', - 'EnableItem', - 'DisableItem', - 'CheckItem', - 'CountMItems', - 'OpenDeskAcc', - 'SystemEdit', - 'SystemMenu', - 'SetMenuFlash', - 'InitMenus', - 'InitProcMenu', - ] - - def makeblacklisttypes(self): - return [ - 'MCTableHandle', - 'MCEntryPtr', - 'MCTablePtr', - 'AEDesc_ptr', # For now: doable, but not easy - 'ProcessSerialNumber', # ditto - "MenuDefSpecPtr", # Too difficult for now - "MenuDefSpec_ptr", # ditto - "MenuTrackingData", - "void_ptr", # Don't know yet. - "EventRef", # For now, not exported yet. - "MenuItemDataPtr", # Not yet. - "MenuItemDataRec_ptr", - ] - - def makerepairinstructions(self): - return [ - ([("Str255", "itemString", "InMode")], - [("*", "*", "OutMode")]), - - ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")], - [("InBuffer", "*", "*")]), - - ([("void", "*", "OutMode"), ("long", "*", "InMode"), - ("long", "*", "OutMode")], - [("VarVarOutBuffer", "*", "InOutMode")]), - ([("MenuRef", 'outHierMenu', "OutMode")], - [("OptMenuRef", 'outHierMenu', "OutMode")]), - ] - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/menu/menusupport.py b/project/jni/python/src/Mac/Modules/menu/menusupport.py deleted file mode 100644 index a04b7553c..000000000 --- a/project/jni/python/src/Mac/Modules/menu/menusupport.py +++ /dev/null @@ -1,108 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'Menus.h' # The Apple header file -MODNAME = '_Menu' # The name of the module -OBJECTNAME = 'Menu' # The basic name of the objects used here - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Menu' # The prefix for module-wide routines -OBJECTTYPE = OBJECTNAME + 'Handle' # The C type used to represent them -OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -EXTRAFILE = string.lower(MODPREFIX) + 'edit.py' # A similar file but hand-made -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects - -MenuHandle = OpaqueByValueType(OBJECTTYPE, OBJECTPREFIX) -MenuRef = MenuHandle -OptMenuRef = OpaqueByValueType(OBJECTTYPE, "Opt" + OBJECTPREFIX) -Handle = OpaqueByValueType("Handle", "ResObj") -MenuBarHandle = OpaqueByValueType("MenuBarHandle", "ResObj") -MenuID = Type("MenuID", "h") -MenuItemIndex = Type("MenuItemIndex", "h") -MenuItemID = Type("MenuItemID", "l") -MenuCommand = Type("MenuCommand", "l") -MenuAttributes = Type("MenuAttributes", "l") -MenuItemAttributes = Type("MenuItemAttributes", "l") -unsigned_char = Type('unsigned char', 'b') -FMFontFamily = Type("FMFontFamily", "h") -FMFontStyle = Type("FMFontStyle", "h") -UniChar = Type("UniChar", "h") - -includestuff = includestuff + """ -#include - - -#ifdef USE_TOOLBOX_OBJECT_GLUE - -extern PyObject *_MenuObj_New(MenuHandle); -extern int _MenuObj_Convert(PyObject *, MenuHandle *); - -#define MenuObj_New _MenuObj_New -#define MenuObj_Convert _MenuObj_Convert -#endif - -#define as_Menu(h) ((MenuHandle)h) -#define as_Resource(h) ((Handle)h) - - -/* Alternative version of MenuObj_New, which returns None for NULL argument */ -PyObject *OptMenuObj_New(MenuRef itself) -{ - if (itself == NULL) { - Py_INCREF(Py_None); - return Py_None; - } - return MenuObj_New(itself); -} - -/* Alternative version of MenuObj_Convert, which returns NULL for a None argument */ -int OptMenuObj_Convert(PyObject *v, MenuRef *p_itself) -{ - if ( v == Py_None ) { - *p_itself = NULL; - return 1; - } - return MenuObj_Convert(v, p_itself); -} -""" - -initstuff = initstuff + """ - PyMac_INIT_TOOLBOX_OBJECT_NEW(MenuHandle, MenuObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MenuHandle, MenuObj_Convert); -""" - -class MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - pass - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE) -module.addobject(object) - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -Method = OSErrWeakLinkMethodGenerator - -# Create and populate the lists -functions = [] -methods = [] -execfile(INPUTFILE) -execfile(EXTRAFILE) - -# add the populated lists to the generator groups -for f in functions: module.add(f) -for f in methods: object.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/mlte/_Mltemodule.c b/project/jni/python/src/Mac/Modules/mlte/_Mltemodule.c deleted file mode 100644 index 1a6b6a4ce..000000000 --- a/project/jni/python/src/Mac/Modules/mlte/_Mltemodule.c +++ /dev/null @@ -1,1690 +0,0 @@ - -/* ========================== Module _Mlte ========================== */ - -#include "Python.h" - -#ifndef __LP64__ - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -/* For now we declare them forward here. They'll go to mactoolbox later */ -static PyObject *TXNObj_New(TXNObject); -static int TXNObj_Convert(PyObject *, TXNObject *); -static PyObject *TXNFontMenuObj_New(TXNFontMenuObject); -static int TXNFontMenuObj_Convert(PyObject *, TXNFontMenuObject *); - -// ADD declarations -#ifdef NOTYET_USE_TOOLBOX_OBJECT_GLUE -//extern PyObject *_CFTypeRefObj_New(CFTypeRef); -//extern int _CFTypeRefObj_Convert(PyObject *, CFTypeRef *); - -//#define CFTypeRefObj_New _CFTypeRefObj_New -//#define CFTypeRefObj_Convert _CFTypeRefObj_Convert -#endif - -/* -** Parse an optional fsspec -*/ -static int -OptFSSpecPtr_Convert(PyObject *v, FSSpec **p_itself) -{ - static FSSpec fss; - if (v == Py_None) - { - *p_itself = NULL; - return 1; - } - *p_itself = &fss; - return PyMac_GetFSSpec(v, *p_itself); -} - -/* -** Parse an optional GWorld -*/ -static int -OptGWorldObj_Convert(PyObject *v, GWorldPtr *p_itself) -{ - if (v == Py_None) - { - *p_itself = NULL; - return 1; - } - return GWorldObj_Convert(v, p_itself); -} - - -static PyObject *Mlte_Error; - -/* --------------------- Object type TXNObject ---------------------- */ - -PyTypeObject TXNObject_Type; - -#define TXNObj_Check(x) ((x)->ob_type == &TXNObject_Type || PyObject_TypeCheck((x), &TXNObject_Type)) - -typedef struct TXNObjectObject { - PyObject_HEAD - TXNObject ob_itself; -} TXNObjectObject; - -PyObject *TXNObj_New(TXNObject itself) -{ - TXNObjectObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - it = PyObject_NEW(TXNObjectObject, &TXNObject_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int TXNObj_Convert(PyObject *v, TXNObject *p_itself) -{ - if (!TXNObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "TXNObject required"); - return 0; - } - *p_itself = ((TXNObjectObject *)v)->ob_itself; - return 1; -} - -static void TXNObj_dealloc(TXNObjectObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *TXNObj_TXNDeleteObject(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TXNDeleteObject - PyMac_PRECHECK(TXNDeleteObject); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TXNDeleteObject(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNResizeFrame(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt32 iWidth; - UInt32 iHeight; - TXNFrameID iTXNFrameID; -#ifndef TXNResizeFrame - PyMac_PRECHECK(TXNResizeFrame); -#endif - if (!PyArg_ParseTuple(_args, "lll", - &iWidth, - &iHeight, - &iTXNFrameID)) - return NULL; - TXNResizeFrame(_self->ob_itself, - iWidth, - iHeight, - iTXNFrameID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNSetFrameBounds(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 iTop; - SInt32 iLeft; - SInt32 iBottom; - SInt32 iRight; - TXNFrameID iTXNFrameID; -#ifndef TXNSetFrameBounds - PyMac_PRECHECK(TXNSetFrameBounds); -#endif - if (!PyArg_ParseTuple(_args, "lllll", - &iTop, - &iLeft, - &iBottom, - &iRight, - &iTXNFrameID)) - return NULL; - TXNSetFrameBounds(_self->ob_itself, - iTop, - iLeft, - iBottom, - iRight, - iTXNFrameID); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNKeyDown(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventRecord iEvent; -#ifndef TXNKeyDown - PyMac_PRECHECK(TXNKeyDown); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetEventRecord, &iEvent)) - return NULL; - TXNKeyDown(_self->ob_itself, - &iEvent); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNAdjustCursor(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle ioCursorRgn; -#ifndef TXNAdjustCursor - PyMac_PRECHECK(TXNAdjustCursor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - OptResObj_Convert, &ioCursorRgn)) - return NULL; - TXNAdjustCursor(_self->ob_itself, - ioCursorRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNClick(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventRecord iEvent; -#ifndef TXNClick - PyMac_PRECHECK(TXNClick); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetEventRecord, &iEvent)) - return NULL; - TXNClick(_self->ob_itself, - &iEvent); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNSelectAll(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TXNSelectAll - PyMac_PRECHECK(TXNSelectAll); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TXNSelectAll(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNFocus(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean iBecomingFocused; -#ifndef TXNFocus - PyMac_PRECHECK(TXNFocus); -#endif - if (!PyArg_ParseTuple(_args, "b", - &iBecomingFocused)) - return NULL; - TXNFocus(_self->ob_itself, - iBecomingFocused); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNUpdate(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TXNUpdate - PyMac_PRECHECK(TXNUpdate); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TXNUpdate(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNDraw(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GWorldPtr iDrawPort; -#ifndef TXNDraw - PyMac_PRECHECK(TXNDraw); -#endif - if (!PyArg_ParseTuple(_args, "O&", - OptGWorldObj_Convert, &iDrawPort)) - return NULL; - TXNDraw(_self->ob_itself, - iDrawPort); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNForceUpdate(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TXNForceUpdate - PyMac_PRECHECK(TXNForceUpdate); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TXNForceUpdate(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNGetSleepTicks(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt32 _rv; -#ifndef TXNGetSleepTicks - PyMac_PRECHECK(TXNGetSleepTicks); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TXNGetSleepTicks(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TXNObj_TXNIdle(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TXNIdle - PyMac_PRECHECK(TXNIdle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TXNIdle(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNGrowWindow(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - EventRecord iEvent; -#ifndef TXNGrowWindow - PyMac_PRECHECK(TXNGrowWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetEventRecord, &iEvent)) - return NULL; - TXNGrowWindow(_self->ob_itself, - &iEvent); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNZoomWindow(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 iPart; -#ifndef TXNZoomWindow - PyMac_PRECHECK(TXNZoomWindow); -#endif - if (!PyArg_ParseTuple(_args, "h", - &iPart)) - return NULL; - TXNZoomWindow(_self->ob_itself, - iPart); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNCanUndo(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - TXNActionKey oTXNActionKey; -#ifndef TXNCanUndo - PyMac_PRECHECK(TXNCanUndo); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TXNCanUndo(_self->ob_itself, - &oTXNActionKey); - _res = Py_BuildValue("bl", - _rv, - oTXNActionKey); - return _res; -} - -static PyObject *TXNObj_TXNUndo(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TXNUndo - PyMac_PRECHECK(TXNUndo); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TXNUndo(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNCanRedo(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - TXNActionKey oTXNActionKey; -#ifndef TXNCanRedo - PyMac_PRECHECK(TXNCanRedo); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TXNCanRedo(_self->ob_itself, - &oTXNActionKey); - _res = Py_BuildValue("bl", - _rv, - oTXNActionKey); - return _res; -} - -static PyObject *TXNObj_TXNRedo(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TXNRedo - PyMac_PRECHECK(TXNRedo); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TXNRedo(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNCut(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef TXNCut - PyMac_PRECHECK(TXNCut); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TXNCut(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNCopy(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef TXNCopy - PyMac_PRECHECK(TXNCopy); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TXNCopy(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNPaste(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef TXNPaste - PyMac_PRECHECK(TXNPaste); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TXNPaste(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNClear(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef TXNClear - PyMac_PRECHECK(TXNClear); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TXNClear(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNGetSelection(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TXNOffset oStartOffset; - TXNOffset oEndOffset; -#ifndef TXNGetSelection - PyMac_PRECHECK(TXNGetSelection); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TXNGetSelection(_self->ob_itself, - &oStartOffset, - &oEndOffset); - _res = Py_BuildValue("ll", - oStartOffset, - oEndOffset); - return _res; -} - -static PyObject *TXNObj_TXNShowSelection(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean iShowEnd; -#ifndef TXNShowSelection - PyMac_PRECHECK(TXNShowSelection); -#endif - if (!PyArg_ParseTuple(_args, "b", - &iShowEnd)) - return NULL; - TXNShowSelection(_self->ob_itself, - iShowEnd); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNIsSelectionEmpty(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef TXNIsSelectionEmpty - PyMac_PRECHECK(TXNIsSelectionEmpty); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TXNIsSelectionEmpty(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *TXNObj_TXNSetSelection(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - TXNOffset iStartOffset; - TXNOffset iEndOffset; -#ifndef TXNSetSelection - PyMac_PRECHECK(TXNSetSelection); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &iStartOffset, - &iEndOffset)) - return NULL; - _err = TXNSetSelection(_self->ob_itself, - iStartOffset, - iEndOffset); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNCountRunsInRange(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - TXNOffset iStartOffset; - TXNOffset iEndOffset; - ItemCount oRunCount; -#ifndef TXNCountRunsInRange - PyMac_PRECHECK(TXNCountRunsInRange); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &iStartOffset, - &iEndOffset)) - return NULL; - _err = TXNCountRunsInRange(_self->ob_itself, - iStartOffset, - iEndOffset, - &oRunCount); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - oRunCount); - return _res; -} - -static PyObject *TXNObj_TXNDataSize(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ByteCount _rv; -#ifndef TXNDataSize - PyMac_PRECHECK(TXNDataSize); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TXNDataSize(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TXNObj_TXNGetData(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - TXNOffset iStartOffset; - TXNOffset iEndOffset; - Handle oDataHandle; -#ifndef TXNGetData - PyMac_PRECHECK(TXNGetData); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &iStartOffset, - &iEndOffset)) - return NULL; - _err = TXNGetData(_self->ob_itself, - iStartOffset, - iEndOffset, - &oDataHandle); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, oDataHandle); - return _res; -} - -static PyObject *TXNObj_TXNGetDataEncoded(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - TXNOffset iStartOffset; - TXNOffset iEndOffset; - Handle oDataHandle; - TXNDataType iEncoding; -#ifndef TXNGetDataEncoded - PyMac_PRECHECK(TXNGetDataEncoded); -#endif - if (!PyArg_ParseTuple(_args, "llO&", - &iStartOffset, - &iEndOffset, - PyMac_GetOSType, &iEncoding)) - return NULL; - _err = TXNGetDataEncoded(_self->ob_itself, - iStartOffset, - iEndOffset, - &oDataHandle, - iEncoding); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, oDataHandle); - return _res; -} - -static PyObject *TXNObj_TXNSetDataFromFile(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - SInt16 iFileRefNum; - OSType iFileType; - ByteCount iFileLength; - TXNOffset iStartOffset; - TXNOffset iEndOffset; -#ifndef TXNSetDataFromFile - PyMac_PRECHECK(TXNSetDataFromFile); -#endif - if (!PyArg_ParseTuple(_args, "hO&lll", - &iFileRefNum, - PyMac_GetOSType, &iFileType, - &iFileLength, - &iStartOffset, - &iEndOffset)) - return NULL; - _err = TXNSetDataFromFile(_self->ob_itself, - iFileRefNum, - iFileType, - iFileLength, - iStartOffset, - iEndOffset); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNGetChangeCount(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ItemCount _rv; -#ifndef TXNGetChangeCount - PyMac_PRECHECK(TXNGetChangeCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TXNGetChangeCount(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TXNObj_TXNSave(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - TXNFileType iType; - OSType iResType; - TXNPermanentTextEncodingType iPermanentEncoding; - FSSpec iFileSpecification; - SInt16 iDataReference; - SInt16 iResourceReference; -#ifndef TXNSave - PyMac_PRECHECK(TXNSave); -#endif - if (!PyArg_ParseTuple(_args, "O&O&lO&hh", - PyMac_GetOSType, &iType, - PyMac_GetOSType, &iResType, - &iPermanentEncoding, - PyMac_GetFSSpec, &iFileSpecification, - &iDataReference, - &iResourceReference)) - return NULL; - _err = TXNSave(_self->ob_itself, - iType, - iResType, - iPermanentEncoding, - &iFileSpecification, - iDataReference, - iResourceReference); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNRevert(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef TXNRevert - PyMac_PRECHECK(TXNRevert); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TXNRevert(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNPageSetup(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef TXNPageSetup - PyMac_PRECHECK(TXNPageSetup); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TXNPageSetup(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNPrint(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef TXNPrint - PyMac_PRECHECK(TXNPrint); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TXNPrint(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNGetViewRect(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect oViewRect; -#ifndef TXNGetViewRect - PyMac_PRECHECK(TXNGetViewRect); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TXNGetViewRect(_self->ob_itself, - &oViewRect); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &oViewRect); - return _res; -} - -static PyObject *TXNObj_TXNSetViewRect(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect iViewRect; -#ifndef TXNSetViewRect - PyMac_PRECHECK(TXNSetViewRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &iViewRect)) - return NULL; - TXNSetViewRect(_self->ob_itself, - &iViewRect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNAttachObjectToWindow(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - GWorldPtr iWindow; - Boolean iIsActualWindow; -#ifndef TXNAttachObjectToWindow - PyMac_PRECHECK(TXNAttachObjectToWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - GWorldObj_Convert, &iWindow, - &iIsActualWindow)) - return NULL; - _err = TXNAttachObjectToWindow(_self->ob_itself, - iWindow, - iIsActualWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNIsObjectAttachedToWindow(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef TXNIsObjectAttachedToWindow - PyMac_PRECHECK(TXNIsObjectAttachedToWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TXNIsObjectAttachedToWindow(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *TXNObj_TXNDragTracker(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TXNFrameID iTXNFrameID; - DragTrackingMessage iMessage; - WindowPtr iWindow; - DragReference iDragReference; - Boolean iDifferentObjectSameWindow; -#ifndef TXNDragTracker - PyMac_PRECHECK(TXNDragTracker); -#endif - if (!PyArg_ParseTuple(_args, "lhO&O&b", - &iTXNFrameID, - &iMessage, - WinObj_Convert, &iWindow, - DragObj_Convert, &iDragReference, - &iDifferentObjectSameWindow)) - return NULL; - _err = TXNDragTracker(_self->ob_itself, - iTXNFrameID, - iMessage, - iWindow, - iDragReference, - iDifferentObjectSameWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNDragReceiver(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TXNFrameID iTXNFrameID; - WindowPtr iWindow; - DragReference iDragReference; - Boolean iDifferentObjectSameWindow; -#ifndef TXNDragReceiver - PyMac_PRECHECK(TXNDragReceiver); -#endif - if (!PyArg_ParseTuple(_args, "lO&O&b", - &iTXNFrameID, - WinObj_Convert, &iWindow, - DragObj_Convert, &iDragReference, - &iDifferentObjectSameWindow)) - return NULL; - _err = TXNDragReceiver(_self->ob_itself, - iTXNFrameID, - iWindow, - iDragReference, - iDifferentObjectSameWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNActivate(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - TXNFrameID iTXNFrameID; - TXNScrollBarState iActiveState; -#ifndef TXNActivate - PyMac_PRECHECK(TXNActivate); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &iTXNFrameID, - &iActiveState)) - return NULL; - _err = TXNActivate(_self->ob_itself, - iTXNFrameID, - iActiveState); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNEchoMode(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UniChar iEchoCharacter; - TextEncoding iEncoding; - Boolean iOn; -#ifndef TXNEchoMode - PyMac_PRECHECK(TXNEchoMode); -#endif - if (!PyArg_ParseTuple(_args, "hlb", - &iEchoCharacter, - &iEncoding, - &iOn)) - return NULL; - _err = TXNEchoMode(_self->ob_itself, - iEchoCharacter, - iEncoding, - iOn); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNDoFontMenuSelection(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - TXNFontMenuObject iTXNFontMenuObject; - SInt16 iMenuID; - SInt16 iMenuItem; -#ifndef TXNDoFontMenuSelection - PyMac_PRECHECK(TXNDoFontMenuSelection); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - TXNFontMenuObj_Convert, &iTXNFontMenuObject, - &iMenuID, - &iMenuItem)) - return NULL; - _err = TXNDoFontMenuSelection(_self->ob_itself, - iTXNFontMenuObject, - iMenuID, - iMenuItem); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNPrepareFontMenu(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - TXNFontMenuObject iTXNFontMenuObject; -#ifndef TXNPrepareFontMenu - PyMac_PRECHECK(TXNPrepareFontMenu); -#endif - if (!PyArg_ParseTuple(_args, "O&", - TXNFontMenuObj_Convert, &iTXNFontMenuObject)) - return NULL; - _err = TXNPrepareFontMenu(_self->ob_itself, - iTXNFontMenuObject); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TXNObj_TXNPointToOffset(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Point iPoint; - TXNOffset oOffset; -#ifndef TXNPointToOffset - PyMac_PRECHECK(TXNPointToOffset); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &iPoint)) - return NULL; - _err = TXNPointToOffset(_self->ob_itself, - iPoint, - &oOffset); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - oOffset); - return _res; -} - -static PyObject *TXNObj_TXNOffsetToPoint(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - TXNOffset iOffset; - Point oPoint; -#ifndef TXNOffsetToPoint - PyMac_PRECHECK(TXNOffsetToPoint); -#endif - if (!PyArg_ParseTuple(_args, "l", - &iOffset)) - return NULL; - _err = TXNOffsetToPoint(_self->ob_itself, - iOffset, - &oPoint); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, oPoint); - return _res; -} - -static PyObject *TXNObj_TXNGetLineCount(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ItemCount oLineTotal; -#ifndef TXNGetLineCount - PyMac_PRECHECK(TXNGetLineCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TXNGetLineCount(_self->ob_itself, - &oLineTotal); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - oLineTotal); - return _res; -} - -static PyObject *TXNObj_TXNGetLineMetrics(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 iLineNumber; - Fixed oLineWidth; - Fixed oLineHeight; -#ifndef TXNGetLineMetrics - PyMac_PRECHECK(TXNGetLineMetrics); -#endif - if (!PyArg_ParseTuple(_args, "l", - &iLineNumber)) - return NULL; - _err = TXNGetLineMetrics(_self->ob_itself, - iLineNumber, - &oLineWidth, - &oLineHeight); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - PyMac_BuildFixed, oLineWidth, - PyMac_BuildFixed, oLineHeight); - return _res; -} - -static PyObject *TXNObj_TXNIsObjectAttachedToSpecificWindow(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr iWindow; - Boolean oAttached; -#ifndef TXNIsObjectAttachedToSpecificWindow - PyMac_PRECHECK(TXNIsObjectAttachedToSpecificWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &iWindow)) - return NULL; - _err = TXNIsObjectAttachedToSpecificWindow(_self->ob_itself, - iWindow, - &oAttached); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - oAttached); - return _res; -} - -static PyObject *TXNObj_TXNRecalcTextLayout(TXNObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TXNRecalcTextLayout - PyMac_PRECHECK(TXNRecalcTextLayout); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TXNRecalcTextLayout(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef TXNObj_methods[] = { - {"TXNDeleteObject", (PyCFunction)TXNObj_TXNDeleteObject, 1, - PyDoc_STR("() -> None")}, - {"TXNResizeFrame", (PyCFunction)TXNObj_TXNResizeFrame, 1, - PyDoc_STR("(UInt32 iWidth, UInt32 iHeight, TXNFrameID iTXNFrameID) -> None")}, - {"TXNSetFrameBounds", (PyCFunction)TXNObj_TXNSetFrameBounds, 1, - PyDoc_STR("(SInt32 iTop, SInt32 iLeft, SInt32 iBottom, SInt32 iRight, TXNFrameID iTXNFrameID) -> None")}, - {"TXNKeyDown", (PyCFunction)TXNObj_TXNKeyDown, 1, - PyDoc_STR("(EventRecord iEvent) -> None")}, - {"TXNAdjustCursor", (PyCFunction)TXNObj_TXNAdjustCursor, 1, - PyDoc_STR("(RgnHandle ioCursorRgn) -> None")}, - {"TXNClick", (PyCFunction)TXNObj_TXNClick, 1, - PyDoc_STR("(EventRecord iEvent) -> None")}, - {"TXNSelectAll", (PyCFunction)TXNObj_TXNSelectAll, 1, - PyDoc_STR("() -> None")}, - {"TXNFocus", (PyCFunction)TXNObj_TXNFocus, 1, - PyDoc_STR("(Boolean iBecomingFocused) -> None")}, - {"TXNUpdate", (PyCFunction)TXNObj_TXNUpdate, 1, - PyDoc_STR("() -> None")}, - {"TXNDraw", (PyCFunction)TXNObj_TXNDraw, 1, - PyDoc_STR("(GWorldPtr iDrawPort) -> None")}, - {"TXNForceUpdate", (PyCFunction)TXNObj_TXNForceUpdate, 1, - PyDoc_STR("() -> None")}, - {"TXNGetSleepTicks", (PyCFunction)TXNObj_TXNGetSleepTicks, 1, - PyDoc_STR("() -> (UInt32 _rv)")}, - {"TXNIdle", (PyCFunction)TXNObj_TXNIdle, 1, - PyDoc_STR("() -> None")}, - {"TXNGrowWindow", (PyCFunction)TXNObj_TXNGrowWindow, 1, - PyDoc_STR("(EventRecord iEvent) -> None")}, - {"TXNZoomWindow", (PyCFunction)TXNObj_TXNZoomWindow, 1, - PyDoc_STR("(SInt16 iPart) -> None")}, - {"TXNCanUndo", (PyCFunction)TXNObj_TXNCanUndo, 1, - PyDoc_STR("() -> (Boolean _rv, TXNActionKey oTXNActionKey)")}, - {"TXNUndo", (PyCFunction)TXNObj_TXNUndo, 1, - PyDoc_STR("() -> None")}, - {"TXNCanRedo", (PyCFunction)TXNObj_TXNCanRedo, 1, - PyDoc_STR("() -> (Boolean _rv, TXNActionKey oTXNActionKey)")}, - {"TXNRedo", (PyCFunction)TXNObj_TXNRedo, 1, - PyDoc_STR("() -> None")}, - {"TXNCut", (PyCFunction)TXNObj_TXNCut, 1, - PyDoc_STR("() -> None")}, - {"TXNCopy", (PyCFunction)TXNObj_TXNCopy, 1, - PyDoc_STR("() -> None")}, - {"TXNPaste", (PyCFunction)TXNObj_TXNPaste, 1, - PyDoc_STR("() -> None")}, - {"TXNClear", (PyCFunction)TXNObj_TXNClear, 1, - PyDoc_STR("() -> None")}, - {"TXNGetSelection", (PyCFunction)TXNObj_TXNGetSelection, 1, - PyDoc_STR("() -> (TXNOffset oStartOffset, TXNOffset oEndOffset)")}, - {"TXNShowSelection", (PyCFunction)TXNObj_TXNShowSelection, 1, - PyDoc_STR("(Boolean iShowEnd) -> None")}, - {"TXNIsSelectionEmpty", (PyCFunction)TXNObj_TXNIsSelectionEmpty, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"TXNSetSelection", (PyCFunction)TXNObj_TXNSetSelection, 1, - PyDoc_STR("(TXNOffset iStartOffset, TXNOffset iEndOffset) -> None")}, - {"TXNCountRunsInRange", (PyCFunction)TXNObj_TXNCountRunsInRange, 1, - PyDoc_STR("(TXNOffset iStartOffset, TXNOffset iEndOffset) -> (ItemCount oRunCount)")}, - {"TXNDataSize", (PyCFunction)TXNObj_TXNDataSize, 1, - PyDoc_STR("() -> (ByteCount _rv)")}, - {"TXNGetData", (PyCFunction)TXNObj_TXNGetData, 1, - PyDoc_STR("(TXNOffset iStartOffset, TXNOffset iEndOffset) -> (Handle oDataHandle)")}, - {"TXNGetDataEncoded", (PyCFunction)TXNObj_TXNGetDataEncoded, 1, - PyDoc_STR("(TXNOffset iStartOffset, TXNOffset iEndOffset, TXNDataType iEncoding) -> (Handle oDataHandle)")}, - {"TXNSetDataFromFile", (PyCFunction)TXNObj_TXNSetDataFromFile, 1, - PyDoc_STR("(SInt16 iFileRefNum, OSType iFileType, ByteCount iFileLength, TXNOffset iStartOffset, TXNOffset iEndOffset) -> None")}, - {"TXNGetChangeCount", (PyCFunction)TXNObj_TXNGetChangeCount, 1, - PyDoc_STR("() -> (ItemCount _rv)")}, - {"TXNSave", (PyCFunction)TXNObj_TXNSave, 1, - PyDoc_STR("(TXNFileType iType, OSType iResType, TXNPermanentTextEncodingType iPermanentEncoding, FSSpec iFileSpecification, SInt16 iDataReference, SInt16 iResourceReference) -> None")}, - {"TXNRevert", (PyCFunction)TXNObj_TXNRevert, 1, - PyDoc_STR("() -> None")}, - {"TXNPageSetup", (PyCFunction)TXNObj_TXNPageSetup, 1, - PyDoc_STR("() -> None")}, - {"TXNPrint", (PyCFunction)TXNObj_TXNPrint, 1, - PyDoc_STR("() -> None")}, - {"TXNGetViewRect", (PyCFunction)TXNObj_TXNGetViewRect, 1, - PyDoc_STR("() -> (Rect oViewRect)")}, - {"TXNSetViewRect", (PyCFunction)TXNObj_TXNSetViewRect, 1, - PyDoc_STR("(Rect iViewRect) -> None")}, - {"TXNAttachObjectToWindow", (PyCFunction)TXNObj_TXNAttachObjectToWindow, 1, - PyDoc_STR("(GWorldPtr iWindow, Boolean iIsActualWindow) -> None")}, - {"TXNIsObjectAttachedToWindow", (PyCFunction)TXNObj_TXNIsObjectAttachedToWindow, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"TXNDragTracker", (PyCFunction)TXNObj_TXNDragTracker, 1, - PyDoc_STR("(TXNFrameID iTXNFrameID, DragTrackingMessage iMessage, WindowPtr iWindow, DragReference iDragReference, Boolean iDifferentObjectSameWindow) -> None")}, - {"TXNDragReceiver", (PyCFunction)TXNObj_TXNDragReceiver, 1, - PyDoc_STR("(TXNFrameID iTXNFrameID, WindowPtr iWindow, DragReference iDragReference, Boolean iDifferentObjectSameWindow) -> None")}, - {"TXNActivate", (PyCFunction)TXNObj_TXNActivate, 1, - PyDoc_STR("(TXNFrameID iTXNFrameID, TXNScrollBarState iActiveState) -> None")}, - {"TXNEchoMode", (PyCFunction)TXNObj_TXNEchoMode, 1, - PyDoc_STR("(UniChar iEchoCharacter, TextEncoding iEncoding, Boolean iOn) -> None")}, - {"TXNDoFontMenuSelection", (PyCFunction)TXNObj_TXNDoFontMenuSelection, 1, - PyDoc_STR("(TXNFontMenuObject iTXNFontMenuObject, SInt16 iMenuID, SInt16 iMenuItem) -> None")}, - {"TXNPrepareFontMenu", (PyCFunction)TXNObj_TXNPrepareFontMenu, 1, - PyDoc_STR("(TXNFontMenuObject iTXNFontMenuObject) -> None")}, - {"TXNPointToOffset", (PyCFunction)TXNObj_TXNPointToOffset, 1, - PyDoc_STR("(Point iPoint) -> (TXNOffset oOffset)")}, - {"TXNOffsetToPoint", (PyCFunction)TXNObj_TXNOffsetToPoint, 1, - PyDoc_STR("(TXNOffset iOffset) -> (Point oPoint)")}, - {"TXNGetLineCount", (PyCFunction)TXNObj_TXNGetLineCount, 1, - PyDoc_STR("() -> (ItemCount oLineTotal)")}, - {"TXNGetLineMetrics", (PyCFunction)TXNObj_TXNGetLineMetrics, 1, - PyDoc_STR("(UInt32 iLineNumber) -> (Fixed oLineWidth, Fixed oLineHeight)")}, - {"TXNIsObjectAttachedToSpecificWindow", (PyCFunction)TXNObj_TXNIsObjectAttachedToSpecificWindow, 1, - PyDoc_STR("(WindowPtr iWindow) -> (Boolean oAttached)")}, - {"TXNRecalcTextLayout", (PyCFunction)TXNObj_TXNRecalcTextLayout, 1, - PyDoc_STR("() -> None")}, - {NULL, NULL, 0} -}; - -#define TXNObj_getsetlist NULL - - -#define TXNObj_compare NULL - -#define TXNObj_repr NULL - -#define TXNObj_hash NULL -#define TXNObj_tp_init 0 - -#define TXNObj_tp_alloc PyType_GenericAlloc - -static PyObject *TXNObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - TXNObject itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, TXNObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((TXNObjectObject *)_self)->ob_itself = itself; - return _self; -} - -#define TXNObj_tp_free PyObject_Del - - -PyTypeObject TXNObject_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Mlte.TXNObject", /*tp_name*/ - sizeof(TXNObjectObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) TXNObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) TXNObj_compare, /*tp_compare*/ - (reprfunc) TXNObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) TXNObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - TXNObj_methods, /* tp_methods */ - 0, /*tp_members*/ - TXNObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - TXNObj_tp_init, /* tp_init */ - TXNObj_tp_alloc, /* tp_alloc */ - TXNObj_tp_new, /* tp_new */ - TXNObj_tp_free, /* tp_free */ -}; - -/* ------------------- End object type TXNObject -------------------- */ - - -/* ----------------- Object type TXNFontMenuObject ------------------ */ - -PyTypeObject TXNFontMenuObject_Type; - -#define TXNFontMenuObj_Check(x) ((x)->ob_type == &TXNFontMenuObject_Type || PyObject_TypeCheck((x), &TXNFontMenuObject_Type)) - -typedef struct TXNFontMenuObjectObject { - PyObject_HEAD - TXNFontMenuObject ob_itself; -} TXNFontMenuObjectObject; - -PyObject *TXNFontMenuObj_New(TXNFontMenuObject itself) -{ - TXNFontMenuObjectObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - it = PyObject_NEW(TXNFontMenuObjectObject, &TXNFontMenuObject_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int TXNFontMenuObj_Convert(PyObject *v, TXNFontMenuObject *p_itself) -{ - if (!TXNFontMenuObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "TXNFontMenuObject required"); - return 0; - } - *p_itself = ((TXNFontMenuObjectObject *)v)->ob_itself; - return 1; -} - -static void TXNFontMenuObj_dealloc(TXNFontMenuObjectObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *TXNFontMenuObj_TXNGetFontMenuHandle(TXNFontMenuObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuHandle oFontMenuHandle; -#ifndef TXNGetFontMenuHandle - PyMac_PRECHECK(TXNGetFontMenuHandle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TXNGetFontMenuHandle(_self->ob_itself, - &oFontMenuHandle); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - MenuObj_New, oFontMenuHandle); - return _res; -} - -static PyObject *TXNFontMenuObj_TXNDisposeFontMenuObject(TXNFontMenuObjectObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef TXNDisposeFontMenuObject - PyMac_PRECHECK(TXNDisposeFontMenuObject); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TXNDisposeFontMenuObject(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef TXNFontMenuObj_methods[] = { - {"TXNGetFontMenuHandle", (PyCFunction)TXNFontMenuObj_TXNGetFontMenuHandle, 1, - PyDoc_STR("() -> (MenuHandle oFontMenuHandle)")}, - {"TXNDisposeFontMenuObject", (PyCFunction)TXNFontMenuObj_TXNDisposeFontMenuObject, 1, - PyDoc_STR("() -> None")}, - {NULL, NULL, 0} -}; - -#define TXNFontMenuObj_getsetlist NULL - - -#define TXNFontMenuObj_compare NULL - -#define TXNFontMenuObj_repr NULL - -#define TXNFontMenuObj_hash NULL -#define TXNFontMenuObj_tp_init 0 - -#define TXNFontMenuObj_tp_alloc PyType_GenericAlloc - -static PyObject *TXNFontMenuObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - TXNFontMenuObject itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, TXNFontMenuObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((TXNFontMenuObjectObject *)_self)->ob_itself = itself; - return _self; -} - -#define TXNFontMenuObj_tp_free PyObject_Del - - -PyTypeObject TXNFontMenuObject_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Mlte.TXNFontMenuObject", /*tp_name*/ - sizeof(TXNFontMenuObjectObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) TXNFontMenuObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) TXNFontMenuObj_compare, /*tp_compare*/ - (reprfunc) TXNFontMenuObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) TXNFontMenuObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - TXNFontMenuObj_methods, /* tp_methods */ - 0, /*tp_members*/ - TXNFontMenuObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - TXNFontMenuObj_tp_init, /* tp_init */ - TXNFontMenuObj_tp_alloc, /* tp_alloc */ - TXNFontMenuObj_tp_new, /* tp_new */ - TXNFontMenuObj_tp_free, /* tp_free */ -}; - -/* --------------- End object type TXNFontMenuObject ---------------- */ - - -static PyObject *Mlte_TXNNewObject(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FSSpec * iFileSpec; - WindowPtr iWindow; - Rect iFrame; - TXNFrameOptions iFrameOptions; - TXNFrameType iFrameType; - TXNFileType iFileType; - TXNPermanentTextEncodingType iPermanentEncoding; - TXNObject oTXNObject; - TXNFrameID oTXNFrameID; -#ifndef TXNNewObject - PyMac_PRECHECK(TXNNewObject); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&llO&l", - OptFSSpecPtr_Convert, &iFileSpec, - WinObj_Convert, &iWindow, - PyMac_GetRect, &iFrame, - &iFrameOptions, - &iFrameType, - PyMac_GetOSType, &iFileType, - &iPermanentEncoding)) - return NULL; - _err = TXNNewObject(iFileSpec, - iWindow, - &iFrame, - iFrameOptions, - iFrameType, - iFileType, - iPermanentEncoding, - &oTXNObject, - &oTXNFrameID, - (TXNObjectRefcon)0); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&l", - TXNObj_New, oTXNObject, - oTXNFrameID); - return _res; -} - -static PyObject *Mlte_TXNTerminateTextension(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TXNTerminateTextension - PyMac_PRECHECK(TXNTerminateTextension); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TXNTerminateTextension(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Mlte_TXNIsScrapPastable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef TXNIsScrapPastable - PyMac_PRECHECK(TXNIsScrapPastable); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TXNIsScrapPastable(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Mlte_TXNConvertToPublicScrap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef TXNConvertToPublicScrap - PyMac_PRECHECK(TXNConvertToPublicScrap); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TXNConvertToPublicScrap(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Mlte_TXNConvertFromPublicScrap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef TXNConvertFromPublicScrap - PyMac_PRECHECK(TXNConvertFromPublicScrap); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TXNConvertFromPublicScrap(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Mlte_TXNNewFontMenuObject(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuHandle iFontMenuHandle; - SInt16 iMenuID; - SInt16 iStartHierMenuID; - TXNFontMenuObject oTXNFontMenuObject; -#ifndef TXNNewFontMenuObject - PyMac_PRECHECK(TXNNewFontMenuObject); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - MenuObj_Convert, &iFontMenuHandle, - &iMenuID, - &iStartHierMenuID)) - return NULL; - _err = TXNNewFontMenuObject(iFontMenuHandle, - iMenuID, - iStartHierMenuID, - &oTXNFontMenuObject); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - TXNFontMenuObj_New, oTXNFontMenuObject); - return _res; -} - -static PyObject *Mlte_TXNVersionInformation(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TXNVersionValue _rv; - TXNFeatureBits oFeatureFlags; -#ifndef TXNVersionInformation - PyMac_PRECHECK(TXNVersionInformation); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TXNVersionInformation(&oFeatureFlags); - _res = Py_BuildValue("ll", - _rv, - oFeatureFlags); - return _res; -} - -static PyObject *Mlte_TXNInitTextension(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - OSStatus _err; - TXNMacOSPreferredFontDescription * iDefaultFonts = NULL; - ItemCount iCountDefaultFonts = 0; - TXNInitOptions iUsageFlags; - PyMac_PRECHECK(TXNInitTextension); - if (!PyArg_ParseTuple(_args, "l", &iUsageFlags)) - return NULL; - _err = TXNInitTextension(iDefaultFonts, - iCountDefaultFonts, - iUsageFlags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; - -} - -#endif /* __LP64__ */ - -static PyMethodDef Mlte_methods[] = { -#ifndef __LP64__ - {"TXNNewObject", (PyCFunction)Mlte_TXNNewObject, 1, - PyDoc_STR("(FSSpec * iFileSpec, WindowPtr iWindow, Rect iFrame, TXNFrameOptions iFrameOptions, TXNFrameType iFrameType, TXNFileType iFileType, TXNPermanentTextEncodingType iPermanentEncoding) -> (TXNObject oTXNObject, TXNFrameID oTXNFrameID)")}, - {"TXNTerminateTextension", (PyCFunction)Mlte_TXNTerminateTextension, 1, - PyDoc_STR("() -> None")}, - {"TXNIsScrapPastable", (PyCFunction)Mlte_TXNIsScrapPastable, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"TXNConvertToPublicScrap", (PyCFunction)Mlte_TXNConvertToPublicScrap, 1, - PyDoc_STR("() -> None")}, - {"TXNConvertFromPublicScrap", (PyCFunction)Mlte_TXNConvertFromPublicScrap, 1, - PyDoc_STR("() -> None")}, - {"TXNNewFontMenuObject", (PyCFunction)Mlte_TXNNewFontMenuObject, 1, - PyDoc_STR("(MenuHandle iFontMenuHandle, SInt16 iMenuID, SInt16 iStartHierMenuID) -> (TXNFontMenuObject oTXNFontMenuObject)")}, - {"TXNVersionInformation", (PyCFunction)Mlte_TXNVersionInformation, 1, - PyDoc_STR("() -> (TXNVersionValue _rv, TXNFeatureBits oFeatureFlags)")}, - {"TXNInitTextension", (PyCFunction)Mlte_TXNInitTextension, 1, - PyDoc_STR("(TXNInitOptions) -> None")}, -#endif /* __LP64__ */ - {NULL, NULL, 0} -}; - - - - -void init_Mlte(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; - - - - // PyMac_INIT_TOOLBOX_OBJECT_NEW(xxxx); - -#endif /* __LP64__ */ - - m = Py_InitModule("_Mlte", Mlte_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - Mlte_Error = PyMac_GetOSErrException(); - if (Mlte_Error == NULL || - PyDict_SetItemString(d, "Error", Mlte_Error) != 0) - return; - TXNObject_Type.ob_type = &PyType_Type; - if (PyType_Ready(&TXNObject_Type) < 0) return; - Py_INCREF(&TXNObject_Type); - PyModule_AddObject(m, "TXNObject", (PyObject *)&TXNObject_Type); - /* Backward-compatible name */ - Py_INCREF(&TXNObject_Type); - PyModule_AddObject(m, "TXNObjectType", (PyObject *)&TXNObject_Type); - TXNFontMenuObject_Type.ob_type = &PyType_Type; - if (PyType_Ready(&TXNFontMenuObject_Type) < 0) return; - Py_INCREF(&TXNFontMenuObject_Type); - PyModule_AddObject(m, "TXNFontMenuObject", (PyObject *)&TXNFontMenuObject_Type); - /* Backward-compatible name */ - Py_INCREF(&TXNFontMenuObject_Type); - PyModule_AddObject(m, "TXNFontMenuObjectType", (PyObject *)&TXNFontMenuObject_Type); -#endif /* __LP64__ */ -} - -/* ======================== End module _Mlte ======================== */ - diff --git a/project/jni/python/src/Mac/Modules/mlte/mltescan.py b/project/jni/python/src/Mac/Modules/mlte/mltescan.py deleted file mode 100644 index e48a229de..000000000 --- a/project/jni/python/src/Mac/Modules/mlte/mltescan.py +++ /dev/null @@ -1,142 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner_OSX - -LONG = "MacTextEditor" -SHORT = "mlte" -OBJECTS = ("TXNObject", "TXNFontMenuObject") -# ADD object typenames here - -def main(): - input = "MacTextEditor.h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.gentypetest(SHORT+"typetest.py") - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner_OSX): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t in OBJECTS and m == "InMode": - classname = "Method" - listname = t + "_methods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write(""" -def FOUR_CHAR_CODE(x): return x -false = 0 -true = 1 -kTXNClearThisControl = 0xFFFFFFFF -kTXNClearTheseFontFeatures = 0x80000000 -kTXNDontCareTypeSize = 0xFFFFFFFF -kTXNDecrementTypeSize = 0x80000000 -kTXNUseCurrentSelection = 0xFFFFFFFF -kTXNStartOffset = 0 -kTXNEndOffset = 0x7FFFFFFF -MovieFileType = FOUR_CHAR_CODE('moov') -kTXNUseEncodingWordRulesMask = 0x80000000 -kTXNFontSizeAttributeSize = 4 -normal = 0 -""") - - def makeblacklistnames(self): - return [ - "TXNGetFontDefaults", # Arg is too difficult - "TXNSetFontDefaults", # Arg is too difficult - "TXNInitTextension", # done manually - - # Constants with funny definitions - "kTXNClearThisControl", - "kTXNClearTheseFontFeatures", - "kTXNDontCareTypeSize", - "kTXNDecrementTypeSize", - "kTXNUseCurrentSelection", - "kTXNStartOffset", - "kTXNEndOffset", - "kTXNQDFontNameAttributeSize", - "kTXNQDFontFamilyIDAttributeSize", - "kTXNQDFontSizeAttributeSize", - "kTXNQDFontStyleAttributeSize", - "kTXNQDFontColorAttributeSize", - "kTXNTextEncodingAttributeSize", - "kTXNUseEncodingWordRulesMask", - "kTXNFontSizeAttributeSize", - "status", - "justification", - 'TXNTSMCheck', # OS8 - ] - - def makeblacklisttypes(self): - return [ - "TXNTab", # TBD - "TXNMargins", # TBD - "TXNControlData", #TBD - "TXNATSUIFeatures", #TBD - "TXNATSUIVariations", #TBD - "TXNAttributeData", #TBD - "TXNTypeAttributes", #TBD - "TXNMatchTextRecord", #TBD - "TXNBackground", #TBD - "TXNFindUPP", - "ATSUStyle", #TBD - "TXNBackground_ptr", #TBD - "TXNControlData_ptr", #TBD - "TXNControlTag_ptr", #TBD - "TXNLongRect", #TBD - "TXNLongRect_ptr", #TBD - "TXNTypeAttributes_ptr", #TBD - - "TXNActionKeyMapperProcPtr", - "TXNActionKeyMapperUPP", - "TXNTextBoxOptionsData", - "TXNCountOptions", - "void_ptr", - ] - - def makerepairinstructions(self): - return [ - # TXNNewObject has a lot of optional parameters - ([("FSSpec_ptr", "iFileSpec", "InMode")], - [("OptFSSpecPtr", "*", "*")]), - ([("Rect", "iFrame", "OutMode")], - [("OptRectPtr", "*", "InMode")]), - - # In UH 332 some of the "const" are missing for input parameters passed - # by reference. We fix that up here. - ([("EventRecord", "iEvent", "OutMode")], - [("EventRecord_ptr", "*", "InMode")]), - ([("FSSpec", "iFileSpecification", "OutMode")], - [("FSSpec_ptr", "*", "InMode")]), - ([("TXNMacOSPreferredFontDescription", "iFontDefaults", "OutMode")], - [("TXNMacOSPreferredFontDescription_ptr", "*", "InMode")]), - - # In buffers are passed as void * - ([("void", "*", "OutMode"), ("ByteCount", "*", "InMode")], - [("MlteInBuffer", "*", "InMode")]), - - # The AdjustCursor region handle is optional - ([("RgnHandle", "ioCursorRgn", "InMode")], - [("OptRgnHandle", "*", "*")]), - - # The GWorld for TXNDraw is optional - ([('GWorldPtr', 'iDrawPort', 'InMode')], - [('OptGWorldPtr', '*', '*')]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/mlte/mltesupport.py b/project/jni/python/src/Mac/Modules/mlte/mltesupport.py deleted file mode 100644 index 8dcbed5bb..000000000 --- a/project/jni/python/src/Mac/Modules/mlte/mltesupport.py +++ /dev/null @@ -1,202 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -#error missing SetActionFilter - -import string - -# Declarations that change for each manager -MODNAME = '_Mlte' # The name of the module - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Mlte' # The prefix for module-wide routines -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects - -includestuff = includestuff + """ -#include - -/* For now we declare them forward here. They'll go to mactoolbox later */ -static PyObject *TXNObj_New(TXNObject); -static int TXNObj_Convert(PyObject *, TXNObject *); -static PyObject *TXNFontMenuObj_New(TXNFontMenuObject); -static int TXNFontMenuObj_Convert(PyObject *, TXNFontMenuObject *); - -// ADD declarations -#ifdef NOTYET_USE_TOOLBOX_OBJECT_GLUE -//extern PyObject *_CFTypeRefObj_New(CFTypeRef); -//extern int _CFTypeRefObj_Convert(PyObject *, CFTypeRef *); - -//#define CFTypeRefObj_New _CFTypeRefObj_New -//#define CFTypeRefObj_Convert _CFTypeRefObj_Convert -#endif - -/* -** Parse an optional fsspec -*/ -static int -OptFSSpecPtr_Convert(PyObject *v, FSSpec **p_itself) -{ - static FSSpec fss; - if (v == Py_None) - { - *p_itself = NULL; - return 1; - } - *p_itself = &fss; - return PyMac_GetFSSpec(v, *p_itself); -} - -/* -** Parse an optional rect -*/ -static int -OptRectPtr_Convert(PyObject *v, Rect **p_itself) -{ - static Rect r; - - if (v == Py_None) - { - *p_itself = NULL; - return 1; - } - *p_itself = &r; - return PyMac_GetRect(v, *p_itself); -} - -/* -** Parse an optional GWorld -*/ -static int -OptGWorldObj_Convert(PyObject *v, GWorldPtr *p_itself) -{ - if (v == Py_None) - { - *p_itself = NULL; - return 1; - } - return GWorldObj_Convert(v, p_itself); -} - -""" - -initstuff = initstuff + """ -// PyMac_INIT_TOOLBOX_OBJECT_NEW(xxxx); -""" -TXNObject = OpaqueByValueType("TXNObject", "TXNObj") -TXNFontMenuObject = OpaqueByValueType("TXNFontMenuObject", "TXNFontMenuObj") - -TXNFrameID = Type("TXNFrameID", "l") -TXNVersionValue = Type("TXNVersionValue", "l") -TXNFeatureBits = Type("TXNFeatureBits", "l") -TXNInitOptions = Type("TXNInitOptions", "l") -TXNFrameOptions = Type("TXNFrameOptions", "l") -TXNContinuousFlags = Type("TXNContinuousFlags", "l") -TXNMatchOptions = Type("TXNMatchOptions", "l") -TXNFileType = OSTypeType("TXNFileType") -TXNFrameType = Type("TXNFrameType", "l") -TXNDataType = OSTypeType("TXNDataType") -TXNControlTag = OSTypeType("TXNControlTag") -TXNActionKey = Type("TXNActionKey", "l") -TXNTabType = Type("TXNTabType", "b") -TXNScrollBarState = Type("TXNScrollBarState", "l") -TXNOffset = Type("TXNOffset", "l") -TXNObjectRefcon = FakeType("(TXNObjectRefcon)0") # XXXX For now... -TXNErrors = OSErrType("TXNErrors", "l") -TXNTypeRunAttributes = OSTypeType("TXNTypeRunAttributes") -TXNTypeRunAttributeSizes = Type("TXNTypeRunAttributeSizes", "l") -TXNPermanentTextEncodingType = Type("TXNPermanentTextEncodingType", "l") -TXTNTag = OSTypeType("TXTNTag") -TXNBackgroundType = Type("TXNBackgroundType", "l") -DragReference = OpaqueByValueType("DragReference", "DragObj") -DragTrackingMessage = Type("DragTrackingMessage", "h") -RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") -OptRgnHandle = OpaqueByValueType("RgnHandle", "OptResObj") -GWorldPtr = OpaqueByValueType("GWorldPtr", "GWorldObj") -OptGWorldPtr = OpaqueByValueType("GWorldPtr", "OptGWorldObj") -MlteInBuffer = VarInputBufferType('void *', 'ByteCount', 'l') - -OptFSSpecPtr = OpaqueByValueType("FSSpec *", "OptFSSpecPtr") -OptRectPtr = OpaqueByValueType("Rect *", "OptRectPtr") - -UniChar = Type("UniChar", "h") # XXXX For now... -# ADD object type here - -execfile("mltetypetest.py") - -# Our (opaque) objects - -class TXNObjDefinition(PEP253Mixin, GlobalObjectDefinition): - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") - -class TXNFontMenuObjDefinition(PEP253Mixin, GlobalObjectDefinition): - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") - - -# ADD object class here - -# From here on it's basically all boiler plate... - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -TXNObject_object = TXNObjDefinition("TXNObject", "TXNObj", "TXNObject") -TXNFontMenuObject_object = TXNFontMenuObjDefinition("TXNFontMenuObject", "TXNFontMenuObj", "TXNFontMenuObject") - -# ADD object here - -module.addobject(TXNObject_object) -module.addobject(TXNFontMenuObject_object) -# ADD addobject call here - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -Method = OSErrWeakLinkMethodGenerator - -# Create and populate the lists -functions = [] -TXNObject_methods = [] -TXNFontMenuObject_methods = [] - -# ADD _methods initializer here -execfile(INPUTFILE) - - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -for f in TXNObject_methods: TXNObject_object.add(f) -for f in TXNFontMenuObject_methods: TXNFontMenuObject_object.add(f) - -# ADD Manual generators here -inittextension_body = """ -OSStatus _err; -TXNMacOSPreferredFontDescription * iDefaultFonts = NULL; -ItemCount iCountDefaultFonts = 0; -TXNInitOptions iUsageFlags; -PyMac_PRECHECK(TXNInitTextension); -if (!PyArg_ParseTuple(_args, "l", &iUsageFlags)) - return NULL; -_err = TXNInitTextension(iDefaultFonts, - iCountDefaultFonts, - iUsageFlags); -if (_err != noErr) return PyMac_Error(_err); -Py_INCREF(Py_None); -_res = Py_None; -return _res; -""" - -f = ManualGenerator("TXNInitTextension", inittextension_body); -f.docstring = lambda: "(TXNInitOptions) -> None" -module.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/osa/_OSAmodule.c b/project/jni/python/src/Mac/Modules/osa/_OSAmodule.c deleted file mode 100644 index ab3032021..000000000 --- a/project/jni/python/src/Mac/Modules/osa/_OSAmodule.c +++ /dev/null @@ -1,899 +0,0 @@ - -/* ========================== Module _OSA =========================== */ - -#include "Python.h" - - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#if PY_VERSION_HEX < 0x02040000 -PyObject *PyMac_GetOSErrException(void); -#endif -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_OSAObj_New(ComponentInstance); -extern int _OSAObj_Convert(PyObject *, ComponentInstance *); - -#define OSAObj_New _OSAObj_New -#define OSAObj_Convert _OSAObj_Convert -#endif - -static PyObject *OSA_Error; - -/* ---------------- Object type OSAComponentInstance ---------------- */ - -PyTypeObject OSAComponentInstance_Type; - -#define OSAObj_Check(x) ((x)->ob_type == &OSAComponentInstance_Type || PyObject_TypeCheck((x), &OSAComponentInstance_Type)) - -typedef struct OSAComponentInstanceObject { - PyObject_HEAD - ComponentInstance ob_itself; -} OSAComponentInstanceObject; - -PyObject *OSAObj_New(ComponentInstance itself) -{ - OSAComponentInstanceObject *it; - if (itself == NULL) { - PyErr_SetString(OSA_Error,"NULL ComponentInstance"); - return NULL; - } - it = PyObject_NEW(OSAComponentInstanceObject, &OSAComponentInstance_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int OSAObj_Convert(PyObject *v, ComponentInstance *p_itself) -{ - - if (CmpInstObj_Convert(v, p_itself)) - return 1; - PyErr_Clear(); - - if (!OSAObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "OSAComponentInstance required"); - return 0; - } - *p_itself = ((OSAComponentInstanceObject *)v)->ob_itself; - return 1; -} - -static void OSAObj_dealloc(OSAComponentInstanceObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *OSAObj_OSALoad(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - AEDesc scriptData; - long modeFlags; - OSAID resultingScriptID; -#ifndef OSALoad - PyMac_PRECHECK(OSALoad); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - AEDesc_Convert, &scriptData, - &modeFlags)) - return NULL; - _err = OSALoad(_self->ob_itself, - &scriptData, - modeFlags, - &resultingScriptID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - resultingScriptID); - return _res; -} - -static PyObject *OSAObj_OSAStore(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - OSAID scriptID; - DescType desiredType; - long modeFlags; - AEDesc resultingScriptData; -#ifndef OSAStore - PyMac_PRECHECK(OSAStore); -#endif - if (!PyArg_ParseTuple(_args, "lO&l", - &scriptID, - PyMac_GetOSType, &desiredType, - &modeFlags)) - return NULL; - _err = OSAStore(_self->ob_itself, - scriptID, - desiredType, - modeFlags, - &resultingScriptData); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &resultingScriptData); - return _res; -} - -static PyObject *OSAObj_OSAExecute(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - OSAID compiledScriptID; - OSAID contextID; - long modeFlags; - OSAID resultingScriptValueID; -#ifndef OSAExecute - PyMac_PRECHECK(OSAExecute); -#endif - if (!PyArg_ParseTuple(_args, "lll", - &compiledScriptID, - &contextID, - &modeFlags)) - return NULL; - _err = OSAExecute(_self->ob_itself, - compiledScriptID, - contextID, - modeFlags, - &resultingScriptValueID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - resultingScriptValueID); - return _res; -} - -static PyObject *OSAObj_OSADisplay(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - OSAID scriptValueID; - DescType desiredType; - long modeFlags; - AEDesc resultingText; -#ifndef OSADisplay - PyMac_PRECHECK(OSADisplay); -#endif - if (!PyArg_ParseTuple(_args, "lO&l", - &scriptValueID, - PyMac_GetOSType, &desiredType, - &modeFlags)) - return NULL; - _err = OSADisplay(_self->ob_itself, - scriptValueID, - desiredType, - modeFlags, - &resultingText); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &resultingText); - return _res; -} - -static PyObject *OSAObj_OSAScriptError(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - OSType selector; - DescType desiredType; - AEDesc resultingErrorDescription; -#ifndef OSAScriptError - PyMac_PRECHECK(OSAScriptError); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &selector, - PyMac_GetOSType, &desiredType)) - return NULL; - _err = OSAScriptError(_self->ob_itself, - selector, - desiredType, - &resultingErrorDescription); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &resultingErrorDescription); - return _res; -} - -static PyObject *OSAObj_OSADispose(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - OSAID scriptID; -#ifndef OSADispose - PyMac_PRECHECK(OSADispose); -#endif - if (!PyArg_ParseTuple(_args, "l", - &scriptID)) - return NULL; - _err = OSADispose(_self->ob_itself, - scriptID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *OSAObj_OSASetScriptInfo(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - OSAID scriptID; - OSType selector; - long value; -#ifndef OSASetScriptInfo - PyMac_PRECHECK(OSASetScriptInfo); -#endif - if (!PyArg_ParseTuple(_args, "lO&l", - &scriptID, - PyMac_GetOSType, &selector, - &value)) - return NULL; - _err = OSASetScriptInfo(_self->ob_itself, - scriptID, - selector, - value); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *OSAObj_OSAGetScriptInfo(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - OSAID scriptID; - OSType selector; - long result; -#ifndef OSAGetScriptInfo - PyMac_PRECHECK(OSAGetScriptInfo); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &scriptID, - PyMac_GetOSType, &selector)) - return NULL; - _err = OSAGetScriptInfo(_self->ob_itself, - scriptID, - selector, - &result); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - result); - return _res; -} - -static PyObject *OSAObj_OSAScriptingComponentName(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - AEDesc resultingScriptingComponentName; -#ifndef OSAScriptingComponentName - PyMac_PRECHECK(OSAScriptingComponentName); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = OSAScriptingComponentName(_self->ob_itself, - &resultingScriptingComponentName); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &resultingScriptingComponentName); - return _res; -} - -static PyObject *OSAObj_OSACompile(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - AEDesc sourceData; - long modeFlags; - OSAID previousAndResultingScriptID; -#ifndef OSACompile - PyMac_PRECHECK(OSACompile); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - AEDesc_Convert, &sourceData, - &modeFlags)) - return NULL; - _err = OSACompile(_self->ob_itself, - &sourceData, - modeFlags, - &previousAndResultingScriptID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - previousAndResultingScriptID); - return _res; -} - -static PyObject *OSAObj_OSACopyID(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - OSAID fromID; - OSAID toID; -#ifndef OSACopyID - PyMac_PRECHECK(OSACopyID); -#endif - if (!PyArg_ParseTuple(_args, "l", - &fromID)) - return NULL; - _err = OSACopyID(_self->ob_itself, - fromID, - &toID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - toID); - return _res; -} - -static PyObject *OSAObj_OSAGetSource(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - OSAID scriptID; - DescType desiredType; - AEDesc resultingSourceData; -#ifndef OSAGetSource - PyMac_PRECHECK(OSAGetSource); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &scriptID, - PyMac_GetOSType, &desiredType)) - return NULL; - _err = OSAGetSource(_self->ob_itself, - scriptID, - desiredType, - &resultingSourceData); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &resultingSourceData); - return _res; -} - -static PyObject *OSAObj_OSACoerceFromDesc(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - AEDesc scriptData; - long modeFlags; - OSAID resultingScriptID; -#ifndef OSACoerceFromDesc - PyMac_PRECHECK(OSACoerceFromDesc); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - AEDesc_Convert, &scriptData, - &modeFlags)) - return NULL; - _err = OSACoerceFromDesc(_self->ob_itself, - &scriptData, - modeFlags, - &resultingScriptID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - resultingScriptID); - return _res; -} - -static PyObject *OSAObj_OSACoerceToDesc(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - OSAID scriptID; - DescType desiredType; - long modeFlags; - AEDesc result; -#ifndef OSACoerceToDesc - PyMac_PRECHECK(OSACoerceToDesc); -#endif - if (!PyArg_ParseTuple(_args, "lO&l", - &scriptID, - PyMac_GetOSType, &desiredType, - &modeFlags)) - return NULL; - _err = OSACoerceToDesc(_self->ob_itself, - scriptID, - desiredType, - modeFlags, - &result); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &result); - return _res; -} - -static PyObject *OSAObj_OSASetDefaultTarget(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - AEAddressDesc target; -#ifndef OSASetDefaultTarget - PyMac_PRECHECK(OSASetDefaultTarget); -#endif - if (!PyArg_ParseTuple(_args, "O&", - AEDesc_Convert, &target)) - return NULL; - _err = OSASetDefaultTarget(_self->ob_itself, - &target); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *OSAObj_OSAStartRecording(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - OSAID compiledScriptToModifyID; -#ifndef OSAStartRecording - PyMac_PRECHECK(OSAStartRecording); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = OSAStartRecording(_self->ob_itself, - &compiledScriptToModifyID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - compiledScriptToModifyID); - return _res; -} - -static PyObject *OSAObj_OSAStopRecording(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - OSAID compiledScriptID; -#ifndef OSAStopRecording - PyMac_PRECHECK(OSAStopRecording); -#endif - if (!PyArg_ParseTuple(_args, "l", - &compiledScriptID)) - return NULL; - _err = OSAStopRecording(_self->ob_itself, - compiledScriptID); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *OSAObj_OSALoadExecute(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - AEDesc scriptData; - OSAID contextID; - long modeFlags; - OSAID resultingScriptValueID; -#ifndef OSALoadExecute - PyMac_PRECHECK(OSALoadExecute); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - AEDesc_Convert, &scriptData, - &contextID, - &modeFlags)) - return NULL; - _err = OSALoadExecute(_self->ob_itself, - &scriptData, - contextID, - modeFlags, - &resultingScriptValueID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - resultingScriptValueID); - return _res; -} - -static PyObject *OSAObj_OSACompileExecute(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - AEDesc sourceData; - OSAID contextID; - long modeFlags; - OSAID resultingScriptValueID; -#ifndef OSACompileExecute - PyMac_PRECHECK(OSACompileExecute); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - AEDesc_Convert, &sourceData, - &contextID, - &modeFlags)) - return NULL; - _err = OSACompileExecute(_self->ob_itself, - &sourceData, - contextID, - modeFlags, - &resultingScriptValueID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - resultingScriptValueID); - return _res; -} - -static PyObject *OSAObj_OSADoScript(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - AEDesc sourceData; - OSAID contextID; - DescType desiredType; - long modeFlags; - AEDesc resultingText; -#ifndef OSADoScript - PyMac_PRECHECK(OSADoScript); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&l", - AEDesc_Convert, &sourceData, - &contextID, - PyMac_GetOSType, &desiredType, - &modeFlags)) - return NULL; - _err = OSADoScript(_self->ob_itself, - &sourceData, - contextID, - desiredType, - modeFlags, - &resultingText); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &resultingText); - return _res; -} - -static PyObject *OSAObj_OSASetCurrentDialect(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - short dialectCode; -#ifndef OSASetCurrentDialect - PyMac_PRECHECK(OSASetCurrentDialect); -#endif - if (!PyArg_ParseTuple(_args, "h", - &dialectCode)) - return NULL; - _err = OSASetCurrentDialect(_self->ob_itself, - dialectCode); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *OSAObj_OSAGetCurrentDialect(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - short resultingDialectCode; -#ifndef OSAGetCurrentDialect - PyMac_PRECHECK(OSAGetCurrentDialect); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = OSAGetCurrentDialect(_self->ob_itself, - &resultingDialectCode); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - resultingDialectCode); - return _res; -} - -static PyObject *OSAObj_OSAAvailableDialects(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - AEDesc resultingDialectInfoList; -#ifndef OSAAvailableDialects - PyMac_PRECHECK(OSAAvailableDialects); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = OSAAvailableDialects(_self->ob_itself, - &resultingDialectInfoList); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &resultingDialectInfoList); - return _res; -} - -static PyObject *OSAObj_OSAGetDialectInfo(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - short dialectCode; - OSType selector; - AEDesc resultingDialectInfo; -#ifndef OSAGetDialectInfo - PyMac_PRECHECK(OSAGetDialectInfo); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &dialectCode, - PyMac_GetOSType, &selector)) - return NULL; - _err = OSAGetDialectInfo(_self->ob_itself, - dialectCode, - selector, - &resultingDialectInfo); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &resultingDialectInfo); - return _res; -} - -static PyObject *OSAObj_OSAAvailableDialectCodeList(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - AEDesc resultingDialectCodeList; -#ifndef OSAAvailableDialectCodeList - PyMac_PRECHECK(OSAAvailableDialectCodeList); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = OSAAvailableDialectCodeList(_self->ob_itself, - &resultingDialectCodeList); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &resultingDialectCodeList); - return _res; -} - -static PyObject *OSAObj_OSAExecuteEvent(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - AppleEvent theAppleEvent; - OSAID contextID; - long modeFlags; - OSAID resultingScriptValueID; -#ifndef OSAExecuteEvent - PyMac_PRECHECK(OSAExecuteEvent); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - AEDesc_Convert, &theAppleEvent, - &contextID, - &modeFlags)) - return NULL; - _err = OSAExecuteEvent(_self->ob_itself, - &theAppleEvent, - contextID, - modeFlags, - &resultingScriptValueID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - resultingScriptValueID); - return _res; -} - -static PyObject *OSAObj_OSADoEvent(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - AppleEvent theAppleEvent; - OSAID contextID; - long modeFlags; - AppleEvent reply; -#ifndef OSADoEvent - PyMac_PRECHECK(OSADoEvent); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - AEDesc_Convert, &theAppleEvent, - &contextID, - &modeFlags)) - return NULL; - _err = OSADoEvent(_self->ob_itself, - &theAppleEvent, - contextID, - modeFlags, - &reply); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - AEDesc_New, &reply); - return _res; -} - -static PyObject *OSAObj_OSAMakeContext(OSAComponentInstanceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSAError _err; - AEDesc contextName; - OSAID parentContext; - OSAID resultingContextID; -#ifndef OSAMakeContext - PyMac_PRECHECK(OSAMakeContext); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - AEDesc_Convert, &contextName, - &parentContext)) - return NULL; - _err = OSAMakeContext(_self->ob_itself, - &contextName, - parentContext, - &resultingContextID); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - resultingContextID); - return _res; -} - -static PyMethodDef OSAObj_methods[] = { - {"OSALoad", (PyCFunction)OSAObj_OSALoad, 1, - PyDoc_STR("(AEDesc scriptData, long modeFlags) -> (OSAID resultingScriptID)")}, - {"OSAStore", (PyCFunction)OSAObj_OSAStore, 1, - PyDoc_STR("(OSAID scriptID, DescType desiredType, long modeFlags) -> (AEDesc resultingScriptData)")}, - {"OSAExecute", (PyCFunction)OSAObj_OSAExecute, 1, - PyDoc_STR("(OSAID compiledScriptID, OSAID contextID, long modeFlags) -> (OSAID resultingScriptValueID)")}, - {"OSADisplay", (PyCFunction)OSAObj_OSADisplay, 1, - PyDoc_STR("(OSAID scriptValueID, DescType desiredType, long modeFlags) -> (AEDesc resultingText)")}, - {"OSAScriptError", (PyCFunction)OSAObj_OSAScriptError, 1, - PyDoc_STR("(OSType selector, DescType desiredType) -> (AEDesc resultingErrorDescription)")}, - {"OSADispose", (PyCFunction)OSAObj_OSADispose, 1, - PyDoc_STR("(OSAID scriptID) -> None")}, - {"OSASetScriptInfo", (PyCFunction)OSAObj_OSASetScriptInfo, 1, - PyDoc_STR("(OSAID scriptID, OSType selector, long value) -> None")}, - {"OSAGetScriptInfo", (PyCFunction)OSAObj_OSAGetScriptInfo, 1, - PyDoc_STR("(OSAID scriptID, OSType selector) -> (long result)")}, - {"OSAScriptingComponentName", (PyCFunction)OSAObj_OSAScriptingComponentName, 1, - PyDoc_STR("() -> (AEDesc resultingScriptingComponentName)")}, - {"OSACompile", (PyCFunction)OSAObj_OSACompile, 1, - PyDoc_STR("(AEDesc sourceData, long modeFlags) -> (OSAID previousAndResultingScriptID)")}, - {"OSACopyID", (PyCFunction)OSAObj_OSACopyID, 1, - PyDoc_STR("(OSAID fromID) -> (OSAID toID)")}, - {"OSAGetSource", (PyCFunction)OSAObj_OSAGetSource, 1, - PyDoc_STR("(OSAID scriptID, DescType desiredType) -> (AEDesc resultingSourceData)")}, - {"OSACoerceFromDesc", (PyCFunction)OSAObj_OSACoerceFromDesc, 1, - PyDoc_STR("(AEDesc scriptData, long modeFlags) -> (OSAID resultingScriptID)")}, - {"OSACoerceToDesc", (PyCFunction)OSAObj_OSACoerceToDesc, 1, - PyDoc_STR("(OSAID scriptID, DescType desiredType, long modeFlags) -> (AEDesc result)")}, - {"OSASetDefaultTarget", (PyCFunction)OSAObj_OSASetDefaultTarget, 1, - PyDoc_STR("(AEAddressDesc target) -> None")}, - {"OSAStartRecording", (PyCFunction)OSAObj_OSAStartRecording, 1, - PyDoc_STR("() -> (OSAID compiledScriptToModifyID)")}, - {"OSAStopRecording", (PyCFunction)OSAObj_OSAStopRecording, 1, - PyDoc_STR("(OSAID compiledScriptID) -> None")}, - {"OSALoadExecute", (PyCFunction)OSAObj_OSALoadExecute, 1, - PyDoc_STR("(AEDesc scriptData, OSAID contextID, long modeFlags) -> (OSAID resultingScriptValueID)")}, - {"OSACompileExecute", (PyCFunction)OSAObj_OSACompileExecute, 1, - PyDoc_STR("(AEDesc sourceData, OSAID contextID, long modeFlags) -> (OSAID resultingScriptValueID)")}, - {"OSADoScript", (PyCFunction)OSAObj_OSADoScript, 1, - PyDoc_STR("(AEDesc sourceData, OSAID contextID, DescType desiredType, long modeFlags) -> (AEDesc resultingText)")}, - {"OSASetCurrentDialect", (PyCFunction)OSAObj_OSASetCurrentDialect, 1, - PyDoc_STR("(short dialectCode) -> None")}, - {"OSAGetCurrentDialect", (PyCFunction)OSAObj_OSAGetCurrentDialect, 1, - PyDoc_STR("() -> (short resultingDialectCode)")}, - {"OSAAvailableDialects", (PyCFunction)OSAObj_OSAAvailableDialects, 1, - PyDoc_STR("() -> (AEDesc resultingDialectInfoList)")}, - {"OSAGetDialectInfo", (PyCFunction)OSAObj_OSAGetDialectInfo, 1, - PyDoc_STR("(short dialectCode, OSType selector) -> (AEDesc resultingDialectInfo)")}, - {"OSAAvailableDialectCodeList", (PyCFunction)OSAObj_OSAAvailableDialectCodeList, 1, - PyDoc_STR("() -> (AEDesc resultingDialectCodeList)")}, - {"OSAExecuteEvent", (PyCFunction)OSAObj_OSAExecuteEvent, 1, - PyDoc_STR("(AppleEvent theAppleEvent, OSAID contextID, long modeFlags) -> (OSAID resultingScriptValueID)")}, - {"OSADoEvent", (PyCFunction)OSAObj_OSADoEvent, 1, - PyDoc_STR("(AppleEvent theAppleEvent, OSAID contextID, long modeFlags) -> (AppleEvent reply)")}, - {"OSAMakeContext", (PyCFunction)OSAObj_OSAMakeContext, 1, - PyDoc_STR("(AEDesc contextName, OSAID parentContext) -> (OSAID resultingContextID)")}, - {NULL, NULL, 0} -}; - -#define OSAObj_getsetlist NULL - - -#define OSAObj_compare NULL - -#define OSAObj_repr NULL - -#define OSAObj_hash NULL -#define OSAObj_tp_init 0 - -#define OSAObj_tp_alloc PyType_GenericAlloc - -static PyObject *OSAObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - ComponentInstance itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, OSAObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((OSAComponentInstanceObject *)_self)->ob_itself = itself; - return _self; -} - -#define OSAObj_tp_free PyObject_Del - - -PyTypeObject OSAComponentInstance_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_OSA.OSAComponentInstance", /*tp_name*/ - sizeof(OSAComponentInstanceObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) OSAObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) OSAObj_compare, /*tp_compare*/ - (reprfunc) OSAObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) OSAObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - OSAObj_methods, /* tp_methods */ - 0, /*tp_members*/ - OSAObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - OSAObj_tp_init, /* tp_init */ - OSAObj_tp_alloc, /* tp_alloc */ - OSAObj_tp_new, /* tp_new */ - OSAObj_tp_free, /* tp_free */ -}; - -/* -------------- End object type OSAComponentInstance -------------- */ - - -static PyMethodDef OSA_methods[] = { - {NULL, NULL, 0} -}; - - - - -void init_OSA(void) -{ - PyObject *m; - PyObject *d; - - - - /* - PyMac_INIT_TOOLBOX_OBJECT_NEW(ComponentInstance, OSAObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ComponentInstance, OSAObj_Convert); - */ - - - m = Py_InitModule("_OSA", OSA_methods); - d = PyModule_GetDict(m); - OSA_Error = PyMac_GetOSErrException(); - if (OSA_Error == NULL || - PyDict_SetItemString(d, "Error", OSA_Error) != 0) - return; - OSAComponentInstance_Type.ob_type = &PyType_Type; - if (PyType_Ready(&OSAComponentInstance_Type) < 0) return; - Py_INCREF(&OSAComponentInstance_Type); - PyModule_AddObject(m, "OSAComponentInstance", (PyObject *)&OSAComponentInstance_Type); - /* Backward-compatible name */ - Py_INCREF(&OSAComponentInstance_Type); - PyModule_AddObject(m, "OSAComponentInstanceType", (PyObject *)&OSAComponentInstance_Type); -} - -/* ======================== End module _OSA ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/osa/osascan.py b/project/jni/python/src/Mac/Modules/osa/osascan.py deleted file mode 100644 index 5fc2e9f6f..000000000 --- a/project/jni/python/src/Mac/Modules/osa/osascan.py +++ /dev/null @@ -1,61 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner - -LONG = "OSAconst" -SHORT = "osa" - -def main(): - input = "OSA.h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - scanner.gentypetest(SHORT+"typetest.py") - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t == "ComponentInstance" and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - self.defsfile.write("from Carbon.AppleEvents import *\n") - self.defsfile.write("kAEUseStandardDispatch = -1\n") - - def makeblacklistnames(self): - return [ - "OSACopyScript", - ] - - def makeblacklisttypes(self): - return [ - "OSALocalOrGlobal", - "OSACreateAppleEventUPP", - "OSAActiveUPP", - "AEEventHandlerUPP", - "OSASendUPP", - ] - - def makerepairinstructions(self): - return [ - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/osa/osasupport.py b/project/jni/python/src/Mac/Modules/osa/osasupport.py deleted file mode 100644 index 8369932db..000000000 --- a/project/jni/python/src/Mac/Modules/osa/osasupport.py +++ /dev/null @@ -1,105 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'OSA.h' # The Apple header file -MODNAME = '_OSA' # The name of the module - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'OSA' # The prefix for module-wide routines -OBJECTPREFIX = 'OSAObj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects - -includestuff = includestuff + """ -#if PY_VERSION_HEX < 0x02040000 -PyObject *PyMac_GetOSErrException(void); -#endif -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_OSAObj_New(ComponentInstance); -extern int _OSAObj_Convert(PyObject *, ComponentInstance *); - -#define OSAObj_New _OSAObj_New -#define OSAObj_Convert _OSAObj_Convert -#endif -""" - -initstuff = initstuff + """ -/* - PyMac_INIT_TOOLBOX_OBJECT_NEW(ComponentInstance, OSAObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ComponentInstance, OSAObj_Convert); -*/ -""" - -ComponentInstance = OpaqueByValueType('ComponentInstance', OBJECTPREFIX) -OSAError = OSErrType("OSAError", "l") -# OSALocalOrGlobal = Type("OSALocalOrGlobal", "l") -OSAID = Type("OSAID", "l") -OSADebugCallFrameRef = Type("OSADebugCallFrameRef", "l") -OSADebugSessionRef = Type("OSADebugSessionRef", "l") -OSADebugStepKind = Type("OSADebugStepKind", "l") -DescType = OSTypeType("DescType") -AEDesc = OpaqueType('AEDesc') -AEDesc_ptr = OpaqueType('AEDesc') -AEAddressDesc = OpaqueType('AEAddressDesc', 'AEDesc') -AEAddressDesc_ptr = OpaqueType('AEAddressDesc', 'AEDesc') -AEDescList = OpaqueType('AEDescList', 'AEDesc') -AEDescList_ptr = OpaqueType('AEDescList', 'AEDesc') -AERecord = OpaqueType('AERecord', 'AEDesc') -AERecord_ptr = OpaqueType('AERecord', 'AEDesc') -AppleEvent = OpaqueType('AppleEvent', 'AEDesc') -AppleEvent_ptr = OpaqueType('AppleEvent', 'AEDesc') - -# NOTE: at the moment OSA.ComponentInstance is not a subclass -# of Cm.ComponentInstance. If this is a problem it can be fixed. -class MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - def outputCheckNewArg(self): - Output("""if (itself == NULL) { - PyErr_SetString(OSA_Error,"NULL ComponentInstance"); - return NULL; - }""") - - def outputCheckConvertArg(self): - Output(""" - if (CmpInstObj_Convert(v, p_itself)) - return 1; - PyErr_Clear(); - """) - - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -object = MyObjectDefinition('OSAComponentInstance', OBJECTPREFIX, - 'ComponentInstance') -module.addobject(object) - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -Method = OSErrWeakLinkMethodGenerator - -# Test which types we are still missing. -execfile(string.lower(MODPREFIX) + 'typetest.py') - -# Create and populate the lists -functions = [] -methods = [] -execfile(INPUTFILE) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -for f in methods: object.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/osa/setup.py b/project/jni/python/src/Mac/Modules/osa/setup.py deleted file mode 100644 index 635114ef2..000000000 --- a/project/jni/python/src/Mac/Modules/osa/setup.py +++ /dev/null @@ -1,13 +0,0 @@ -# This is a temporary setup script to allow distribution of -# MacPython 2.4 modules for MacPython 2.3. - -from distutils.core import Extension, setup - -setup(name="OSA", version="0.1", - ext_modules=[ - Extension('_OSA', ['_OSAmodule.c'], - extra_link_args=['-framework', 'Carbon']) - ], - py_modules=['OSA.OSA', 'OSA.OSAconst'], - package_dir={'OSA':'../../../Lib/plat-mac/Carbon'} - ) diff --git a/project/jni/python/src/Mac/Modules/qd/_Qdmodule.c b/project/jni/python/src/Mac/Modules/qd/_Qdmodule.c deleted file mode 100644 index 8c98fa1aa..000000000 --- a/project/jni/python/src/Mac/Modules/qd/_Qdmodule.c +++ /dev/null @@ -1,7154 +0,0 @@ - -/* =========================== Module _Qd =========================== */ - -#include "Python.h" - - -#ifndef __LP64__ - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_GrafObj_New(GrafPtr); -extern int _GrafObj_Convert(PyObject *, GrafPtr *); -extern PyObject *_BMObj_New(BitMapPtr); -extern int _BMObj_Convert(PyObject *, BitMapPtr *); -extern PyObject *_QdRGB_New(RGBColorPtr); -extern int _QdRGB_Convert(PyObject *, RGBColorPtr); - -#define GrafObj_New _GrafObj_New -#define GrafObj_Convert _GrafObj_Convert -#define BMObj_New _BMObj_New -#define BMObj_Convert _BMObj_Convert -#define QdRGB_New _QdRGB_New -#define QdRGB_Convert _QdRGB_Convert -#endif - -static PyObject *BMObj_NewCopied(BitMapPtr); - -/* -** Parse/generate RGB records -*/ -PyObject *QdRGB_New(RGBColorPtr itself) -{ - - return Py_BuildValue("lll", (long)itself->red, (long)itself->green, (long)itself->blue); -} - -int QdRGB_Convert(PyObject *v, RGBColorPtr p_itself) -{ - long red, green, blue; - - if( !PyArg_ParseTuple(v, "lll", &red, &green, &blue) ) - return 0; - p_itself->red = (unsigned short)red; - p_itself->green = (unsigned short)green; - p_itself->blue = (unsigned short)blue; - return 1; -} - -/* -** Generate FontInfo records -*/ -static -PyObject *QdFI_New(FontInfo *itself) -{ - - return Py_BuildValue("hhhh", itself->ascent, itself->descent, - itself->widMax, itself->leading); -} - -static PyObject *Qd_Error; - -/* ---------------------- Object type GrafPort ---------------------- */ - -PyTypeObject GrafPort_Type; - -#define GrafObj_Check(x) ((x)->ob_type == &GrafPort_Type || PyObject_TypeCheck((x), &GrafPort_Type)) - -typedef struct GrafPortObject { - PyObject_HEAD - GrafPtr ob_itself; -} GrafPortObject; - -PyObject *GrafObj_New(GrafPtr itself) -{ - GrafPortObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - it = PyObject_NEW(GrafPortObject, &GrafPort_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int GrafObj_Convert(PyObject *v, GrafPtr *p_itself) -{ -#if 1 - { - WindowRef win; - if (WinObj_Convert(v, &win) && v) { - *p_itself = (GrafPtr)GetWindowPort(win); - return 1; - } - PyErr_Clear(); - } -#else - if (DlgObj_Check(v)) { - DialogRef dlg = (DialogRef)((GrafPortObject *)v)->ob_itself; - *p_itself = (GrafPtr)GetWindowPort(GetDialogWindow(dlg)); - return 1; - } - if (WinObj_Check(v)) { - WindowRef win = (WindowRef)((GrafPortObject *)v)->ob_itself; - *p_itself = (GrafPtr)GetWindowPort(win); - return 1; - } -#endif - if (!GrafObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "GrafPort required"); - return 0; - } - *p_itself = ((GrafPortObject *)v)->ob_itself; - return 1; -} - -static void GrafObj_dealloc(GrafPortObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *GrafObj_MacSetPort(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef MacSetPort - PyMac_PRECHECK(MacSetPort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - MacSetPort(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_QDSwapPort(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - CGrafPtr outOldPort; -#ifndef QDSwapPort - PyMac_PRECHECK(QDSwapPort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = QDSwapPort(_self->ob_itself, - &outOldPort); - _res = Py_BuildValue("bO&", - _rv, - GrafObj_New, outOldPort); - return _res; -} - -static PyObject *GrafObj_IsValidPort(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsValidPort - PyMac_PRECHECK(IsValidPort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsValidPort(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *GrafObj_GetPortPixMap(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle _rv; -#ifndef GetPortPixMap - PyMac_PRECHECK(GetPortPixMap); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetPortPixMap(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *GrafObj_GetPortBitMapForCopyBits(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - const BitMap * _rv; -#ifndef GetPortBitMapForCopyBits - PyMac_PRECHECK(GetPortBitMapForCopyBits); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetPortBitMapForCopyBits(_self->ob_itself); - _res = Py_BuildValue("O&", - BMObj_New, _rv); - return _res; -} - -static PyObject *GrafObj_GetPortBounds(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect rect; -#ifndef GetPortBounds - PyMac_PRECHECK(GetPortBounds); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetPortBounds(_self->ob_itself, - &rect); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &rect); - return _res; -} - -static PyObject *GrafObj_GetPortForeColor(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor foreColor; -#ifndef GetPortForeColor - PyMac_PRECHECK(GetPortForeColor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetPortForeColor(_self->ob_itself, - &foreColor); - _res = Py_BuildValue("O&", - QdRGB_New, &foreColor); - return _res; -} - -static PyObject *GrafObj_GetPortBackColor(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor backColor; -#ifndef GetPortBackColor - PyMac_PRECHECK(GetPortBackColor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetPortBackColor(_self->ob_itself, - &backColor); - _res = Py_BuildValue("O&", - QdRGB_New, &backColor); - return _res; -} - -static PyObject *GrafObj_GetPortOpColor(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor opColor; -#ifndef GetPortOpColor - PyMac_PRECHECK(GetPortOpColor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetPortOpColor(_self->ob_itself, - &opColor); - _res = Py_BuildValue("O&", - QdRGB_New, &opColor); - return _res; -} - -static PyObject *GrafObj_GetPortHiliteColor(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor hiliteColor; -#ifndef GetPortHiliteColor - PyMac_PRECHECK(GetPortHiliteColor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetPortHiliteColor(_self->ob_itself, - &hiliteColor); - _res = Py_BuildValue("O&", - QdRGB_New, &hiliteColor); - return _res; -} - -static PyObject *GrafObj_GetPortTextFont(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetPortTextFont - PyMac_PRECHECK(GetPortTextFont); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetPortTextFont(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *GrafObj_GetPortTextFace(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Style _rv; -#ifndef GetPortTextFace - PyMac_PRECHECK(GetPortTextFace); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetPortTextFace(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *GrafObj_GetPortTextMode(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetPortTextMode - PyMac_PRECHECK(GetPortTextMode); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetPortTextMode(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *GrafObj_GetPortTextSize(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetPortTextSize - PyMac_PRECHECK(GetPortTextSize); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetPortTextSize(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *GrafObj_GetPortChExtra(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetPortChExtra - PyMac_PRECHECK(GetPortChExtra); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetPortChExtra(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *GrafObj_GetPortFracHPenLocation(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetPortFracHPenLocation - PyMac_PRECHECK(GetPortFracHPenLocation); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetPortFracHPenLocation(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *GrafObj_GetPortSpExtra(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; -#ifndef GetPortSpExtra - PyMac_PRECHECK(GetPortSpExtra); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetPortSpExtra(_self->ob_itself); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *GrafObj_GetPortPenVisibility(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetPortPenVisibility - PyMac_PRECHECK(GetPortPenVisibility); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetPortPenVisibility(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *GrafObj_GetPortVisibleRegion(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; - RgnHandle visRgn; -#ifndef GetPortVisibleRegion - PyMac_PRECHECK(GetPortVisibleRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &visRgn)) - return NULL; - _rv = GetPortVisibleRegion(_self->ob_itself, - visRgn); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *GrafObj_GetPortClipRegion(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; - RgnHandle clipRgn; -#ifndef GetPortClipRegion - PyMac_PRECHECK(GetPortClipRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &clipRgn)) - return NULL; - _rv = GetPortClipRegion(_self->ob_itself, - clipRgn); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *GrafObj_GetPortBackPixPat(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle _rv; - PixPatHandle backPattern; -#ifndef GetPortBackPixPat - PyMac_PRECHECK(GetPortBackPixPat); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &backPattern)) - return NULL; - _rv = GetPortBackPixPat(_self->ob_itself, - backPattern); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *GrafObj_GetPortPenPixPat(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle _rv; - PixPatHandle penPattern; -#ifndef GetPortPenPixPat - PyMac_PRECHECK(GetPortPenPixPat); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &penPattern)) - return NULL; - _rv = GetPortPenPixPat(_self->ob_itself, - penPattern); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *GrafObj_GetPortFillPixPat(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle _rv; - PixPatHandle fillPattern; -#ifndef GetPortFillPixPat - PyMac_PRECHECK(GetPortFillPixPat); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &fillPattern)) - return NULL; - _rv = GetPortFillPixPat(_self->ob_itself, - fillPattern); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *GrafObj_GetPortPenSize(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point penSize; -#ifndef GetPortPenSize - PyMac_PRECHECK(GetPortPenSize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &penSize)) - return NULL; - GetPortPenSize(_self->ob_itself, - &penSize); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, penSize); - return _res; -} - -static PyObject *GrafObj_GetPortPenMode(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 _rv; -#ifndef GetPortPenMode - PyMac_PRECHECK(GetPortPenMode); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetPortPenMode(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *GrafObj_GetPortPenLocation(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point penLocation; -#ifndef GetPortPenLocation - PyMac_PRECHECK(GetPortPenLocation); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &penLocation)) - return NULL; - GetPortPenLocation(_self->ob_itself, - &penLocation); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, penLocation); - return _res; -} - -static PyObject *GrafObj_IsPortRegionBeingDefined(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsPortRegionBeingDefined - PyMac_PRECHECK(IsPortRegionBeingDefined); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsPortRegionBeingDefined(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *GrafObj_IsPortPictureBeingDefined(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsPortPictureBeingDefined - PyMac_PRECHECK(IsPortPictureBeingDefined); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsPortPictureBeingDefined(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *GrafObj_IsPortPolyBeingDefined(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsPortPolyBeingDefined - PyMac_PRECHECK(IsPortPolyBeingDefined); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsPortPolyBeingDefined(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *GrafObj_IsPortOffscreen(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsPortOffscreen - PyMac_PRECHECK(IsPortOffscreen); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsPortOffscreen(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *GrafObj_IsPortColor(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsPortColor - PyMac_PRECHECK(IsPortColor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsPortColor(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *GrafObj_IsPortVisibleRegionEmpty(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsPortVisibleRegionEmpty - PyMac_PRECHECK(IsPortVisibleRegionEmpty); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsPortVisibleRegionEmpty(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *GrafObj_IsPortClipRegionEmpty(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsPortClipRegionEmpty - PyMac_PRECHECK(IsPortClipRegionEmpty); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsPortClipRegionEmpty(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *GrafObj_SectRegionWithPortClipRegion(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle ioRegion; -#ifndef SectRegionWithPortClipRegion - PyMac_PRECHECK(SectRegionWithPortClipRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &ioRegion)) - return NULL; - SectRegionWithPortClipRegion(_self->ob_itself, - ioRegion); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SectRegionWithPortVisibleRegion(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle ioRegion; -#ifndef SectRegionWithPortVisibleRegion - PyMac_PRECHECK(SectRegionWithPortVisibleRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &ioRegion)) - return NULL; - SectRegionWithPortVisibleRegion(_self->ob_itself, - ioRegion); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SwapPortPicSaveHandle(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; - Handle inPicSaveHdl; -#ifndef SwapPortPicSaveHandle - PyMac_PRECHECK(SwapPortPicSaveHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &inPicSaveHdl)) - return NULL; - _rv = SwapPortPicSaveHandle(_self->ob_itself, - inPicSaveHdl); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *GrafObj_SwapPortPolySaveHandle(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; - Handle inPolySaveHdl; -#ifndef SwapPortPolySaveHandle - PyMac_PRECHECK(SwapPortPolySaveHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &inPolySaveHdl)) - return NULL; - _rv = SwapPortPolySaveHandle(_self->ob_itself, - inPolySaveHdl); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *GrafObj_SwapPortRegionSaveHandle(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; - Handle inRegionSaveHdl; -#ifndef SwapPortRegionSaveHandle - PyMac_PRECHECK(SwapPortRegionSaveHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &inRegionSaveHdl)) - return NULL; - _rv = SwapPortRegionSaveHandle(_self->ob_itself, - inRegionSaveHdl); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *GrafObj_SetPortBounds(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect rect; -#ifndef SetPortBounds - PyMac_PRECHECK(SetPortBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &rect)) - return NULL; - SetPortBounds(_self->ob_itself, - &rect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SetPortOpColor(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor opColor; -#ifndef SetPortOpColor - PyMac_PRECHECK(SetPortOpColor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QdRGB_Convert, &opColor)) - return NULL; - SetPortOpColor(_self->ob_itself, - &opColor); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SetPortTextFont(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short txFont; -#ifndef SetPortTextFont - PyMac_PRECHECK(SetPortTextFont); -#endif - if (!PyArg_ParseTuple(_args, "h", - &txFont)) - return NULL; - SetPortTextFont(_self->ob_itself, - txFont); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SetPortTextSize(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short txSize; -#ifndef SetPortTextSize - PyMac_PRECHECK(SetPortTextSize); -#endif - if (!PyArg_ParseTuple(_args, "h", - &txSize)) - return NULL; - SetPortTextSize(_self->ob_itself, - txSize); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SetPortTextFace(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - StyleParameter face; -#ifndef SetPortTextFace - PyMac_PRECHECK(SetPortTextFace); -#endif - if (!PyArg_ParseTuple(_args, "h", - &face)) - return NULL; - SetPortTextFace(_self->ob_itself, - face); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SetPortTextMode(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short mode; -#ifndef SetPortTextMode - PyMac_PRECHECK(SetPortTextMode); -#endif - if (!PyArg_ParseTuple(_args, "h", - &mode)) - return NULL; - SetPortTextMode(_self->ob_itself, - mode); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SetPortVisibleRegion(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle visRgn; -#ifndef SetPortVisibleRegion - PyMac_PRECHECK(SetPortVisibleRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &visRgn)) - return NULL; - SetPortVisibleRegion(_self->ob_itself, - visRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SetPortClipRegion(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle clipRgn; -#ifndef SetPortClipRegion - PyMac_PRECHECK(SetPortClipRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &clipRgn)) - return NULL; - SetPortClipRegion(_self->ob_itself, - clipRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SetPortPenPixPat(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle penPattern; -#ifndef SetPortPenPixPat - PyMac_PRECHECK(SetPortPenPixPat); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &penPattern)) - return NULL; - SetPortPenPixPat(_self->ob_itself, - penPattern); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SetPortFillPixPat(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle penPattern; -#ifndef SetPortFillPixPat - PyMac_PRECHECK(SetPortFillPixPat); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &penPattern)) - return NULL; - SetPortFillPixPat(_self->ob_itself, - penPattern); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SetPortBackPixPat(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle backPattern; -#ifndef SetPortBackPixPat - PyMac_PRECHECK(SetPortBackPixPat); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &backPattern)) - return NULL; - SetPortBackPixPat(_self->ob_itself, - backPattern); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SetPortPenSize(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point penSize; -#ifndef SetPortPenSize - PyMac_PRECHECK(SetPortPenSize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &penSize)) - return NULL; - SetPortPenSize(_self->ob_itself, - penSize); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SetPortPenMode(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 penMode; -#ifndef SetPortPenMode - PyMac_PRECHECK(SetPortPenMode); -#endif - if (!PyArg_ParseTuple(_args, "l", - &penMode)) - return NULL; - SetPortPenMode(_self->ob_itself, - penMode); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_SetPortFracHPenLocation(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short pnLocHFrac; -#ifndef SetPortFracHPenLocation - PyMac_PRECHECK(SetPortFracHPenLocation); -#endif - if (!PyArg_ParseTuple(_args, "h", - &pnLocHFrac)) - return NULL; - SetPortFracHPenLocation(_self->ob_itself, - pnLocHFrac); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_DisposePort(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef DisposePort - PyMac_PRECHECK(DisposePort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - DisposePort(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_QDLocalToGlobalPoint(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point point; -#ifndef QDLocalToGlobalPoint - PyMac_PRECHECK(QDLocalToGlobalPoint); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &point)) - return NULL; - QDLocalToGlobalPoint(_self->ob_itself, - &point); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, point); - return _res; -} - -static PyObject *GrafObj_QDGlobalToLocalPoint(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point point; -#ifndef QDGlobalToLocalPoint - PyMac_PRECHECK(QDGlobalToLocalPoint); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &point)) - return NULL; - QDGlobalToLocalPoint(_self->ob_itself, - &point); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, point); - return _res; -} - -static PyObject *GrafObj_QDLocalToGlobalRect(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect bounds; -#ifndef QDLocalToGlobalRect - PyMac_PRECHECK(QDLocalToGlobalRect); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - QDLocalToGlobalRect(_self->ob_itself, - &bounds); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &bounds); - return _res; -} - -static PyObject *GrafObj_QDGlobalToLocalRect(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect bounds; -#ifndef QDGlobalToLocalRect - PyMac_PRECHECK(QDGlobalToLocalRect); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - QDGlobalToLocalRect(_self->ob_itself, - &bounds); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &bounds); - return _res; -} - -static PyObject *GrafObj_QDLocalToGlobalRegion(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; - RgnHandle region; -#ifndef QDLocalToGlobalRegion - PyMac_PRECHECK(QDLocalToGlobalRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, ®ion)) - return NULL; - _rv = QDLocalToGlobalRegion(_self->ob_itself, - region); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *GrafObj_QDGlobalToLocalRegion(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; - RgnHandle region; -#ifndef QDGlobalToLocalRegion - PyMac_PRECHECK(QDGlobalToLocalRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, ®ion)) - return NULL; - _rv = QDGlobalToLocalRegion(_self->ob_itself, - region); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *GrafObj_QDIsPortBuffered(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef QDIsPortBuffered - PyMac_PRECHECK(QDIsPortBuffered); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = QDIsPortBuffered(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *GrafObj_QDIsPortBufferDirty(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef QDIsPortBufferDirty - PyMac_PRECHECK(QDIsPortBufferDirty); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = QDIsPortBufferDirty(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *GrafObj_QDFlushPortBuffer(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle region; -#ifndef QDFlushPortBuffer - PyMac_PRECHECK(QDFlushPortBuffer); -#endif - if (!PyArg_ParseTuple(_args, "O&", - OptResObj_Convert, ®ion)) - return NULL; - QDFlushPortBuffer(_self->ob_itself, - region); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_QDGetDirtyRegion(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - RgnHandle rgn; -#ifndef QDGetDirtyRegion - PyMac_PRECHECK(QDGetDirtyRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - _err = QDGetDirtyRegion(_self->ob_itself, - rgn); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *GrafObj_QDSetDirtyRegion(GrafPortObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - RgnHandle rgn; -#ifndef QDSetDirtyRegion - PyMac_PRECHECK(QDSetDirtyRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - _err = QDSetDirtyRegion(_self->ob_itself, - rgn); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef GrafObj_methods[] = { - {"MacSetPort", (PyCFunction)GrafObj_MacSetPort, 1, - PyDoc_STR("() -> None")}, - {"QDSwapPort", (PyCFunction)GrafObj_QDSwapPort, 1, - PyDoc_STR("() -> (Boolean _rv, CGrafPtr outOldPort)")}, - {"IsValidPort", (PyCFunction)GrafObj_IsValidPort, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"GetPortPixMap", (PyCFunction)GrafObj_GetPortPixMap, 1, - PyDoc_STR("() -> (PixMapHandle _rv)")}, - {"GetPortBitMapForCopyBits", (PyCFunction)GrafObj_GetPortBitMapForCopyBits, 1, - PyDoc_STR("() -> (const BitMap * _rv)")}, - {"GetPortBounds", (PyCFunction)GrafObj_GetPortBounds, 1, - PyDoc_STR("() -> (Rect rect)")}, - {"GetPortForeColor", (PyCFunction)GrafObj_GetPortForeColor, 1, - PyDoc_STR("() -> (RGBColor foreColor)")}, - {"GetPortBackColor", (PyCFunction)GrafObj_GetPortBackColor, 1, - PyDoc_STR("() -> (RGBColor backColor)")}, - {"GetPortOpColor", (PyCFunction)GrafObj_GetPortOpColor, 1, - PyDoc_STR("() -> (RGBColor opColor)")}, - {"GetPortHiliteColor", (PyCFunction)GrafObj_GetPortHiliteColor, 1, - PyDoc_STR("() -> (RGBColor hiliteColor)")}, - {"GetPortTextFont", (PyCFunction)GrafObj_GetPortTextFont, 1, - PyDoc_STR("() -> (short _rv)")}, - {"GetPortTextFace", (PyCFunction)GrafObj_GetPortTextFace, 1, - PyDoc_STR("() -> (Style _rv)")}, - {"GetPortTextMode", (PyCFunction)GrafObj_GetPortTextMode, 1, - PyDoc_STR("() -> (short _rv)")}, - {"GetPortTextSize", (PyCFunction)GrafObj_GetPortTextSize, 1, - PyDoc_STR("() -> (short _rv)")}, - {"GetPortChExtra", (PyCFunction)GrafObj_GetPortChExtra, 1, - PyDoc_STR("() -> (short _rv)")}, - {"GetPortFracHPenLocation", (PyCFunction)GrafObj_GetPortFracHPenLocation, 1, - PyDoc_STR("() -> (short _rv)")}, - {"GetPortSpExtra", (PyCFunction)GrafObj_GetPortSpExtra, 1, - PyDoc_STR("() -> (Fixed _rv)")}, - {"GetPortPenVisibility", (PyCFunction)GrafObj_GetPortPenVisibility, 1, - PyDoc_STR("() -> (short _rv)")}, - {"GetPortVisibleRegion", (PyCFunction)GrafObj_GetPortVisibleRegion, 1, - PyDoc_STR("(RgnHandle visRgn) -> (RgnHandle _rv)")}, - {"GetPortClipRegion", (PyCFunction)GrafObj_GetPortClipRegion, 1, - PyDoc_STR("(RgnHandle clipRgn) -> (RgnHandle _rv)")}, - {"GetPortBackPixPat", (PyCFunction)GrafObj_GetPortBackPixPat, 1, - PyDoc_STR("(PixPatHandle backPattern) -> (PixPatHandle _rv)")}, - {"GetPortPenPixPat", (PyCFunction)GrafObj_GetPortPenPixPat, 1, - PyDoc_STR("(PixPatHandle penPattern) -> (PixPatHandle _rv)")}, - {"GetPortFillPixPat", (PyCFunction)GrafObj_GetPortFillPixPat, 1, - PyDoc_STR("(PixPatHandle fillPattern) -> (PixPatHandle _rv)")}, - {"GetPortPenSize", (PyCFunction)GrafObj_GetPortPenSize, 1, - PyDoc_STR("(Point penSize) -> (Point penSize)")}, - {"GetPortPenMode", (PyCFunction)GrafObj_GetPortPenMode, 1, - PyDoc_STR("() -> (SInt32 _rv)")}, - {"GetPortPenLocation", (PyCFunction)GrafObj_GetPortPenLocation, 1, - PyDoc_STR("(Point penLocation) -> (Point penLocation)")}, - {"IsPortRegionBeingDefined", (PyCFunction)GrafObj_IsPortRegionBeingDefined, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"IsPortPictureBeingDefined", (PyCFunction)GrafObj_IsPortPictureBeingDefined, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"IsPortPolyBeingDefined", (PyCFunction)GrafObj_IsPortPolyBeingDefined, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"IsPortOffscreen", (PyCFunction)GrafObj_IsPortOffscreen, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"IsPortColor", (PyCFunction)GrafObj_IsPortColor, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"IsPortVisibleRegionEmpty", (PyCFunction)GrafObj_IsPortVisibleRegionEmpty, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"IsPortClipRegionEmpty", (PyCFunction)GrafObj_IsPortClipRegionEmpty, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"SectRegionWithPortClipRegion", (PyCFunction)GrafObj_SectRegionWithPortClipRegion, 1, - PyDoc_STR("(RgnHandle ioRegion) -> None")}, - {"SectRegionWithPortVisibleRegion", (PyCFunction)GrafObj_SectRegionWithPortVisibleRegion, 1, - PyDoc_STR("(RgnHandle ioRegion) -> None")}, - {"SwapPortPicSaveHandle", (PyCFunction)GrafObj_SwapPortPicSaveHandle, 1, - PyDoc_STR("(Handle inPicSaveHdl) -> (Handle _rv)")}, - {"SwapPortPolySaveHandle", (PyCFunction)GrafObj_SwapPortPolySaveHandle, 1, - PyDoc_STR("(Handle inPolySaveHdl) -> (Handle _rv)")}, - {"SwapPortRegionSaveHandle", (PyCFunction)GrafObj_SwapPortRegionSaveHandle, 1, - PyDoc_STR("(Handle inRegionSaveHdl) -> (Handle _rv)")}, - {"SetPortBounds", (PyCFunction)GrafObj_SetPortBounds, 1, - PyDoc_STR("(Rect rect) -> None")}, - {"SetPortOpColor", (PyCFunction)GrafObj_SetPortOpColor, 1, - PyDoc_STR("(RGBColor opColor) -> None")}, - {"SetPortTextFont", (PyCFunction)GrafObj_SetPortTextFont, 1, - PyDoc_STR("(short txFont) -> None")}, - {"SetPortTextSize", (PyCFunction)GrafObj_SetPortTextSize, 1, - PyDoc_STR("(short txSize) -> None")}, - {"SetPortTextFace", (PyCFunction)GrafObj_SetPortTextFace, 1, - PyDoc_STR("(StyleParameter face) -> None")}, - {"SetPortTextMode", (PyCFunction)GrafObj_SetPortTextMode, 1, - PyDoc_STR("(short mode) -> None")}, - {"SetPortVisibleRegion", (PyCFunction)GrafObj_SetPortVisibleRegion, 1, - PyDoc_STR("(RgnHandle visRgn) -> None")}, - {"SetPortClipRegion", (PyCFunction)GrafObj_SetPortClipRegion, 1, - PyDoc_STR("(RgnHandle clipRgn) -> None")}, - {"SetPortPenPixPat", (PyCFunction)GrafObj_SetPortPenPixPat, 1, - PyDoc_STR("(PixPatHandle penPattern) -> None")}, - {"SetPortFillPixPat", (PyCFunction)GrafObj_SetPortFillPixPat, 1, - PyDoc_STR("(PixPatHandle penPattern) -> None")}, - {"SetPortBackPixPat", (PyCFunction)GrafObj_SetPortBackPixPat, 1, - PyDoc_STR("(PixPatHandle backPattern) -> None")}, - {"SetPortPenSize", (PyCFunction)GrafObj_SetPortPenSize, 1, - PyDoc_STR("(Point penSize) -> None")}, - {"SetPortPenMode", (PyCFunction)GrafObj_SetPortPenMode, 1, - PyDoc_STR("(SInt32 penMode) -> None")}, - {"SetPortFracHPenLocation", (PyCFunction)GrafObj_SetPortFracHPenLocation, 1, - PyDoc_STR("(short pnLocHFrac) -> None")}, - {"DisposePort", (PyCFunction)GrafObj_DisposePort, 1, - PyDoc_STR("() -> None")}, - {"QDLocalToGlobalPoint", (PyCFunction)GrafObj_QDLocalToGlobalPoint, 1, - PyDoc_STR("(Point point) -> (Point point)")}, - {"QDGlobalToLocalPoint", (PyCFunction)GrafObj_QDGlobalToLocalPoint, 1, - PyDoc_STR("(Point point) -> (Point point)")}, - {"QDLocalToGlobalRect", (PyCFunction)GrafObj_QDLocalToGlobalRect, 1, - PyDoc_STR("() -> (Rect bounds)")}, - {"QDGlobalToLocalRect", (PyCFunction)GrafObj_QDGlobalToLocalRect, 1, - PyDoc_STR("() -> (Rect bounds)")}, - {"QDLocalToGlobalRegion", (PyCFunction)GrafObj_QDLocalToGlobalRegion, 1, - PyDoc_STR("(RgnHandle region) -> (RgnHandle _rv)")}, - {"QDGlobalToLocalRegion", (PyCFunction)GrafObj_QDGlobalToLocalRegion, 1, - PyDoc_STR("(RgnHandle region) -> (RgnHandle _rv)")}, - {"QDIsPortBuffered", (PyCFunction)GrafObj_QDIsPortBuffered, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"QDIsPortBufferDirty", (PyCFunction)GrafObj_QDIsPortBufferDirty, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"QDFlushPortBuffer", (PyCFunction)GrafObj_QDFlushPortBuffer, 1, - PyDoc_STR("(RgnHandle region) -> None")}, - {"QDGetDirtyRegion", (PyCFunction)GrafObj_QDGetDirtyRegion, 1, - PyDoc_STR("(RgnHandle rgn) -> None")}, - {"QDSetDirtyRegion", (PyCFunction)GrafObj_QDSetDirtyRegion, 1, - PyDoc_STR("(RgnHandle rgn) -> None")}, - {NULL, NULL, 0} -}; - -static PyObject *GrafObj_get_visRgn(GrafPortObject *self, void *closure) -{ - RgnHandle h=NewRgn(); /* XXXX wrong dispose routine */ - return Py_BuildValue("O&", ResObj_New, (Handle)GetPortVisibleRegion(self->ob_itself, h)); - -} - -#define GrafObj_set_visRgn NULL - -static PyObject *GrafObj_get_clipRgn(GrafPortObject *self, void *closure) -{ - RgnHandle h=NewRgn(); /* XXXX wrong dispose routine */ - return Py_BuildValue("O&", ResObj_New, (Handle)GetPortClipRegion(self->ob_itself, h)); - -} - -#define GrafObj_set_clipRgn NULL - -static PyGetSetDef GrafObj_getsetlist[] = { - {"visRgn", (getter)GrafObj_get_visRgn, (setter)GrafObj_set_visRgn, "Convenience attribute: return a copy of the visible region"}, - {"clipRgn", (getter)GrafObj_get_clipRgn, (setter)GrafObj_set_clipRgn, "Convenience attribute: return a copy of the clipping region"}, - {NULL, NULL, NULL, NULL}, -}; - - -#define GrafObj_compare NULL - -#define GrafObj_repr NULL - -#define GrafObj_hash NULL -#define GrafObj_tp_init 0 - -#define GrafObj_tp_alloc PyType_GenericAlloc - -static PyObject *GrafObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - GrafPtr itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, GrafObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((GrafPortObject *)_self)->ob_itself = itself; - return _self; -} - -#define GrafObj_tp_free PyObject_Del - - -PyTypeObject GrafPort_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Qd.GrafPort", /*tp_name*/ - sizeof(GrafPortObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) GrafObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) GrafObj_compare, /*tp_compare*/ - (reprfunc) GrafObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) GrafObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - GrafObj_methods, /* tp_methods */ - 0, /*tp_members*/ - GrafObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - GrafObj_tp_init, /* tp_init */ - GrafObj_tp_alloc, /* tp_alloc */ - GrafObj_tp_new, /* tp_new */ - GrafObj_tp_free, /* tp_free */ -}; - -/* -------------------- End object type GrafPort -------------------- */ - - -/* ----------------------- Object type BitMap ----------------------- */ - -PyTypeObject BitMap_Type; - -#define BMObj_Check(x) ((x)->ob_type == &BitMap_Type || PyObject_TypeCheck((x), &BitMap_Type)) - -typedef struct BitMapObject { - PyObject_HEAD - BitMapPtr ob_itself; - PyObject *referred_object; - BitMap *referred_bitmap; -} BitMapObject; - -PyObject *BMObj_New(BitMapPtr itself) -{ - BitMapObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - it = PyObject_NEW(BitMapObject, &BitMap_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - it->referred_object = NULL; - it->referred_bitmap = NULL; - return (PyObject *)it; -} - -int BMObj_Convert(PyObject *v, BitMapPtr *p_itself) -{ - if (!BMObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "BitMap required"); - return 0; - } - *p_itself = ((BitMapObject *)v)->ob_itself; - return 1; -} - -static void BMObj_dealloc(BitMapObject *self) -{ - Py_XDECREF(self->referred_object); - if (self->referred_bitmap) free(self->referred_bitmap); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *BMObj_getdata(BitMapObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - int from, length; - char *cp; - - if ( !PyArg_ParseTuple(_args, "ii", &from, &length) ) - return NULL; - cp = _self->ob_itself->baseAddr+from; - _res = PyString_FromStringAndSize(cp, length); - return _res; - -} - -static PyObject *BMObj_putdata(BitMapObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - int from, length; - char *cp, *icp; - - if ( !PyArg_ParseTuple(_args, "is#", &from, &icp, &length) ) - return NULL; - cp = _self->ob_itself->baseAddr+from; - memcpy(cp, icp, length); - Py_INCREF(Py_None); - _res = Py_None; - return _res; - -} - -static PyMethodDef BMObj_methods[] = { - {"getdata", (PyCFunction)BMObj_getdata, 1, - PyDoc_STR("(int start, int size) -> string. Return bytes from the bitmap")}, - {"putdata", (PyCFunction)BMObj_putdata, 1, - PyDoc_STR("(int start, string data). Store bytes into the bitmap")}, - {NULL, NULL, 0} -}; - -static PyObject *BMObj_get_baseAddr(BitMapObject *self, void *closure) -{ - return PyInt_FromLong((long)self->ob_itself->baseAddr); -} - -#define BMObj_set_baseAddr NULL - -static PyObject *BMObj_get_rowBytes(BitMapObject *self, void *closure) -{ - return PyInt_FromLong((long)self->ob_itself->rowBytes); -} - -#define BMObj_set_rowBytes NULL - -static PyObject *BMObj_get_bounds(BitMapObject *self, void *closure) -{ - return Py_BuildValue("O&", PyMac_BuildRect, &self->ob_itself->bounds); -} - -#define BMObj_set_bounds NULL - -static PyObject *BMObj_get_bitmap_data(BitMapObject *self, void *closure) -{ - return PyString_FromStringAndSize((char *)self->ob_itself, sizeof(BitMap)); -} - -#define BMObj_set_bitmap_data NULL - -static PyObject *BMObj_get_pixmap_data(BitMapObject *self, void *closure) -{ - return PyString_FromStringAndSize((char *)self->ob_itself, sizeof(PixMap)); -} - -#define BMObj_set_pixmap_data NULL - -static PyGetSetDef BMObj_getsetlist[] = { - {"baseAddr", (getter)BMObj_get_baseAddr, (setter)BMObj_set_baseAddr, NULL}, - {"rowBytes", (getter)BMObj_get_rowBytes, (setter)BMObj_set_rowBytes, NULL}, - {"bounds", (getter)BMObj_get_bounds, (setter)BMObj_set_bounds, NULL}, - {"bitmap_data", (getter)BMObj_get_bitmap_data, (setter)BMObj_set_bitmap_data, NULL}, - {"pixmap_data", (getter)BMObj_get_pixmap_data, (setter)BMObj_set_pixmap_data, NULL}, - {NULL, NULL, NULL, NULL}, -}; - - -#define BMObj_compare NULL - -#define BMObj_repr NULL - -#define BMObj_hash NULL -#define BMObj_tp_init 0 - -#define BMObj_tp_alloc PyType_GenericAlloc - -static PyObject *BMObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - BitMapPtr itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, BMObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((BitMapObject *)_self)->ob_itself = itself; - return _self; -} - -#define BMObj_tp_free PyObject_Del - - -PyTypeObject BitMap_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Qd.BitMap", /*tp_name*/ - sizeof(BitMapObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) BMObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) BMObj_compare, /*tp_compare*/ - (reprfunc) BMObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) BMObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - BMObj_methods, /* tp_methods */ - 0, /*tp_members*/ - BMObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - BMObj_tp_init, /* tp_init */ - BMObj_tp_alloc, /* tp_alloc */ - BMObj_tp_new, /* tp_new */ - BMObj_tp_free, /* tp_free */ -}; - -/* --------------------- End object type BitMap --------------------- */ - - -static PyObject *Qd_GetPort(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GrafPtr port; -#ifndef GetPort - PyMac_PRECHECK(GetPort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetPort(&port); - _res = Py_BuildValue("O&", - GrafObj_New, port); - return _res; -} - -static PyObject *Qd_GrafDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short device; -#ifndef GrafDevice - PyMac_PRECHECK(GrafDevice); -#endif - if (!PyArg_ParseTuple(_args, "h", - &device)) - return NULL; - GrafDevice(device); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_SetPortBits(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - BitMapPtr bm; -#ifndef SetPortBits - PyMac_PRECHECK(SetPortBits); -#endif - if (!PyArg_ParseTuple(_args, "O&", - BMObj_Convert, &bm)) - return NULL; - SetPortBits(bm); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_PortSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short width; - short height; -#ifndef PortSize - PyMac_PRECHECK(PortSize); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &width, - &height)) - return NULL; - PortSize(width, - height); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MovePortTo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short leftGlobal; - short topGlobal; -#ifndef MovePortTo - PyMac_PRECHECK(MovePortTo); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &leftGlobal, - &topGlobal)) - return NULL; - MovePortTo(leftGlobal, - topGlobal); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_SetOrigin(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short h; - short v; -#ifndef SetOrigin - PyMac_PRECHECK(SetOrigin); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &h, - &v)) - return NULL; - SetOrigin(h, - v); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_SetClip(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; -#ifndef SetClip - PyMac_PRECHECK(SetClip); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - SetClip(rgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_GetClip(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; -#ifndef GetClip - PyMac_PRECHECK(GetClip); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - GetClip(rgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_ClipRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; -#ifndef ClipRect - PyMac_PRECHECK(ClipRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &r)) - return NULL; - ClipRect(&r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_BackPat(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Pattern *pat__in__; - int pat__in_len__; -#ifndef BackPat - PyMac_PRECHECK(BackPat); -#endif - if (!PyArg_ParseTuple(_args, "s#", - (char **)&pat__in__, &pat__in_len__)) - return NULL; - if (pat__in_len__ != sizeof(Pattern)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)"); - goto pat__error__; - } - BackPat(pat__in__); - Py_INCREF(Py_None); - _res = Py_None; - pat__error__: ; - return _res; -} - -static PyObject *Qd_InitCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef InitCursor - PyMac_PRECHECK(InitCursor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - InitCursor(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacSetCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Cursor *crsr__in__; - int crsr__in_len__; -#ifndef MacSetCursor - PyMac_PRECHECK(MacSetCursor); -#endif - if (!PyArg_ParseTuple(_args, "s#", - (char **)&crsr__in__, &crsr__in_len__)) - return NULL; - if (crsr__in_len__ != sizeof(Cursor)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Cursor)"); - goto crsr__error__; - } - MacSetCursor(crsr__in__); - Py_INCREF(Py_None); - _res = Py_None; - crsr__error__: ; - return _res; -} - -static PyObject *Qd_HideCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef HideCursor - PyMac_PRECHECK(HideCursor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - HideCursor(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacShowCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef MacShowCursor - PyMac_PRECHECK(MacShowCursor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - MacShowCursor(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_ObscureCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ObscureCursor - PyMac_PRECHECK(ObscureCursor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ObscureCursor(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_HidePen(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef HidePen - PyMac_PRECHECK(HidePen); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - HidePen(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_ShowPen(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ShowPen - PyMac_PRECHECK(ShowPen); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ShowPen(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_GetPen(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point pt; -#ifndef GetPen - PyMac_PRECHECK(GetPen); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetPen(&pt); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, pt); - return _res; -} - -static PyObject *Qd_GetPenState(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PenState pnState__out__; -#ifndef GetPenState - PyMac_PRECHECK(GetPenState); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetPenState(&pnState__out__); - _res = Py_BuildValue("s#", - (char *)&pnState__out__, (int)sizeof(PenState)); - return _res; -} - -static PyObject *Qd_SetPenState(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PenState *pnState__in__; - int pnState__in_len__; -#ifndef SetPenState - PyMac_PRECHECK(SetPenState); -#endif - if (!PyArg_ParseTuple(_args, "s#", - (char **)&pnState__in__, &pnState__in_len__)) - return NULL; - if (pnState__in_len__ != sizeof(PenState)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(PenState)"); - goto pnState__error__; - } - SetPenState(pnState__in__); - Py_INCREF(Py_None); - _res = Py_None; - pnState__error__: ; - return _res; -} - -static PyObject *Qd_PenSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short width; - short height; -#ifndef PenSize - PyMac_PRECHECK(PenSize); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &width, - &height)) - return NULL; - PenSize(width, - height); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_PenMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short mode; -#ifndef PenMode - PyMac_PRECHECK(PenMode); -#endif - if (!PyArg_ParseTuple(_args, "h", - &mode)) - return NULL; - PenMode(mode); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_PenPat(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Pattern *pat__in__; - int pat__in_len__; -#ifndef PenPat - PyMac_PRECHECK(PenPat); -#endif - if (!PyArg_ParseTuple(_args, "s#", - (char **)&pat__in__, &pat__in_len__)) - return NULL; - if (pat__in_len__ != sizeof(Pattern)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)"); - goto pat__error__; - } - PenPat(pat__in__); - Py_INCREF(Py_None); - _res = Py_None; - pat__error__: ; - return _res; -} - -static PyObject *Qd_PenNormal(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef PenNormal - PyMac_PRECHECK(PenNormal); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - PenNormal(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MoveTo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short h; - short v; -#ifndef MoveTo - PyMac_PRECHECK(MoveTo); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &h, - &v)) - return NULL; - MoveTo(h, - v); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_Move(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short dh; - short dv; -#ifndef Move - PyMac_PRECHECK(Move); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &dh, - &dv)) - return NULL; - Move(dh, - dv); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacLineTo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short h; - short v; -#ifndef MacLineTo - PyMac_PRECHECK(MacLineTo); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &h, - &v)) - return NULL; - MacLineTo(h, - v); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_Line(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short dh; - short dv; -#ifndef Line - PyMac_PRECHECK(Line); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &dh, - &dv)) - return NULL; - Line(dh, - dv); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_ForeColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long color; -#ifndef ForeColor - PyMac_PRECHECK(ForeColor); -#endif - if (!PyArg_ParseTuple(_args, "l", - &color)) - return NULL; - ForeColor(color); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_BackColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long color; -#ifndef BackColor - PyMac_PRECHECK(BackColor); -#endif - if (!PyArg_ParseTuple(_args, "l", - &color)) - return NULL; - BackColor(color); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_ColorBit(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short whichBit; -#ifndef ColorBit - PyMac_PRECHECK(ColorBit); -#endif - if (!PyArg_ParseTuple(_args, "h", - &whichBit)) - return NULL; - ColorBit(whichBit); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacSetRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short left; - short top; - short right; - short bottom; -#ifndef MacSetRect - PyMac_PRECHECK(MacSetRect); -#endif - if (!PyArg_ParseTuple(_args, "hhhh", - &left, - &top, - &right, - &bottom)) - return NULL; - MacSetRect(&r, - left, - top, - right, - bottom); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &r); - return _res; -} - -static PyObject *Qd_MacOffsetRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short dh; - short dv; -#ifndef MacOffsetRect - PyMac_PRECHECK(MacOffsetRect); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetRect, &r, - &dh, - &dv)) - return NULL; - MacOffsetRect(&r, - dh, - dv); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &r); - return _res; -} - -static PyObject *Qd_MacInsetRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short dh; - short dv; -#ifndef MacInsetRect - PyMac_PRECHECK(MacInsetRect); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetRect, &r, - &dh, - &dv)) - return NULL; - MacInsetRect(&r, - dh, - dv); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &r); - return _res; -} - -static PyObject *Qd_SectRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Rect src1; - Rect src2; - Rect dstRect; -#ifndef SectRect - PyMac_PRECHECK(SectRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &src1, - PyMac_GetRect, &src2)) - return NULL; - _rv = SectRect(&src1, - &src2, - &dstRect); - _res = Py_BuildValue("bO&", - _rv, - PyMac_BuildRect, &dstRect); - return _res; -} - -static PyObject *Qd_MacUnionRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect src1; - Rect src2; - Rect dstRect; -#ifndef MacUnionRect - PyMac_PRECHECK(MacUnionRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &src1, - PyMac_GetRect, &src2)) - return NULL; - MacUnionRect(&src1, - &src2, - &dstRect); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &dstRect); - return _res; -} - -static PyObject *Qd_MacEqualRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Rect rect1; - Rect rect2; -#ifndef MacEqualRect - PyMac_PRECHECK(MacEqualRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &rect1, - PyMac_GetRect, &rect2)) - return NULL; - _rv = MacEqualRect(&rect1, - &rect2); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_EmptyRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Rect r; -#ifndef EmptyRect - PyMac_PRECHECK(EmptyRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &r)) - return NULL; - _rv = EmptyRect(&r); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_MacFrameRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; -#ifndef MacFrameRect - PyMac_PRECHECK(MacFrameRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &r)) - return NULL; - MacFrameRect(&r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_PaintRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; -#ifndef PaintRect - PyMac_PRECHECK(PaintRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &r)) - return NULL; - PaintRect(&r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_EraseRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; -#ifndef EraseRect - PyMac_PRECHECK(EraseRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &r)) - return NULL; - EraseRect(&r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacInvertRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; -#ifndef MacInvertRect - PyMac_PRECHECK(MacInvertRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &r)) - return NULL; - MacInvertRect(&r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacFillRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - Pattern *pat__in__; - int pat__in_len__; -#ifndef MacFillRect - PyMac_PRECHECK(MacFillRect); -#endif - if (!PyArg_ParseTuple(_args, "O&s#", - PyMac_GetRect, &r, - (char **)&pat__in__, &pat__in_len__)) - return NULL; - if (pat__in_len__ != sizeof(Pattern)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)"); - goto pat__error__; - } - MacFillRect(&r, - pat__in__); - Py_INCREF(Py_None); - _res = Py_None; - pat__error__: ; - return _res; -} - -static PyObject *Qd_FrameOval(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; -#ifndef FrameOval - PyMac_PRECHECK(FrameOval); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &r)) - return NULL; - FrameOval(&r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_PaintOval(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; -#ifndef PaintOval - PyMac_PRECHECK(PaintOval); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &r)) - return NULL; - PaintOval(&r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_EraseOval(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; -#ifndef EraseOval - PyMac_PRECHECK(EraseOval); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &r)) - return NULL; - EraseOval(&r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_InvertOval(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; -#ifndef InvertOval - PyMac_PRECHECK(InvertOval); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &r)) - return NULL; - InvertOval(&r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_FillOval(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - Pattern *pat__in__; - int pat__in_len__; -#ifndef FillOval - PyMac_PRECHECK(FillOval); -#endif - if (!PyArg_ParseTuple(_args, "O&s#", - PyMac_GetRect, &r, - (char **)&pat__in__, &pat__in_len__)) - return NULL; - if (pat__in_len__ != sizeof(Pattern)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)"); - goto pat__error__; - } - FillOval(&r, - pat__in__); - Py_INCREF(Py_None); - _res = Py_None; - pat__error__: ; - return _res; -} - -static PyObject *Qd_FrameRoundRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short ovalWidth; - short ovalHeight; -#ifndef FrameRoundRect - PyMac_PRECHECK(FrameRoundRect); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetRect, &r, - &ovalWidth, - &ovalHeight)) - return NULL; - FrameRoundRect(&r, - ovalWidth, - ovalHeight); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_PaintRoundRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short ovalWidth; - short ovalHeight; -#ifndef PaintRoundRect - PyMac_PRECHECK(PaintRoundRect); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetRect, &r, - &ovalWidth, - &ovalHeight)) - return NULL; - PaintRoundRect(&r, - ovalWidth, - ovalHeight); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_EraseRoundRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short ovalWidth; - short ovalHeight; -#ifndef EraseRoundRect - PyMac_PRECHECK(EraseRoundRect); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetRect, &r, - &ovalWidth, - &ovalHeight)) - return NULL; - EraseRoundRect(&r, - ovalWidth, - ovalHeight); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_InvertRoundRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short ovalWidth; - short ovalHeight; -#ifndef InvertRoundRect - PyMac_PRECHECK(InvertRoundRect); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetRect, &r, - &ovalWidth, - &ovalHeight)) - return NULL; - InvertRoundRect(&r, - ovalWidth, - ovalHeight); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_FillRoundRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short ovalWidth; - short ovalHeight; - Pattern *pat__in__; - int pat__in_len__; -#ifndef FillRoundRect - PyMac_PRECHECK(FillRoundRect); -#endif - if (!PyArg_ParseTuple(_args, "O&hhs#", - PyMac_GetRect, &r, - &ovalWidth, - &ovalHeight, - (char **)&pat__in__, &pat__in_len__)) - return NULL; - if (pat__in_len__ != sizeof(Pattern)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)"); - goto pat__error__; - } - FillRoundRect(&r, - ovalWidth, - ovalHeight, - pat__in__); - Py_INCREF(Py_None); - _res = Py_None; - pat__error__: ; - return _res; -} - -static PyObject *Qd_FrameArc(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short startAngle; - short arcAngle; -#ifndef FrameArc - PyMac_PRECHECK(FrameArc); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetRect, &r, - &startAngle, - &arcAngle)) - return NULL; - FrameArc(&r, - startAngle, - arcAngle); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_PaintArc(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short startAngle; - short arcAngle; -#ifndef PaintArc - PyMac_PRECHECK(PaintArc); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetRect, &r, - &startAngle, - &arcAngle)) - return NULL; - PaintArc(&r, - startAngle, - arcAngle); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_EraseArc(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short startAngle; - short arcAngle; -#ifndef EraseArc - PyMac_PRECHECK(EraseArc); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetRect, &r, - &startAngle, - &arcAngle)) - return NULL; - EraseArc(&r, - startAngle, - arcAngle); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_InvertArc(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short startAngle; - short arcAngle; -#ifndef InvertArc - PyMac_PRECHECK(InvertArc); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetRect, &r, - &startAngle, - &arcAngle)) - return NULL; - InvertArc(&r, - startAngle, - arcAngle); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_FillArc(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short startAngle; - short arcAngle; - Pattern *pat__in__; - int pat__in_len__; -#ifndef FillArc - PyMac_PRECHECK(FillArc); -#endif - if (!PyArg_ParseTuple(_args, "O&hhs#", - PyMac_GetRect, &r, - &startAngle, - &arcAngle, - (char **)&pat__in__, &pat__in_len__)) - return NULL; - if (pat__in_len__ != sizeof(Pattern)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)"); - goto pat__error__; - } - FillArc(&r, - startAngle, - arcAngle, - pat__in__); - Py_INCREF(Py_None); - _res = Py_None; - pat__error__: ; - return _res; -} - -static PyObject *Qd_NewRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; -#ifndef NewRgn - PyMac_PRECHECK(NewRgn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = NewRgn(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_OpenRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef OpenRgn - PyMac_PRECHECK(OpenRgn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - OpenRgn(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_CloseRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle dstRgn; -#ifndef CloseRgn - PyMac_PRECHECK(CloseRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &dstRgn)) - return NULL; - CloseRgn(dstRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_BitMapToRegion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - RgnHandle region; - BitMapPtr bMap; -#ifndef BitMapToRegion - PyMac_PRECHECK(BitMapToRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, ®ion, - BMObj_Convert, &bMap)) - return NULL; - _err = BitMapToRegion(region, - bMap); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_RgnToHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle region; - Handle flattenedRgnDataHdl; -#ifndef RgnToHandle - PyMac_PRECHECK(RgnToHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, ®ion, - ResObj_Convert, &flattenedRgnDataHdl)) - return NULL; - RgnToHandle(region, - flattenedRgnDataHdl); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_DisposeRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; -#ifndef DisposeRgn - PyMac_PRECHECK(DisposeRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - DisposeRgn(rgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacCopyRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle srcRgn; - RgnHandle dstRgn; -#ifndef MacCopyRgn - PyMac_PRECHECK(MacCopyRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &srcRgn, - ResObj_Convert, &dstRgn)) - return NULL; - MacCopyRgn(srcRgn, - dstRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_SetEmptyRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; -#ifndef SetEmptyRgn - PyMac_PRECHECK(SetEmptyRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - SetEmptyRgn(rgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacSetRectRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; - short left; - short top; - short right; - short bottom; -#ifndef MacSetRectRgn - PyMac_PRECHECK(MacSetRectRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&hhhh", - ResObj_Convert, &rgn, - &left, - &top, - &right, - &bottom)) - return NULL; - MacSetRectRgn(rgn, - left, - top, - right, - bottom); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_RectRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; - Rect r; -#ifndef RectRgn - PyMac_PRECHECK(RectRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &rgn, - PyMac_GetRect, &r)) - return NULL; - RectRgn(rgn, - &r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacOffsetRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; - short dh; - short dv; -#ifndef MacOffsetRgn - PyMac_PRECHECK(MacOffsetRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - ResObj_Convert, &rgn, - &dh, - &dv)) - return NULL; - MacOffsetRgn(rgn, - dh, - dv); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_InsetRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; - short dh; - short dv; -#ifndef InsetRgn - PyMac_PRECHECK(InsetRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - ResObj_Convert, &rgn, - &dh, - &dv)) - return NULL; - InsetRgn(rgn, - dh, - dv); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_SectRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle srcRgnA; - RgnHandle srcRgnB; - RgnHandle dstRgn; -#ifndef SectRgn - PyMac_PRECHECK(SectRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &srcRgnA, - ResObj_Convert, &srcRgnB, - ResObj_Convert, &dstRgn)) - return NULL; - SectRgn(srcRgnA, - srcRgnB, - dstRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacUnionRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle srcRgnA; - RgnHandle srcRgnB; - RgnHandle dstRgn; -#ifndef MacUnionRgn - PyMac_PRECHECK(MacUnionRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &srcRgnA, - ResObj_Convert, &srcRgnB, - ResObj_Convert, &dstRgn)) - return NULL; - MacUnionRgn(srcRgnA, - srcRgnB, - dstRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_DiffRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle srcRgnA; - RgnHandle srcRgnB; - RgnHandle dstRgn; -#ifndef DiffRgn - PyMac_PRECHECK(DiffRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &srcRgnA, - ResObj_Convert, &srcRgnB, - ResObj_Convert, &dstRgn)) - return NULL; - DiffRgn(srcRgnA, - srcRgnB, - dstRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacXorRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle srcRgnA; - RgnHandle srcRgnB; - RgnHandle dstRgn; -#ifndef MacXorRgn - PyMac_PRECHECK(MacXorRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &srcRgnA, - ResObj_Convert, &srcRgnB, - ResObj_Convert, &dstRgn)) - return NULL; - MacXorRgn(srcRgnA, - srcRgnB, - dstRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_RectInRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Rect r; - RgnHandle rgn; -#ifndef RectInRgn - PyMac_PRECHECK(RectInRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &r, - ResObj_Convert, &rgn)) - return NULL; - _rv = RectInRgn(&r, - rgn); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_MacEqualRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - RgnHandle rgnA; - RgnHandle rgnB; -#ifndef MacEqualRgn - PyMac_PRECHECK(MacEqualRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &rgnA, - ResObj_Convert, &rgnB)) - return NULL; - _rv = MacEqualRgn(rgnA, - rgnB); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_EmptyRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - RgnHandle rgn; -#ifndef EmptyRgn - PyMac_PRECHECK(EmptyRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - _rv = EmptyRgn(rgn); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_MacFrameRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; -#ifndef MacFrameRgn - PyMac_PRECHECK(MacFrameRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - MacFrameRgn(rgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacPaintRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; -#ifndef MacPaintRgn - PyMac_PRECHECK(MacPaintRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - MacPaintRgn(rgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_EraseRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; -#ifndef EraseRgn - PyMac_PRECHECK(EraseRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - EraseRgn(rgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacInvertRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; -#ifndef MacInvertRgn - PyMac_PRECHECK(MacInvertRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - MacInvertRgn(rgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacFillRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; - Pattern *pat__in__; - int pat__in_len__; -#ifndef MacFillRgn - PyMac_PRECHECK(MacFillRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&s#", - ResObj_Convert, &rgn, - (char **)&pat__in__, &pat__in_len__)) - return NULL; - if (pat__in_len__ != sizeof(Pattern)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)"); - goto pat__error__; - } - MacFillRgn(rgn, - pat__in__); - Py_INCREF(Py_None); - _res = Py_None; - pat__error__: ; - return _res; -} - -static PyObject *Qd_ScrollRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short dh; - short dv; - RgnHandle updateRgn; -#ifndef ScrollRect - PyMac_PRECHECK(ScrollRect); -#endif - if (!PyArg_ParseTuple(_args, "O&hhO&", - PyMac_GetRect, &r, - &dh, - &dv, - ResObj_Convert, &updateRgn)) - return NULL; - ScrollRect(&r, - dh, - dv, - updateRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_CopyBits(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - BitMapPtr srcBits; - BitMapPtr dstBits; - Rect srcRect; - Rect dstRect; - short mode; - RgnHandle maskRgn; -#ifndef CopyBits - PyMac_PRECHECK(CopyBits); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&hO&", - BMObj_Convert, &srcBits, - BMObj_Convert, &dstBits, - PyMac_GetRect, &srcRect, - PyMac_GetRect, &dstRect, - &mode, - OptResObj_Convert, &maskRgn)) - return NULL; - CopyBits(srcBits, - dstBits, - &srcRect, - &dstRect, - mode, - maskRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_CopyMask(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - BitMapPtr srcBits; - BitMapPtr maskBits; - BitMapPtr dstBits; - Rect srcRect; - Rect maskRect; - Rect dstRect; -#ifndef CopyMask - PyMac_PRECHECK(CopyMask); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&O&O&", - BMObj_Convert, &srcBits, - BMObj_Convert, &maskBits, - BMObj_Convert, &dstBits, - PyMac_GetRect, &srcRect, - PyMac_GetRect, &maskRect, - PyMac_GetRect, &dstRect)) - return NULL; - CopyMask(srcBits, - maskBits, - dstBits, - &srcRect, - &maskRect, - &dstRect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_OpenPicture(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PicHandle _rv; - Rect picFrame; -#ifndef OpenPicture - PyMac_PRECHECK(OpenPicture); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &picFrame)) - return NULL; - _rv = OpenPicture(&picFrame); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_PicComment(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short kind; - short dataSize; - Handle dataHandle; -#ifndef PicComment - PyMac_PRECHECK(PicComment); -#endif - if (!PyArg_ParseTuple(_args, "hhO&", - &kind, - &dataSize, - ResObj_Convert, &dataHandle)) - return NULL; - PicComment(kind, - dataSize, - dataHandle); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_ClosePicture(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ClosePicture - PyMac_PRECHECK(ClosePicture); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ClosePicture(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_DrawPicture(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PicHandle myPicture; - Rect dstRect; -#ifndef DrawPicture - PyMac_PRECHECK(DrawPicture); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &myPicture, - PyMac_GetRect, &dstRect)) - return NULL; - DrawPicture(myPicture, - &dstRect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_KillPicture(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PicHandle myPicture; -#ifndef KillPicture - PyMac_PRECHECK(KillPicture); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &myPicture)) - return NULL; - KillPicture(myPicture); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_OpenPoly(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PolyHandle _rv; -#ifndef OpenPoly - PyMac_PRECHECK(OpenPoly); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = OpenPoly(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_ClosePoly(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ClosePoly - PyMac_PRECHECK(ClosePoly); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ClosePoly(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_KillPoly(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PolyHandle poly; -#ifndef KillPoly - PyMac_PRECHECK(KillPoly); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &poly)) - return NULL; - KillPoly(poly); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_OffsetPoly(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PolyHandle poly; - short dh; - short dv; -#ifndef OffsetPoly - PyMac_PRECHECK(OffsetPoly); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - ResObj_Convert, &poly, - &dh, - &dv)) - return NULL; - OffsetPoly(poly, - dh, - dv); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_FramePoly(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PolyHandle poly; -#ifndef FramePoly - PyMac_PRECHECK(FramePoly); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &poly)) - return NULL; - FramePoly(poly); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_PaintPoly(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PolyHandle poly; -#ifndef PaintPoly - PyMac_PRECHECK(PaintPoly); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &poly)) - return NULL; - PaintPoly(poly); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_ErasePoly(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PolyHandle poly; -#ifndef ErasePoly - PyMac_PRECHECK(ErasePoly); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &poly)) - return NULL; - ErasePoly(poly); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_InvertPoly(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PolyHandle poly; -#ifndef InvertPoly - PyMac_PRECHECK(InvertPoly); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &poly)) - return NULL; - InvertPoly(poly); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_FillPoly(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PolyHandle poly; - Pattern *pat__in__; - int pat__in_len__; -#ifndef FillPoly - PyMac_PRECHECK(FillPoly); -#endif - if (!PyArg_ParseTuple(_args, "O&s#", - ResObj_Convert, &poly, - (char **)&pat__in__, &pat__in_len__)) - return NULL; - if (pat__in_len__ != sizeof(Pattern)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)"); - goto pat__error__; - } - FillPoly(poly, - pat__in__); - Py_INCREF(Py_None); - _res = Py_None; - pat__error__: ; - return _res; -} - -static PyObject *Qd_SetPt(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point pt; - short h; - short v; -#ifndef SetPt - PyMac_PRECHECK(SetPt); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &h, - &v)) - return NULL; - SetPt(&pt, - h, - v); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, pt); - return _res; -} - -static PyObject *Qd_LocalToGlobal(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point pt; -#ifndef LocalToGlobal - PyMac_PRECHECK(LocalToGlobal); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &pt)) - return NULL; - LocalToGlobal(&pt); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, pt); - return _res; -} - -static PyObject *Qd_GlobalToLocal(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point pt; -#ifndef GlobalToLocal - PyMac_PRECHECK(GlobalToLocal); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &pt)) - return NULL; - GlobalToLocal(&pt); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, pt); - return _res; -} - -static PyObject *Qd_Random(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef Random - PyMac_PRECHECK(Random); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = Random(); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Qd_MacGetPixel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - short h; - short v; -#ifndef MacGetPixel - PyMac_PRECHECK(MacGetPixel); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &h, - &v)) - return NULL; - _rv = MacGetPixel(h, - v); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_ScalePt(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point pt; - Rect srcRect; - Rect dstRect; -#ifndef ScalePt - PyMac_PRECHECK(ScalePt); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - PyMac_GetPoint, &pt, - PyMac_GetRect, &srcRect, - PyMac_GetRect, &dstRect)) - return NULL; - ScalePt(&pt, - &srcRect, - &dstRect); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, pt); - return _res; -} - -static PyObject *Qd_MapPt(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point pt; - Rect srcRect; - Rect dstRect; -#ifndef MapPt - PyMac_PRECHECK(MapPt); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - PyMac_GetPoint, &pt, - PyMac_GetRect, &srcRect, - PyMac_GetRect, &dstRect)) - return NULL; - MapPt(&pt, - &srcRect, - &dstRect); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, pt); - return _res; -} - -static PyObject *Qd_MapRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - Rect srcRect; - Rect dstRect; -#ifndef MapRect - PyMac_PRECHECK(MapRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - PyMac_GetRect, &r, - PyMac_GetRect, &srcRect, - PyMac_GetRect, &dstRect)) - return NULL; - MapRect(&r, - &srcRect, - &dstRect); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &r); - return _res; -} - -static PyObject *Qd_MapRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; - Rect srcRect; - Rect dstRect; -#ifndef MapRgn - PyMac_PRECHECK(MapRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &rgn, - PyMac_GetRect, &srcRect, - PyMac_GetRect, &dstRect)) - return NULL; - MapRgn(rgn, - &srcRect, - &dstRect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MapPoly(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PolyHandle poly; - Rect srcRect; - Rect dstRect; -#ifndef MapPoly - PyMac_PRECHECK(MapPoly); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &poly, - PyMac_GetRect, &srcRect, - PyMac_GetRect, &dstRect)) - return NULL; - MapPoly(poly, - &srcRect, - &dstRect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_StdBits(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - BitMapPtr srcBits; - Rect srcRect; - Rect dstRect; - short mode; - RgnHandle maskRgn; -#ifndef StdBits - PyMac_PRECHECK(StdBits); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&hO&", - BMObj_Convert, &srcBits, - PyMac_GetRect, &srcRect, - PyMac_GetRect, &dstRect, - &mode, - OptResObj_Convert, &maskRgn)) - return NULL; - StdBits(srcBits, - &srcRect, - &dstRect, - mode, - maskRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_AddPt(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point src; - Point dst; -#ifndef AddPt - PyMac_PRECHECK(AddPt); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &src, - PyMac_GetPoint, &dst)) - return NULL; - AddPt(src, - &dst); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, dst); - return _res; -} - -static PyObject *Qd_EqualPt(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point pt1; - Point pt2; -#ifndef EqualPt - PyMac_PRECHECK(EqualPt); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &pt1, - PyMac_GetPoint, &pt2)) - return NULL; - _rv = EqualPt(pt1, - pt2); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_MacPtInRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point pt; - Rect r; -#ifndef MacPtInRect - PyMac_PRECHECK(MacPtInRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &pt, - PyMac_GetRect, &r)) - return NULL; - _rv = MacPtInRect(pt, - &r); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_Pt2Rect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point pt1; - Point pt2; - Rect dstRect; -#ifndef Pt2Rect - PyMac_PRECHECK(Pt2Rect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &pt1, - PyMac_GetPoint, &pt2)) - return NULL; - Pt2Rect(pt1, - pt2, - &dstRect); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &dstRect); - return _res; -} - -static PyObject *Qd_PtToAngle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - Point pt; - short angle; -#ifndef PtToAngle - PyMac_PRECHECK(PtToAngle); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &r, - PyMac_GetPoint, &pt)) - return NULL; - PtToAngle(&r, - pt, - &angle); - _res = Py_BuildValue("h", - angle); - return _res; -} - -static PyObject *Qd_SubPt(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point src; - Point dst; -#ifndef SubPt - PyMac_PRECHECK(SubPt); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &src, - PyMac_GetPoint, &dst)) - return NULL; - SubPt(src, - &dst); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, dst); - return _res; -} - -static PyObject *Qd_PtInRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point pt; - RgnHandle rgn; -#ifndef PtInRgn - PyMac_PRECHECK(PtInRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &pt, - ResObj_Convert, &rgn)) - return NULL; - _rv = PtInRgn(pt, - rgn); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_NewPixMap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle _rv; -#ifndef NewPixMap - PyMac_PRECHECK(NewPixMap); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = NewPixMap(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_DisposePixMap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle pm; -#ifndef DisposePixMap - PyMac_PRECHECK(DisposePixMap); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pm)) - return NULL; - DisposePixMap(pm); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_CopyPixMap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle srcPM; - PixMapHandle dstPM; -#ifndef CopyPixMap - PyMac_PRECHECK(CopyPixMap); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &srcPM, - ResObj_Convert, &dstPM)) - return NULL; - CopyPixMap(srcPM, - dstPM); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_NewPixPat(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle _rv; -#ifndef NewPixPat - PyMac_PRECHECK(NewPixPat); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = NewPixPat(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_DisposePixPat(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle pp; -#ifndef DisposePixPat - PyMac_PRECHECK(DisposePixPat); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pp)) - return NULL; - DisposePixPat(pp); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_CopyPixPat(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle srcPP; - PixPatHandle dstPP; -#ifndef CopyPixPat - PyMac_PRECHECK(CopyPixPat); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &srcPP, - ResObj_Convert, &dstPP)) - return NULL; - CopyPixPat(srcPP, - dstPP); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_PenPixPat(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle pp; -#ifndef PenPixPat - PyMac_PRECHECK(PenPixPat); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pp)) - return NULL; - PenPixPat(pp); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_BackPixPat(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle pp; -#ifndef BackPixPat - PyMac_PRECHECK(BackPixPat); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pp)) - return NULL; - BackPixPat(pp); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_GetPixPat(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle _rv; - short patID; -#ifndef GetPixPat - PyMac_PRECHECK(GetPixPat); -#endif - if (!PyArg_ParseTuple(_args, "h", - &patID)) - return NULL; - _rv = GetPixPat(patID); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_MakeRGBPat(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle pp; - RGBColor myColor; -#ifndef MakeRGBPat - PyMac_PRECHECK(MakeRGBPat); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &pp, - QdRGB_Convert, &myColor)) - return NULL; - MakeRGBPat(pp, - &myColor); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_FillCRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - PixPatHandle pp; -#ifndef FillCRect - PyMac_PRECHECK(FillCRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &r, - ResObj_Convert, &pp)) - return NULL; - FillCRect(&r, - pp); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_FillCOval(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - PixPatHandle pp; -#ifndef FillCOval - PyMac_PRECHECK(FillCOval); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &r, - ResObj_Convert, &pp)) - return NULL; - FillCOval(&r, - pp); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_FillCRoundRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short ovalWidth; - short ovalHeight; - PixPatHandle pp; -#ifndef FillCRoundRect - PyMac_PRECHECK(FillCRoundRect); -#endif - if (!PyArg_ParseTuple(_args, "O&hhO&", - PyMac_GetRect, &r, - &ovalWidth, - &ovalHeight, - ResObj_Convert, &pp)) - return NULL; - FillCRoundRect(&r, - ovalWidth, - ovalHeight, - pp); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_FillCArc(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short startAngle; - short arcAngle; - PixPatHandle pp; -#ifndef FillCArc - PyMac_PRECHECK(FillCArc); -#endif - if (!PyArg_ParseTuple(_args, "O&hhO&", - PyMac_GetRect, &r, - &startAngle, - &arcAngle, - ResObj_Convert, &pp)) - return NULL; - FillCArc(&r, - startAngle, - arcAngle, - pp); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_FillCRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; - PixPatHandle pp; -#ifndef FillCRgn - PyMac_PRECHECK(FillCRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &rgn, - ResObj_Convert, &pp)) - return NULL; - FillCRgn(rgn, - pp); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_FillCPoly(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PolyHandle poly; - PixPatHandle pp; -#ifndef FillCPoly - PyMac_PRECHECK(FillCPoly); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &poly, - ResObj_Convert, &pp)) - return NULL; - FillCPoly(poly, - pp); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_RGBForeColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor color; -#ifndef RGBForeColor - PyMac_PRECHECK(RGBForeColor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QdRGB_Convert, &color)) - return NULL; - RGBForeColor(&color); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_RGBBackColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor color; -#ifndef RGBBackColor - PyMac_PRECHECK(RGBBackColor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QdRGB_Convert, &color)) - return NULL; - RGBBackColor(&color); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_SetCPixel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short h; - short v; - RGBColor cPix; -#ifndef SetCPixel - PyMac_PRECHECK(SetCPixel); -#endif - if (!PyArg_ParseTuple(_args, "hhO&", - &h, - &v, - QdRGB_Convert, &cPix)) - return NULL; - SetCPixel(h, - v, - &cPix); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_SetPortPix(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle pm; -#ifndef SetPortPix - PyMac_PRECHECK(SetPortPix); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pm)) - return NULL; - SetPortPix(pm); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_GetCPixel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short h; - short v; - RGBColor cPix; -#ifndef GetCPixel - PyMac_PRECHECK(GetCPixel); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &h, - &v)) - return NULL; - GetCPixel(h, - v, - &cPix); - _res = Py_BuildValue("O&", - QdRGB_New, &cPix); - return _res; -} - -static PyObject *Qd_GetForeColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor color; -#ifndef GetForeColor - PyMac_PRECHECK(GetForeColor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetForeColor(&color); - _res = Py_BuildValue("O&", - QdRGB_New, &color); - return _res; -} - -static PyObject *Qd_GetBackColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor color; -#ifndef GetBackColor - PyMac_PRECHECK(GetBackColor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetBackColor(&color); - _res = Py_BuildValue("O&", - QdRGB_New, &color); - return _res; -} - -static PyObject *Qd_OpColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor color; -#ifndef OpColor - PyMac_PRECHECK(OpColor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QdRGB_Convert, &color)) - return NULL; - OpColor(&color); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_HiliteColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor color; -#ifndef HiliteColor - PyMac_PRECHECK(HiliteColor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QdRGB_Convert, &color)) - return NULL; - HiliteColor(&color); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_DisposeCTable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CTabHandle cTable; -#ifndef DisposeCTable - PyMac_PRECHECK(DisposeCTable); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &cTable)) - return NULL; - DisposeCTable(cTable); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_GetCTable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CTabHandle _rv; - short ctID; -#ifndef GetCTable - PyMac_PRECHECK(GetCTable); -#endif - if (!PyArg_ParseTuple(_args, "h", - &ctID)) - return NULL; - _rv = GetCTable(ctID); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_GetCCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CCrsrHandle _rv; - short crsrID; -#ifndef GetCCursor - PyMac_PRECHECK(GetCCursor); -#endif - if (!PyArg_ParseTuple(_args, "h", - &crsrID)) - return NULL; - _rv = GetCCursor(crsrID); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_SetCCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CCrsrHandle cCrsr; -#ifndef SetCCursor - PyMac_PRECHECK(SetCCursor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &cCrsr)) - return NULL; - SetCCursor(cCrsr); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_AllocCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef AllocCursor - PyMac_PRECHECK(AllocCursor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - AllocCursor(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_DisposeCCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CCrsrHandle cCrsr; -#ifndef DisposeCCursor - PyMac_PRECHECK(DisposeCCursor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &cCrsr)) - return NULL; - DisposeCCursor(cCrsr); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_GetMaxDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle _rv; - Rect globalRect; -#ifndef GetMaxDevice - PyMac_PRECHECK(GetMaxDevice); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &globalRect)) - return NULL; - _rv = GetMaxDevice(&globalRect); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_GetCTSeed(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetCTSeed - PyMac_PRECHECK(GetCTSeed); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetCTSeed(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qd_GetDeviceList(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle _rv; -#ifndef GetDeviceList - PyMac_PRECHECK(GetDeviceList); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetDeviceList(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_GetMainDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle _rv; -#ifndef GetMainDevice - PyMac_PRECHECK(GetMainDevice); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMainDevice(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_GetNextDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle _rv; - GDHandle curDevice; -#ifndef GetNextDevice - PyMac_PRECHECK(GetNextDevice); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &curDevice)) - return NULL; - _rv = GetNextDevice(curDevice); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_TestDeviceAttribute(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - GDHandle gdh; - short attribute; -#ifndef TestDeviceAttribute - PyMac_PRECHECK(TestDeviceAttribute); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - ResObj_Convert, &gdh, - &attribute)) - return NULL; - _rv = TestDeviceAttribute(gdh, - attribute); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_SetDeviceAttribute(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle gdh; - short attribute; - Boolean value; -#ifndef SetDeviceAttribute - PyMac_PRECHECK(SetDeviceAttribute); -#endif - if (!PyArg_ParseTuple(_args, "O&hb", - ResObj_Convert, &gdh, - &attribute, - &value)) - return NULL; - SetDeviceAttribute(gdh, - attribute, - value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_InitGDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short qdRefNum; - long mode; - GDHandle gdh; -#ifndef InitGDevice - PyMac_PRECHECK(InitGDevice); -#endif - if (!PyArg_ParseTuple(_args, "hlO&", - &qdRefNum, - &mode, - ResObj_Convert, &gdh)) - return NULL; - InitGDevice(qdRefNum, - mode, - gdh); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_NewGDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle _rv; - short refNum; - long mode; -#ifndef NewGDevice - PyMac_PRECHECK(NewGDevice); -#endif - if (!PyArg_ParseTuple(_args, "hl", - &refNum, - &mode)) - return NULL; - _rv = NewGDevice(refNum, - mode); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_DisposeGDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle gdh; -#ifndef DisposeGDevice - PyMac_PRECHECK(DisposeGDevice); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &gdh)) - return NULL; - DisposeGDevice(gdh); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_SetGDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle gd; -#ifndef SetGDevice - PyMac_PRECHECK(SetGDevice); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &gd)) - return NULL; - SetGDevice(gd); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_GetGDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle _rv; -#ifndef GetGDevice - PyMac_PRECHECK(GetGDevice); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetGDevice(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_Color2Index(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - RGBColor myColor; -#ifndef Color2Index - PyMac_PRECHECK(Color2Index); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QdRGB_Convert, &myColor)) - return NULL; - _rv = Color2Index(&myColor); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qd_Index2Color(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long index; - RGBColor aColor; -#ifndef Index2Color - PyMac_PRECHECK(Index2Color); -#endif - if (!PyArg_ParseTuple(_args, "l", - &index)) - return NULL; - Index2Color(index, - &aColor); - _res = Py_BuildValue("O&", - QdRGB_New, &aColor); - return _res; -} - -static PyObject *Qd_InvertColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor myColor; -#ifndef InvertColor - PyMac_PRECHECK(InvertColor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - InvertColor(&myColor); - _res = Py_BuildValue("O&", - QdRGB_New, &myColor); - return _res; -} - -static PyObject *Qd_RealColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - RGBColor color; -#ifndef RealColor - PyMac_PRECHECK(RealColor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QdRGB_Convert, &color)) - return NULL; - _rv = RealColor(&color); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_GetSubTable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CTabHandle myColors; - short iTabRes; - CTabHandle targetTbl; -#ifndef GetSubTable - PyMac_PRECHECK(GetSubTable); -#endif - if (!PyArg_ParseTuple(_args, "O&hO&", - ResObj_Convert, &myColors, - &iTabRes, - ResObj_Convert, &targetTbl)) - return NULL; - GetSubTable(myColors, - iTabRes, - targetTbl); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MakeITable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CTabHandle cTabH; - ITabHandle iTabH; - short res; -#ifndef MakeITable - PyMac_PRECHECK(MakeITable); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - ResObj_Convert, &cTabH, - ResObj_Convert, &iTabH, - &res)) - return NULL; - MakeITable(cTabH, - iTabH, - res); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_SetClientID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short id; -#ifndef SetClientID - PyMac_PRECHECK(SetClientID); -#endif - if (!PyArg_ParseTuple(_args, "h", - &id)) - return NULL; - SetClientID(id); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_ProtectEntry(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short index; - Boolean protect; -#ifndef ProtectEntry - PyMac_PRECHECK(ProtectEntry); -#endif - if (!PyArg_ParseTuple(_args, "hb", - &index, - &protect)) - return NULL; - ProtectEntry(index, - protect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_ReserveEntry(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short index; - Boolean reserve; -#ifndef ReserveEntry - PyMac_PRECHECK(ReserveEntry); -#endif - if (!PyArg_ParseTuple(_args, "hb", - &index, - &reserve)) - return NULL; - ReserveEntry(index, - reserve); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_QDError(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef QDError - PyMac_PRECHECK(QDError); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = QDError(); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Qd_CopyDeepMask(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - BitMapPtr srcBits; - BitMapPtr maskBits; - BitMapPtr dstBits; - Rect srcRect; - Rect maskRect; - Rect dstRect; - short mode; - RgnHandle maskRgn; -#ifndef CopyDeepMask - PyMac_PRECHECK(CopyDeepMask); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&O&O&hO&", - BMObj_Convert, &srcBits, - BMObj_Convert, &maskBits, - BMObj_Convert, &dstBits, - PyMac_GetRect, &srcRect, - PyMac_GetRect, &maskRect, - PyMac_GetRect, &dstRect, - &mode, - OptResObj_Convert, &maskRgn)) - return NULL; - CopyDeepMask(srcBits, - maskBits, - dstBits, - &srcRect, - &maskRect, - &dstRect, - mode, - maskRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_GetPattern(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PatHandle _rv; - short patternID; -#ifndef GetPattern - PyMac_PRECHECK(GetPattern); -#endif - if (!PyArg_ParseTuple(_args, "h", - &patternID)) - return NULL; - _rv = GetPattern(patternID); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_MacGetCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CursHandle _rv; - short cursorID; -#ifndef MacGetCursor - PyMac_PRECHECK(MacGetCursor); -#endif - if (!PyArg_ParseTuple(_args, "h", - &cursorID)) - return NULL; - _rv = MacGetCursor(cursorID); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_GetPicture(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PicHandle _rv; - short pictureID; -#ifndef GetPicture - PyMac_PRECHECK(GetPicture); -#endif - if (!PyArg_ParseTuple(_args, "h", - &pictureID)) - return NULL; - _rv = GetPicture(pictureID); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_DeltaPoint(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - Point ptA; - Point ptB; -#ifndef DeltaPoint - PyMac_PRECHECK(DeltaPoint); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &ptA, - PyMac_GetPoint, &ptB)) - return NULL; - _rv = DeltaPoint(ptA, - ptB); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qd_ShieldCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect shieldRect; - Point offsetPt; -#ifndef ShieldCursor - PyMac_PRECHECK(ShieldCursor); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &shieldRect, - PyMac_GetPoint, &offsetPt)) - return NULL; - ShieldCursor(&shieldRect, - offsetPt); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_ScreenRes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short scrnHRes; - short scrnVRes; -#ifndef ScreenRes - PyMac_PRECHECK(ScreenRes); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ScreenRes(&scrnHRes, - &scrnVRes); - _res = Py_BuildValue("hh", - scrnHRes, - scrnVRes); - return _res; -} - -static PyObject *Qd_GetIndPattern(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Pattern thePat__out__; - short patternListID; - short index; -#ifndef GetIndPattern - PyMac_PRECHECK(GetIndPattern); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &patternListID, - &index)) - return NULL; - GetIndPattern(&thePat__out__, - patternListID, - index); - _res = Py_BuildValue("s#", - (char *)&thePat__out__, (int)sizeof(Pattern)); - return _res; -} - -static PyObject *Qd_SlopeFromAngle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; - short angle; -#ifndef SlopeFromAngle - PyMac_PRECHECK(SlopeFromAngle); -#endif - if (!PyArg_ParseTuple(_args, "h", - &angle)) - return NULL; - _rv = SlopeFromAngle(angle); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *Qd_AngleFromSlope(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - Fixed slope; -#ifndef AngleFromSlope - PyMac_PRECHECK(AngleFromSlope); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFixed, &slope)) - return NULL; - _rv = AngleFromSlope(slope); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Qd_GetPixBounds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle pixMap; - Rect bounds; -#ifndef GetPixBounds - PyMac_PRECHECK(GetPixBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pixMap)) - return NULL; - GetPixBounds(pixMap, - &bounds); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &bounds); - return _res; -} - -static PyObject *Qd_GetPixDepth(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - PixMapHandle pixMap; -#ifndef GetPixDepth - PyMac_PRECHECK(GetPixDepth); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pixMap)) - return NULL; - _rv = GetPixDepth(pixMap); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Qd_GetQDGlobalsRandomSeed(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetQDGlobalsRandomSeed - PyMac_PRECHECK(GetQDGlobalsRandomSeed); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetQDGlobalsRandomSeed(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qd_GetQDGlobalsScreenBits(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - BitMap screenBits; -#ifndef GetQDGlobalsScreenBits - PyMac_PRECHECK(GetQDGlobalsScreenBits); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetQDGlobalsScreenBits(&screenBits); - _res = Py_BuildValue("O&", - BMObj_NewCopied, &screenBits); - return _res; -} - -static PyObject *Qd_GetQDGlobalsArrow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Cursor arrow__out__; -#ifndef GetQDGlobalsArrow - PyMac_PRECHECK(GetQDGlobalsArrow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetQDGlobalsArrow(&arrow__out__); - _res = Py_BuildValue("s#", - (char *)&arrow__out__, (int)sizeof(Cursor)); - return _res; -} - -static PyObject *Qd_GetQDGlobalsDarkGray(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Pattern dkGray__out__; -#ifndef GetQDGlobalsDarkGray - PyMac_PRECHECK(GetQDGlobalsDarkGray); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetQDGlobalsDarkGray(&dkGray__out__); - _res = Py_BuildValue("s#", - (char *)&dkGray__out__, (int)sizeof(Pattern)); - return _res; -} - -static PyObject *Qd_GetQDGlobalsLightGray(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Pattern ltGray__out__; -#ifndef GetQDGlobalsLightGray - PyMac_PRECHECK(GetQDGlobalsLightGray); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetQDGlobalsLightGray(<Gray__out__); - _res = Py_BuildValue("s#", - (char *)<Gray__out__, (int)sizeof(Pattern)); - return _res; -} - -static PyObject *Qd_GetQDGlobalsGray(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Pattern gray__out__; -#ifndef GetQDGlobalsGray - PyMac_PRECHECK(GetQDGlobalsGray); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetQDGlobalsGray(&gray__out__); - _res = Py_BuildValue("s#", - (char *)&gray__out__, (int)sizeof(Pattern)); - return _res; -} - -static PyObject *Qd_GetQDGlobalsBlack(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Pattern black__out__; -#ifndef GetQDGlobalsBlack - PyMac_PRECHECK(GetQDGlobalsBlack); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetQDGlobalsBlack(&black__out__); - _res = Py_BuildValue("s#", - (char *)&black__out__, (int)sizeof(Pattern)); - return _res; -} - -static PyObject *Qd_GetQDGlobalsWhite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Pattern white__out__; -#ifndef GetQDGlobalsWhite - PyMac_PRECHECK(GetQDGlobalsWhite); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetQDGlobalsWhite(&white__out__); - _res = Py_BuildValue("s#", - (char *)&white__out__, (int)sizeof(Pattern)); - return _res; -} - -static PyObject *Qd_GetQDGlobalsThePort(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGrafPtr _rv; -#ifndef GetQDGlobalsThePort - PyMac_PRECHECK(GetQDGlobalsThePort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetQDGlobalsThePort(); - _res = Py_BuildValue("O&", - GrafObj_New, _rv); - return _res; -} - -static PyObject *Qd_SetQDGlobalsRandomSeed(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long randomSeed; -#ifndef SetQDGlobalsRandomSeed - PyMac_PRECHECK(SetQDGlobalsRandomSeed); -#endif - if (!PyArg_ParseTuple(_args, "l", - &randomSeed)) - return NULL; - SetQDGlobalsRandomSeed(randomSeed); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_SetQDGlobalsArrow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Cursor *arrow__in__; - int arrow__in_len__; -#ifndef SetQDGlobalsArrow - PyMac_PRECHECK(SetQDGlobalsArrow); -#endif - if (!PyArg_ParseTuple(_args, "s#", - (char **)&arrow__in__, &arrow__in_len__)) - return NULL; - if (arrow__in_len__ != sizeof(Cursor)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Cursor)"); - goto arrow__error__; - } - SetQDGlobalsArrow(arrow__in__); - Py_INCREF(Py_None); - _res = Py_None; - arrow__error__: ; - return _res; -} - -static PyObject *Qd_GetRegionBounds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle region; - Rect bounds; -#ifndef GetRegionBounds - PyMac_PRECHECK(GetRegionBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, ®ion)) - return NULL; - GetRegionBounds(region, - &bounds); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &bounds); - return _res; -} - -static PyObject *Qd_IsRegionRectangular(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - RgnHandle region; -#ifndef IsRegionRectangular - PyMac_PRECHECK(IsRegionRectangular); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, ®ion)) - return NULL; - _rv = IsRegionRectangular(region); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_CreateNewPort(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGrafPtr _rv; -#ifndef CreateNewPort - PyMac_PRECHECK(CreateNewPort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CreateNewPort(); - _res = Py_BuildValue("O&", - GrafObj_New, _rv); - return _res; -} - -static PyObject *Qd_SetQDError(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr err; -#ifndef SetQDError - PyMac_PRECHECK(SetQDError); -#endif - if (!PyArg_ParseTuple(_args, "h", - &err)) - return NULL; - SetQDError(err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetScrVRes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef LMGetScrVRes - PyMac_PRECHECK(LMGetScrVRes); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetScrVRes(); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Qd_LMSetScrVRes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 value; -#ifndef LMSetScrVRes - PyMac_PRECHECK(LMSetScrVRes); -#endif - if (!PyArg_ParseTuple(_args, "h", - &value)) - return NULL; - LMSetScrVRes(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetScrHRes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 _rv; -#ifndef LMGetScrHRes - PyMac_PRECHECK(LMGetScrHRes); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetScrHRes(); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Qd_LMSetScrHRes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt16 value; -#ifndef LMSetScrHRes - PyMac_PRECHECK(LMSetScrHRes); -#endif - if (!PyArg_ParseTuple(_args, "h", - &value)) - return NULL; - LMSetScrHRes(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetMainDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle _rv; -#ifndef LMGetMainDevice - PyMac_PRECHECK(LMGetMainDevice); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetMainDevice(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_LMSetMainDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle value; -#ifndef LMSetMainDevice - PyMac_PRECHECK(LMSetMainDevice); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &value)) - return NULL; - LMSetMainDevice(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetDeviceList(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle _rv; -#ifndef LMGetDeviceList - PyMac_PRECHECK(LMGetDeviceList); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetDeviceList(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_LMSetDeviceList(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle value; -#ifndef LMSetDeviceList - PyMac_PRECHECK(LMSetDeviceList); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &value)) - return NULL; - LMSetDeviceList(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetQDColors(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; -#ifndef LMGetQDColors - PyMac_PRECHECK(LMGetQDColors); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetQDColors(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_LMSetQDColors(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle value; -#ifndef LMSetQDColors - PyMac_PRECHECK(LMSetQDColors); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &value)) - return NULL; - LMSetQDColors(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetWidthListHand(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; -#ifndef LMGetWidthListHand - PyMac_PRECHECK(LMGetWidthListHand); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetWidthListHand(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_LMSetWidthListHand(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle value; -#ifndef LMSetWidthListHand - PyMac_PRECHECK(LMSetWidthListHand); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &value)) - return NULL; - LMSetWidthListHand(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetHiliteMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt8 _rv; -#ifndef LMGetHiliteMode - PyMac_PRECHECK(LMGetHiliteMode); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetHiliteMode(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_LMSetHiliteMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt8 value; -#ifndef LMSetHiliteMode - PyMac_PRECHECK(LMSetHiliteMode); -#endif - if (!PyArg_ParseTuple(_args, "b", - &value)) - return NULL; - LMSetHiliteMode(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetWidthTabHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; -#ifndef LMGetWidthTabHandle - PyMac_PRECHECK(LMGetWidthTabHandle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetWidthTabHandle(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_LMSetWidthTabHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle value; -#ifndef LMSetWidthTabHandle - PyMac_PRECHECK(LMSetWidthTabHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &value)) - return NULL; - LMSetWidthTabHandle(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetLastSPExtra(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 _rv; -#ifndef LMGetLastSPExtra - PyMac_PRECHECK(LMGetLastSPExtra); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetLastSPExtra(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qd_LMSetLastSPExtra(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - SInt32 value; -#ifndef LMSetLastSPExtra - PyMac_PRECHECK(LMSetLastSPExtra); -#endif - if (!PyArg_ParseTuple(_args, "l", - &value)) - return NULL; - LMSetLastSPExtra(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetLastFOND(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; -#ifndef LMGetLastFOND - PyMac_PRECHECK(LMGetLastFOND); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetLastFOND(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_LMSetLastFOND(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle value; -#ifndef LMSetLastFOND - PyMac_PRECHECK(LMSetLastFOND); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &value)) - return NULL; - LMSetLastFOND(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetFractEnable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt8 _rv; -#ifndef LMGetFractEnable - PyMac_PRECHECK(LMGetFractEnable); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetFractEnable(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_LMSetFractEnable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt8 value; -#ifndef LMSetFractEnable - PyMac_PRECHECK(LMSetFractEnable); -#endif - if (!PyArg_ParseTuple(_args, "b", - &value)) - return NULL; - LMSetFractEnable(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetTheGDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle _rv; -#ifndef LMGetTheGDevice - PyMac_PRECHECK(LMGetTheGDevice); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetTheGDevice(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_LMSetTheGDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle value; -#ifndef LMSetTheGDevice - PyMac_PRECHECK(LMSetTheGDevice); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &value)) - return NULL; - LMSetTheGDevice(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetHiliteRGB(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor hiliteRGBValue; -#ifndef LMGetHiliteRGB - PyMac_PRECHECK(LMGetHiliteRGB); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - LMGetHiliteRGB(&hiliteRGBValue); - _res = Py_BuildValue("O&", - QdRGB_New, &hiliteRGBValue); - return _res; -} - -static PyObject *Qd_LMSetHiliteRGB(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RGBColor hiliteRGBValue; -#ifndef LMSetHiliteRGB - PyMac_PRECHECK(LMSetHiliteRGB); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QdRGB_Convert, &hiliteRGBValue)) - return NULL; - LMSetHiliteRGB(&hiliteRGBValue); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LMGetCursorNew(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef LMGetCursorNew - PyMac_PRECHECK(LMGetCursorNew); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetCursorNew(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_LMSetCursorNew(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean value; -#ifndef LMSetCursorNew - PyMac_PRECHECK(LMSetCursorNew); -#endif - if (!PyArg_ParseTuple(_args, "b", - &value)) - return NULL; - LMSetCursorNew(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_TextFont(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short font; -#ifndef TextFont - PyMac_PRECHECK(TextFont); -#endif - if (!PyArg_ParseTuple(_args, "h", - &font)) - return NULL; - TextFont(font); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_TextFace(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - StyleParameter face; -#ifndef TextFace - PyMac_PRECHECK(TextFace); -#endif - if (!PyArg_ParseTuple(_args, "h", - &face)) - return NULL; - TextFace(face); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_TextMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short mode; -#ifndef TextMode - PyMac_PRECHECK(TextMode); -#endif - if (!PyArg_ParseTuple(_args, "h", - &mode)) - return NULL; - TextMode(mode); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_TextSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short size; -#ifndef TextSize - PyMac_PRECHECK(TextSize); -#endif - if (!PyArg_ParseTuple(_args, "h", - &size)) - return NULL; - TextSize(size); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_SpaceExtra(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed extra; -#ifndef SpaceExtra - PyMac_PRECHECK(SpaceExtra); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFixed, &extra)) - return NULL; - SpaceExtra(extra); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_DrawChar(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CharParameter ch; -#ifndef DrawChar - PyMac_PRECHECK(DrawChar); -#endif - if (!PyArg_ParseTuple(_args, "h", - &ch)) - return NULL; - DrawChar(ch); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_DrawString(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Str255 s; -#ifndef DrawString - PyMac_PRECHECK(DrawString); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetStr255, s)) - return NULL; - DrawString(s); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_MacDrawText(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - char *textBuf__in__; - int textBuf__in_len__; - short firstByte; - short byteCount; -#ifndef MacDrawText - PyMac_PRECHECK(MacDrawText); -#endif - if (!PyArg_ParseTuple(_args, "s#hh", - &textBuf__in__, &textBuf__in_len__, - &firstByte, - &byteCount)) - return NULL; - /* Fool compiler warnings */ - textBuf__in_len__ = textBuf__in_len__; - MacDrawText(textBuf__in__, - firstByte, - byteCount); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_CharWidth(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - CharParameter ch; -#ifndef CharWidth - PyMac_PRECHECK(CharWidth); -#endif - if (!PyArg_ParseTuple(_args, "h", - &ch)) - return NULL; - _rv = CharWidth(ch); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Qd_StringWidth(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - Str255 s; -#ifndef StringWidth - PyMac_PRECHECK(StringWidth); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetStr255, s)) - return NULL; - _rv = StringWidth(s); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Qd_TextWidth(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - char *textBuf__in__; - int textBuf__in_len__; - short firstByte; - short byteCount; -#ifndef TextWidth - PyMac_PRECHECK(TextWidth); -#endif - if (!PyArg_ParseTuple(_args, "s#hh", - &textBuf__in__, &textBuf__in_len__, - &firstByte, - &byteCount)) - return NULL; - /* Fool compiler warnings */ - textBuf__in_len__ = textBuf__in_len__; - _rv = TextWidth(textBuf__in__, - firstByte, - byteCount); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Qd_GetFontInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - FontInfo info; -#ifndef GetFontInfo - PyMac_PRECHECK(GetFontInfo); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetFontInfo(&info); - _res = Py_BuildValue("O&", - QdFI_New, &info); - return _res; -} - -static PyObject *Qd_CharExtra(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed extra; -#ifndef CharExtra - PyMac_PRECHECK(CharExtra); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFixed, &extra)) - return NULL; - CharExtra(extra); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_TruncString(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - short width; - Str255 theString; - TruncCode truncWhere; -#ifndef TruncString - PyMac_PRECHECK(TruncString); -#endif - if (!PyArg_ParseTuple(_args, "hO&h", - &width, - PyMac_GetStr255, theString, - &truncWhere)) - return NULL; - _rv = TruncString(width, - theString, - truncWhere); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Qd_SetPort(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GrafPtr thePort; -#ifndef SetPort - PyMac_PRECHECK(SetPort); -#endif - if (!PyArg_ParseTuple(_args, "O&", - GrafObj_Convert, &thePort)) - return NULL; - SetPort(thePort); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_GetCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CursHandle _rv; - short cursorID; -#ifndef GetCursor - PyMac_PRECHECK(GetCursor); -#endif - if (!PyArg_ParseTuple(_args, "h", - &cursorID)) - return NULL; - _rv = GetCursor(cursorID); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Qd_SetCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Cursor *crsr__in__; - int crsr__in_len__; -#ifndef SetCursor - PyMac_PRECHECK(SetCursor); -#endif - if (!PyArg_ParseTuple(_args, "s#", - (char **)&crsr__in__, &crsr__in_len__)) - return NULL; - if (crsr__in_len__ != sizeof(Cursor)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Cursor)"); - goto crsr__error__; - } - SetCursor(crsr__in__); - Py_INCREF(Py_None); - _res = Py_None; - crsr__error__: ; - return _res; -} - -static PyObject *Qd_ShowCursor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ShowCursor - PyMac_PRECHECK(ShowCursor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ShowCursor(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_LineTo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short h; - short v; -#ifndef LineTo - PyMac_PRECHECK(LineTo); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &h, - &v)) - return NULL; - LineTo(h, - v); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_SetRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short left; - short top; - short right; - short bottom; -#ifndef SetRect - PyMac_PRECHECK(SetRect); -#endif - if (!PyArg_ParseTuple(_args, "hhhh", - &left, - &top, - &right, - &bottom)) - return NULL; - SetRect(&r, - left, - top, - right, - bottom); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &r); - return _res; -} - -static PyObject *Qd_OffsetRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short dh; - short dv; -#ifndef OffsetRect - PyMac_PRECHECK(OffsetRect); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetRect, &r, - &dh, - &dv)) - return NULL; - OffsetRect(&r, - dh, - dv); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &r); - return _res; -} - -static PyObject *Qd_InsetRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - short dh; - short dv; -#ifndef InsetRect - PyMac_PRECHECK(InsetRect); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - PyMac_GetRect, &r, - &dh, - &dv)) - return NULL; - InsetRect(&r, - dh, - dv); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &r); - return _res; -} - -static PyObject *Qd_UnionRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect src1; - Rect src2; - Rect dstRect; -#ifndef UnionRect - PyMac_PRECHECK(UnionRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &src1, - PyMac_GetRect, &src2)) - return NULL; - UnionRect(&src1, - &src2, - &dstRect); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &dstRect); - return _res; -} - -static PyObject *Qd_EqualRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Rect rect1; - Rect rect2; -#ifndef EqualRect - PyMac_PRECHECK(EqualRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &rect1, - PyMac_GetRect, &rect2)) - return NULL; - _rv = EqualRect(&rect1, - &rect2); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_FrameRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; -#ifndef FrameRect - PyMac_PRECHECK(FrameRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &r)) - return NULL; - FrameRect(&r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_InvertRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; -#ifndef InvertRect - PyMac_PRECHECK(InvertRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &r)) - return NULL; - InvertRect(&r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_FillRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect r; - Pattern *pat__in__; - int pat__in_len__; -#ifndef FillRect - PyMac_PRECHECK(FillRect); -#endif - if (!PyArg_ParseTuple(_args, "O&s#", - PyMac_GetRect, &r, - (char **)&pat__in__, &pat__in_len__)) - return NULL; - if (pat__in_len__ != sizeof(Pattern)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)"); - goto pat__error__; - } - FillRect(&r, - pat__in__); - Py_INCREF(Py_None); - _res = Py_None; - pat__error__: ; - return _res; -} - -static PyObject *Qd_CopyRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle srcRgn; - RgnHandle dstRgn; -#ifndef CopyRgn - PyMac_PRECHECK(CopyRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &srcRgn, - ResObj_Convert, &dstRgn)) - return NULL; - CopyRgn(srcRgn, - dstRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_SetRectRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; - short left; - short top; - short right; - short bottom; -#ifndef SetRectRgn - PyMac_PRECHECK(SetRectRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&hhhh", - ResObj_Convert, &rgn, - &left, - &top, - &right, - &bottom)) - return NULL; - SetRectRgn(rgn, - left, - top, - right, - bottom); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_OffsetRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; - short dh; - short dv; -#ifndef OffsetRgn - PyMac_PRECHECK(OffsetRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - ResObj_Convert, &rgn, - &dh, - &dv)) - return NULL; - OffsetRgn(rgn, - dh, - dv); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_UnionRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle srcRgnA; - RgnHandle srcRgnB; - RgnHandle dstRgn; -#ifndef UnionRgn - PyMac_PRECHECK(UnionRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &srcRgnA, - ResObj_Convert, &srcRgnB, - ResObj_Convert, &dstRgn)) - return NULL; - UnionRgn(srcRgnA, - srcRgnB, - dstRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_XorRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle srcRgnA; - RgnHandle srcRgnB; - RgnHandle dstRgn; -#ifndef XorRgn - PyMac_PRECHECK(XorRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &srcRgnA, - ResObj_Convert, &srcRgnB, - ResObj_Convert, &dstRgn)) - return NULL; - XorRgn(srcRgnA, - srcRgnB, - dstRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_EqualRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - RgnHandle rgnA; - RgnHandle rgnB; -#ifndef EqualRgn - PyMac_PRECHECK(EqualRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &rgnA, - ResObj_Convert, &rgnB)) - return NULL; - _rv = EqualRgn(rgnA, - rgnB); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_FrameRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; -#ifndef FrameRgn - PyMac_PRECHECK(FrameRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - FrameRgn(rgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_PaintRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; -#ifndef PaintRgn - PyMac_PRECHECK(PaintRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - PaintRgn(rgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_InvertRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; -#ifndef InvertRgn - PyMac_PRECHECK(InvertRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &rgn)) - return NULL; - InvertRgn(rgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_FillRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle rgn; - Pattern *pat__in__; - int pat__in_len__; -#ifndef FillRgn - PyMac_PRECHECK(FillRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&s#", - ResObj_Convert, &rgn, - (char **)&pat__in__, &pat__in_len__)) - return NULL; - if (pat__in_len__ != sizeof(Pattern)) - { - PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)"); - goto pat__error__; - } - FillRgn(rgn, - pat__in__); - Py_INCREF(Py_None); - _res = Py_None; - pat__error__: ; - return _res; -} - -static PyObject *Qd_GetPixel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - short h; - short v; -#ifndef GetPixel - PyMac_PRECHECK(GetPixel); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &h, - &v)) - return NULL; - _rv = GetPixel(h, - v); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_PtInRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point pt; - Rect r; -#ifndef PtInRect - PyMac_PRECHECK(PtInRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &pt, - PyMac_GetRect, &r)) - return NULL; - _rv = PtInRect(pt, - &r); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qd_DrawText(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - char *textBuf__in__; - int textBuf__in_len__; - short firstByte; - short byteCount; -#ifndef DrawText - PyMac_PRECHECK(DrawText); -#endif - if (!PyArg_ParseTuple(_args, "s#hh", - &textBuf__in__, &textBuf__in_len__, - &firstByte, - &byteCount)) - return NULL; - /* Fool compiler warnings */ - textBuf__in_len__ = textBuf__in_len__; - DrawText(textBuf__in__, - firstByte, - byteCount); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qd_BitMap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - BitMap *ptr; - PyObject *source; - Rect bounds; - int rowbytes; - char *data; - - if ( !PyArg_ParseTuple(_args, "O!iO&", &PyString_Type, &source, &rowbytes, PyMac_GetRect, - &bounds) ) - return NULL; - data = PyString_AsString(source); - if ((ptr=(BitMap *)malloc(sizeof(BitMap))) == NULL ) - return PyErr_NoMemory(); - ptr->baseAddr = (Ptr)data; - ptr->rowBytes = rowbytes; - ptr->bounds = bounds; - if ( (_res = BMObj_New(ptr)) == NULL ) { - free(ptr); - return NULL; - } - ((BitMapObject *)_res)->referred_object = source; - Py_INCREF(source); - ((BitMapObject *)_res)->referred_bitmap = ptr; - return _res; - -} - -static PyObject *Qd_RawBitMap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - BitMap *ptr; - PyObject *source; - - if ( !PyArg_ParseTuple(_args, "O!", &PyString_Type, &source) ) - return NULL; - if ( PyString_Size(source) != sizeof(BitMap) && PyString_Size(source) != sizeof(PixMap) ) { - PyErr_Format(PyExc_TypeError, - "Argument size was %ld, should be %lu (sizeof BitMap) or %lu (sizeof PixMap)", - PyString_Size(source), sizeof(BitMap), sizeof(PixMap)); - return NULL; - } - ptr = (BitMapPtr)PyString_AsString(source); - if ( (_res = BMObj_New(ptr)) == NULL ) { - return NULL; - } - ((BitMapObject *)_res)->referred_object = source; - Py_INCREF(source); - return _res; - -} -#endif /* __LP64__ */ - -static PyMethodDef Qd_methods[] = { -#ifndef __LP64__ - {"GetPort", (PyCFunction)Qd_GetPort, 1, - PyDoc_STR("() -> (GrafPtr port)")}, - {"GrafDevice", (PyCFunction)Qd_GrafDevice, 1, - PyDoc_STR("(short device) -> None")}, - {"SetPortBits", (PyCFunction)Qd_SetPortBits, 1, - PyDoc_STR("(BitMapPtr bm) -> None")}, - {"PortSize", (PyCFunction)Qd_PortSize, 1, - PyDoc_STR("(short width, short height) -> None")}, - {"MovePortTo", (PyCFunction)Qd_MovePortTo, 1, - PyDoc_STR("(short leftGlobal, short topGlobal) -> None")}, - {"SetOrigin", (PyCFunction)Qd_SetOrigin, 1, - PyDoc_STR("(short h, short v) -> None")}, - {"SetClip", (PyCFunction)Qd_SetClip, 1, - PyDoc_STR("(RgnHandle rgn) -> None")}, - {"GetClip", (PyCFunction)Qd_GetClip, 1, - PyDoc_STR("(RgnHandle rgn) -> None")}, - {"ClipRect", (PyCFunction)Qd_ClipRect, 1, - PyDoc_STR("(Rect r) -> None")}, - {"BackPat", (PyCFunction)Qd_BackPat, 1, - PyDoc_STR("(Pattern pat) -> None")}, - {"InitCursor", (PyCFunction)Qd_InitCursor, 1, - PyDoc_STR("() -> None")}, - {"MacSetCursor", (PyCFunction)Qd_MacSetCursor, 1, - PyDoc_STR("(Cursor crsr) -> None")}, - {"HideCursor", (PyCFunction)Qd_HideCursor, 1, - PyDoc_STR("() -> None")}, - {"MacShowCursor", (PyCFunction)Qd_MacShowCursor, 1, - PyDoc_STR("() -> None")}, - {"ObscureCursor", (PyCFunction)Qd_ObscureCursor, 1, - PyDoc_STR("() -> None")}, - {"HidePen", (PyCFunction)Qd_HidePen, 1, - PyDoc_STR("() -> None")}, - {"ShowPen", (PyCFunction)Qd_ShowPen, 1, - PyDoc_STR("() -> None")}, - {"GetPen", (PyCFunction)Qd_GetPen, 1, - PyDoc_STR("() -> (Point pt)")}, - {"GetPenState", (PyCFunction)Qd_GetPenState, 1, - PyDoc_STR("() -> (PenState pnState)")}, - {"SetPenState", (PyCFunction)Qd_SetPenState, 1, - PyDoc_STR("(PenState pnState) -> None")}, - {"PenSize", (PyCFunction)Qd_PenSize, 1, - PyDoc_STR("(short width, short height) -> None")}, - {"PenMode", (PyCFunction)Qd_PenMode, 1, - PyDoc_STR("(short mode) -> None")}, - {"PenPat", (PyCFunction)Qd_PenPat, 1, - PyDoc_STR("(Pattern pat) -> None")}, - {"PenNormal", (PyCFunction)Qd_PenNormal, 1, - PyDoc_STR("() -> None")}, - {"MoveTo", (PyCFunction)Qd_MoveTo, 1, - PyDoc_STR("(short h, short v) -> None")}, - {"Move", (PyCFunction)Qd_Move, 1, - PyDoc_STR("(short dh, short dv) -> None")}, - {"MacLineTo", (PyCFunction)Qd_MacLineTo, 1, - PyDoc_STR("(short h, short v) -> None")}, - {"Line", (PyCFunction)Qd_Line, 1, - PyDoc_STR("(short dh, short dv) -> None")}, - {"ForeColor", (PyCFunction)Qd_ForeColor, 1, - PyDoc_STR("(long color) -> None")}, - {"BackColor", (PyCFunction)Qd_BackColor, 1, - PyDoc_STR("(long color) -> None")}, - {"ColorBit", (PyCFunction)Qd_ColorBit, 1, - PyDoc_STR("(short whichBit) -> None")}, - {"MacSetRect", (PyCFunction)Qd_MacSetRect, 1, - PyDoc_STR("(short left, short top, short right, short bottom) -> (Rect r)")}, - {"MacOffsetRect", (PyCFunction)Qd_MacOffsetRect, 1, - PyDoc_STR("(Rect r, short dh, short dv) -> (Rect r)")}, - {"MacInsetRect", (PyCFunction)Qd_MacInsetRect, 1, - PyDoc_STR("(Rect r, short dh, short dv) -> (Rect r)")}, - {"SectRect", (PyCFunction)Qd_SectRect, 1, - PyDoc_STR("(Rect src1, Rect src2) -> (Boolean _rv, Rect dstRect)")}, - {"MacUnionRect", (PyCFunction)Qd_MacUnionRect, 1, - PyDoc_STR("(Rect src1, Rect src2) -> (Rect dstRect)")}, - {"MacEqualRect", (PyCFunction)Qd_MacEqualRect, 1, - PyDoc_STR("(Rect rect1, Rect rect2) -> (Boolean _rv)")}, - {"EmptyRect", (PyCFunction)Qd_EmptyRect, 1, - PyDoc_STR("(Rect r) -> (Boolean _rv)")}, - {"MacFrameRect", (PyCFunction)Qd_MacFrameRect, 1, - PyDoc_STR("(Rect r) -> None")}, - {"PaintRect", (PyCFunction)Qd_PaintRect, 1, - PyDoc_STR("(Rect r) -> None")}, - {"EraseRect", (PyCFunction)Qd_EraseRect, 1, - PyDoc_STR("(Rect r) -> None")}, - {"MacInvertRect", (PyCFunction)Qd_MacInvertRect, 1, - PyDoc_STR("(Rect r) -> None")}, - {"MacFillRect", (PyCFunction)Qd_MacFillRect, 1, - PyDoc_STR("(Rect r, Pattern pat) -> None")}, - {"FrameOval", (PyCFunction)Qd_FrameOval, 1, - PyDoc_STR("(Rect r) -> None")}, - {"PaintOval", (PyCFunction)Qd_PaintOval, 1, - PyDoc_STR("(Rect r) -> None")}, - {"EraseOval", (PyCFunction)Qd_EraseOval, 1, - PyDoc_STR("(Rect r) -> None")}, - {"InvertOval", (PyCFunction)Qd_InvertOval, 1, - PyDoc_STR("(Rect r) -> None")}, - {"FillOval", (PyCFunction)Qd_FillOval, 1, - PyDoc_STR("(Rect r, Pattern pat) -> None")}, - {"FrameRoundRect", (PyCFunction)Qd_FrameRoundRect, 1, - PyDoc_STR("(Rect r, short ovalWidth, short ovalHeight) -> None")}, - {"PaintRoundRect", (PyCFunction)Qd_PaintRoundRect, 1, - PyDoc_STR("(Rect r, short ovalWidth, short ovalHeight) -> None")}, - {"EraseRoundRect", (PyCFunction)Qd_EraseRoundRect, 1, - PyDoc_STR("(Rect r, short ovalWidth, short ovalHeight) -> None")}, - {"InvertRoundRect", (PyCFunction)Qd_InvertRoundRect, 1, - PyDoc_STR("(Rect r, short ovalWidth, short ovalHeight) -> None")}, - {"FillRoundRect", (PyCFunction)Qd_FillRoundRect, 1, - PyDoc_STR("(Rect r, short ovalWidth, short ovalHeight, Pattern pat) -> None")}, - {"FrameArc", (PyCFunction)Qd_FrameArc, 1, - PyDoc_STR("(Rect r, short startAngle, short arcAngle) -> None")}, - {"PaintArc", (PyCFunction)Qd_PaintArc, 1, - PyDoc_STR("(Rect r, short startAngle, short arcAngle) -> None")}, - {"EraseArc", (PyCFunction)Qd_EraseArc, 1, - PyDoc_STR("(Rect r, short startAngle, short arcAngle) -> None")}, - {"InvertArc", (PyCFunction)Qd_InvertArc, 1, - PyDoc_STR("(Rect r, short startAngle, short arcAngle) -> None")}, - {"FillArc", (PyCFunction)Qd_FillArc, 1, - PyDoc_STR("(Rect r, short startAngle, short arcAngle, Pattern pat) -> None")}, - {"NewRgn", (PyCFunction)Qd_NewRgn, 1, - PyDoc_STR("() -> (RgnHandle _rv)")}, - {"OpenRgn", (PyCFunction)Qd_OpenRgn, 1, - PyDoc_STR("() -> None")}, - {"CloseRgn", (PyCFunction)Qd_CloseRgn, 1, - PyDoc_STR("(RgnHandle dstRgn) -> None")}, - {"BitMapToRegion", (PyCFunction)Qd_BitMapToRegion, 1, - PyDoc_STR("(RgnHandle region, BitMapPtr bMap) -> None")}, - {"RgnToHandle", (PyCFunction)Qd_RgnToHandle, 1, - PyDoc_STR("(RgnHandle region, Handle flattenedRgnDataHdl) -> None")}, - {"DisposeRgn", (PyCFunction)Qd_DisposeRgn, 1, - PyDoc_STR("(RgnHandle rgn) -> None")}, - {"MacCopyRgn", (PyCFunction)Qd_MacCopyRgn, 1, - PyDoc_STR("(RgnHandle srcRgn, RgnHandle dstRgn) -> None")}, - {"SetEmptyRgn", (PyCFunction)Qd_SetEmptyRgn, 1, - PyDoc_STR("(RgnHandle rgn) -> None")}, - {"MacSetRectRgn", (PyCFunction)Qd_MacSetRectRgn, 1, - PyDoc_STR("(RgnHandle rgn, short left, short top, short right, short bottom) -> None")}, - {"RectRgn", (PyCFunction)Qd_RectRgn, 1, - PyDoc_STR("(RgnHandle rgn, Rect r) -> None")}, - {"MacOffsetRgn", (PyCFunction)Qd_MacOffsetRgn, 1, - PyDoc_STR("(RgnHandle rgn, short dh, short dv) -> None")}, - {"InsetRgn", (PyCFunction)Qd_InsetRgn, 1, - PyDoc_STR("(RgnHandle rgn, short dh, short dv) -> None")}, - {"SectRgn", (PyCFunction)Qd_SectRgn, 1, - PyDoc_STR("(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn) -> None")}, - {"MacUnionRgn", (PyCFunction)Qd_MacUnionRgn, 1, - PyDoc_STR("(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn) -> None")}, - {"DiffRgn", (PyCFunction)Qd_DiffRgn, 1, - PyDoc_STR("(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn) -> None")}, - {"MacXorRgn", (PyCFunction)Qd_MacXorRgn, 1, - PyDoc_STR("(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn) -> None")}, - {"RectInRgn", (PyCFunction)Qd_RectInRgn, 1, - PyDoc_STR("(Rect r, RgnHandle rgn) -> (Boolean _rv)")}, - {"MacEqualRgn", (PyCFunction)Qd_MacEqualRgn, 1, - PyDoc_STR("(RgnHandle rgnA, RgnHandle rgnB) -> (Boolean _rv)")}, - {"EmptyRgn", (PyCFunction)Qd_EmptyRgn, 1, - PyDoc_STR("(RgnHandle rgn) -> (Boolean _rv)")}, - {"MacFrameRgn", (PyCFunction)Qd_MacFrameRgn, 1, - PyDoc_STR("(RgnHandle rgn) -> None")}, - {"MacPaintRgn", (PyCFunction)Qd_MacPaintRgn, 1, - PyDoc_STR("(RgnHandle rgn) -> None")}, - {"EraseRgn", (PyCFunction)Qd_EraseRgn, 1, - PyDoc_STR("(RgnHandle rgn) -> None")}, - {"MacInvertRgn", (PyCFunction)Qd_MacInvertRgn, 1, - PyDoc_STR("(RgnHandle rgn) -> None")}, - {"MacFillRgn", (PyCFunction)Qd_MacFillRgn, 1, - PyDoc_STR("(RgnHandle rgn, Pattern pat) -> None")}, - {"ScrollRect", (PyCFunction)Qd_ScrollRect, 1, - PyDoc_STR("(Rect r, short dh, short dv, RgnHandle updateRgn) -> None")}, - {"CopyBits", (PyCFunction)Qd_CopyBits, 1, - PyDoc_STR("(BitMapPtr srcBits, BitMapPtr dstBits, Rect srcRect, Rect dstRect, short mode, RgnHandle maskRgn) -> None")}, - {"CopyMask", (PyCFunction)Qd_CopyMask, 1, - PyDoc_STR("(BitMapPtr srcBits, BitMapPtr maskBits, BitMapPtr dstBits, Rect srcRect, Rect maskRect, Rect dstRect) -> None")}, - {"OpenPicture", (PyCFunction)Qd_OpenPicture, 1, - PyDoc_STR("(Rect picFrame) -> (PicHandle _rv)")}, - {"PicComment", (PyCFunction)Qd_PicComment, 1, - PyDoc_STR("(short kind, short dataSize, Handle dataHandle) -> None")}, - {"ClosePicture", (PyCFunction)Qd_ClosePicture, 1, - PyDoc_STR("() -> None")}, - {"DrawPicture", (PyCFunction)Qd_DrawPicture, 1, - PyDoc_STR("(PicHandle myPicture, Rect dstRect) -> None")}, - {"KillPicture", (PyCFunction)Qd_KillPicture, 1, - PyDoc_STR("(PicHandle myPicture) -> None")}, - {"OpenPoly", (PyCFunction)Qd_OpenPoly, 1, - PyDoc_STR("() -> (PolyHandle _rv)")}, - {"ClosePoly", (PyCFunction)Qd_ClosePoly, 1, - PyDoc_STR("() -> None")}, - {"KillPoly", (PyCFunction)Qd_KillPoly, 1, - PyDoc_STR("(PolyHandle poly) -> None")}, - {"OffsetPoly", (PyCFunction)Qd_OffsetPoly, 1, - PyDoc_STR("(PolyHandle poly, short dh, short dv) -> None")}, - {"FramePoly", (PyCFunction)Qd_FramePoly, 1, - PyDoc_STR("(PolyHandle poly) -> None")}, - {"PaintPoly", (PyCFunction)Qd_PaintPoly, 1, - PyDoc_STR("(PolyHandle poly) -> None")}, - {"ErasePoly", (PyCFunction)Qd_ErasePoly, 1, - PyDoc_STR("(PolyHandle poly) -> None")}, - {"InvertPoly", (PyCFunction)Qd_InvertPoly, 1, - PyDoc_STR("(PolyHandle poly) -> None")}, - {"FillPoly", (PyCFunction)Qd_FillPoly, 1, - PyDoc_STR("(PolyHandle poly, Pattern pat) -> None")}, - {"SetPt", (PyCFunction)Qd_SetPt, 1, - PyDoc_STR("(short h, short v) -> (Point pt)")}, - {"LocalToGlobal", (PyCFunction)Qd_LocalToGlobal, 1, - PyDoc_STR("(Point pt) -> (Point pt)")}, - {"GlobalToLocal", (PyCFunction)Qd_GlobalToLocal, 1, - PyDoc_STR("(Point pt) -> (Point pt)")}, - {"Random", (PyCFunction)Qd_Random, 1, - PyDoc_STR("() -> (short _rv)")}, - {"MacGetPixel", (PyCFunction)Qd_MacGetPixel, 1, - PyDoc_STR("(short h, short v) -> (Boolean _rv)")}, - {"ScalePt", (PyCFunction)Qd_ScalePt, 1, - PyDoc_STR("(Point pt, Rect srcRect, Rect dstRect) -> (Point pt)")}, - {"MapPt", (PyCFunction)Qd_MapPt, 1, - PyDoc_STR("(Point pt, Rect srcRect, Rect dstRect) -> (Point pt)")}, - {"MapRect", (PyCFunction)Qd_MapRect, 1, - PyDoc_STR("(Rect r, Rect srcRect, Rect dstRect) -> (Rect r)")}, - {"MapRgn", (PyCFunction)Qd_MapRgn, 1, - PyDoc_STR("(RgnHandle rgn, Rect srcRect, Rect dstRect) -> None")}, - {"MapPoly", (PyCFunction)Qd_MapPoly, 1, - PyDoc_STR("(PolyHandle poly, Rect srcRect, Rect dstRect) -> None")}, - {"StdBits", (PyCFunction)Qd_StdBits, 1, - PyDoc_STR("(BitMapPtr srcBits, Rect srcRect, Rect dstRect, short mode, RgnHandle maskRgn) -> None")}, - {"AddPt", (PyCFunction)Qd_AddPt, 1, - PyDoc_STR("(Point src, Point dst) -> (Point dst)")}, - {"EqualPt", (PyCFunction)Qd_EqualPt, 1, - PyDoc_STR("(Point pt1, Point pt2) -> (Boolean _rv)")}, - {"MacPtInRect", (PyCFunction)Qd_MacPtInRect, 1, - PyDoc_STR("(Point pt, Rect r) -> (Boolean _rv)")}, - {"Pt2Rect", (PyCFunction)Qd_Pt2Rect, 1, - PyDoc_STR("(Point pt1, Point pt2) -> (Rect dstRect)")}, - {"PtToAngle", (PyCFunction)Qd_PtToAngle, 1, - PyDoc_STR("(Rect r, Point pt) -> (short angle)")}, - {"SubPt", (PyCFunction)Qd_SubPt, 1, - PyDoc_STR("(Point src, Point dst) -> (Point dst)")}, - {"PtInRgn", (PyCFunction)Qd_PtInRgn, 1, - PyDoc_STR("(Point pt, RgnHandle rgn) -> (Boolean _rv)")}, - {"NewPixMap", (PyCFunction)Qd_NewPixMap, 1, - PyDoc_STR("() -> (PixMapHandle _rv)")}, - {"DisposePixMap", (PyCFunction)Qd_DisposePixMap, 1, - PyDoc_STR("(PixMapHandle pm) -> None")}, - {"CopyPixMap", (PyCFunction)Qd_CopyPixMap, 1, - PyDoc_STR("(PixMapHandle srcPM, PixMapHandle dstPM) -> None")}, - {"NewPixPat", (PyCFunction)Qd_NewPixPat, 1, - PyDoc_STR("() -> (PixPatHandle _rv)")}, - {"DisposePixPat", (PyCFunction)Qd_DisposePixPat, 1, - PyDoc_STR("(PixPatHandle pp) -> None")}, - {"CopyPixPat", (PyCFunction)Qd_CopyPixPat, 1, - PyDoc_STR("(PixPatHandle srcPP, PixPatHandle dstPP) -> None")}, - {"PenPixPat", (PyCFunction)Qd_PenPixPat, 1, - PyDoc_STR("(PixPatHandle pp) -> None")}, - {"BackPixPat", (PyCFunction)Qd_BackPixPat, 1, - PyDoc_STR("(PixPatHandle pp) -> None")}, - {"GetPixPat", (PyCFunction)Qd_GetPixPat, 1, - PyDoc_STR("(short patID) -> (PixPatHandle _rv)")}, - {"MakeRGBPat", (PyCFunction)Qd_MakeRGBPat, 1, - PyDoc_STR("(PixPatHandle pp, RGBColor myColor) -> None")}, - {"FillCRect", (PyCFunction)Qd_FillCRect, 1, - PyDoc_STR("(Rect r, PixPatHandle pp) -> None")}, - {"FillCOval", (PyCFunction)Qd_FillCOval, 1, - PyDoc_STR("(Rect r, PixPatHandle pp) -> None")}, - {"FillCRoundRect", (PyCFunction)Qd_FillCRoundRect, 1, - PyDoc_STR("(Rect r, short ovalWidth, short ovalHeight, PixPatHandle pp) -> None")}, - {"FillCArc", (PyCFunction)Qd_FillCArc, 1, - PyDoc_STR("(Rect r, short startAngle, short arcAngle, PixPatHandle pp) -> None")}, - {"FillCRgn", (PyCFunction)Qd_FillCRgn, 1, - PyDoc_STR("(RgnHandle rgn, PixPatHandle pp) -> None")}, - {"FillCPoly", (PyCFunction)Qd_FillCPoly, 1, - PyDoc_STR("(PolyHandle poly, PixPatHandle pp) -> None")}, - {"RGBForeColor", (PyCFunction)Qd_RGBForeColor, 1, - PyDoc_STR("(RGBColor color) -> None")}, - {"RGBBackColor", (PyCFunction)Qd_RGBBackColor, 1, - PyDoc_STR("(RGBColor color) -> None")}, - {"SetCPixel", (PyCFunction)Qd_SetCPixel, 1, - PyDoc_STR("(short h, short v, RGBColor cPix) -> None")}, - {"SetPortPix", (PyCFunction)Qd_SetPortPix, 1, - PyDoc_STR("(PixMapHandle pm) -> None")}, - {"GetCPixel", (PyCFunction)Qd_GetCPixel, 1, - PyDoc_STR("(short h, short v) -> (RGBColor cPix)")}, - {"GetForeColor", (PyCFunction)Qd_GetForeColor, 1, - PyDoc_STR("() -> (RGBColor color)")}, - {"GetBackColor", (PyCFunction)Qd_GetBackColor, 1, - PyDoc_STR("() -> (RGBColor color)")}, - {"OpColor", (PyCFunction)Qd_OpColor, 1, - PyDoc_STR("(RGBColor color) -> None")}, - {"HiliteColor", (PyCFunction)Qd_HiliteColor, 1, - PyDoc_STR("(RGBColor color) -> None")}, - {"DisposeCTable", (PyCFunction)Qd_DisposeCTable, 1, - PyDoc_STR("(CTabHandle cTable) -> None")}, - {"GetCTable", (PyCFunction)Qd_GetCTable, 1, - PyDoc_STR("(short ctID) -> (CTabHandle _rv)")}, - {"GetCCursor", (PyCFunction)Qd_GetCCursor, 1, - PyDoc_STR("(short crsrID) -> (CCrsrHandle _rv)")}, - {"SetCCursor", (PyCFunction)Qd_SetCCursor, 1, - PyDoc_STR("(CCrsrHandle cCrsr) -> None")}, - {"AllocCursor", (PyCFunction)Qd_AllocCursor, 1, - PyDoc_STR("() -> None")}, - {"DisposeCCursor", (PyCFunction)Qd_DisposeCCursor, 1, - PyDoc_STR("(CCrsrHandle cCrsr) -> None")}, - {"GetMaxDevice", (PyCFunction)Qd_GetMaxDevice, 1, - PyDoc_STR("(Rect globalRect) -> (GDHandle _rv)")}, - {"GetCTSeed", (PyCFunction)Qd_GetCTSeed, 1, - PyDoc_STR("() -> (long _rv)")}, - {"GetDeviceList", (PyCFunction)Qd_GetDeviceList, 1, - PyDoc_STR("() -> (GDHandle _rv)")}, - {"GetMainDevice", (PyCFunction)Qd_GetMainDevice, 1, - PyDoc_STR("() -> (GDHandle _rv)")}, - {"GetNextDevice", (PyCFunction)Qd_GetNextDevice, 1, - PyDoc_STR("(GDHandle curDevice) -> (GDHandle _rv)")}, - {"TestDeviceAttribute", (PyCFunction)Qd_TestDeviceAttribute, 1, - PyDoc_STR("(GDHandle gdh, short attribute) -> (Boolean _rv)")}, - {"SetDeviceAttribute", (PyCFunction)Qd_SetDeviceAttribute, 1, - PyDoc_STR("(GDHandle gdh, short attribute, Boolean value) -> None")}, - {"InitGDevice", (PyCFunction)Qd_InitGDevice, 1, - PyDoc_STR("(short qdRefNum, long mode, GDHandle gdh) -> None")}, - {"NewGDevice", (PyCFunction)Qd_NewGDevice, 1, - PyDoc_STR("(short refNum, long mode) -> (GDHandle _rv)")}, - {"DisposeGDevice", (PyCFunction)Qd_DisposeGDevice, 1, - PyDoc_STR("(GDHandle gdh) -> None")}, - {"SetGDevice", (PyCFunction)Qd_SetGDevice, 1, - PyDoc_STR("(GDHandle gd) -> None")}, - {"GetGDevice", (PyCFunction)Qd_GetGDevice, 1, - PyDoc_STR("() -> (GDHandle _rv)")}, - {"Color2Index", (PyCFunction)Qd_Color2Index, 1, - PyDoc_STR("(RGBColor myColor) -> (long _rv)")}, - {"Index2Color", (PyCFunction)Qd_Index2Color, 1, - PyDoc_STR("(long index) -> (RGBColor aColor)")}, - {"InvertColor", (PyCFunction)Qd_InvertColor, 1, - PyDoc_STR("() -> (RGBColor myColor)")}, - {"RealColor", (PyCFunction)Qd_RealColor, 1, - PyDoc_STR("(RGBColor color) -> (Boolean _rv)")}, - {"GetSubTable", (PyCFunction)Qd_GetSubTable, 1, - PyDoc_STR("(CTabHandle myColors, short iTabRes, CTabHandle targetTbl) -> None")}, - {"MakeITable", (PyCFunction)Qd_MakeITable, 1, - PyDoc_STR("(CTabHandle cTabH, ITabHandle iTabH, short res) -> None")}, - {"SetClientID", (PyCFunction)Qd_SetClientID, 1, - PyDoc_STR("(short id) -> None")}, - {"ProtectEntry", (PyCFunction)Qd_ProtectEntry, 1, - PyDoc_STR("(short index, Boolean protect) -> None")}, - {"ReserveEntry", (PyCFunction)Qd_ReserveEntry, 1, - PyDoc_STR("(short index, Boolean reserve) -> None")}, - {"QDError", (PyCFunction)Qd_QDError, 1, - PyDoc_STR("() -> (short _rv)")}, - {"CopyDeepMask", (PyCFunction)Qd_CopyDeepMask, 1, - PyDoc_STR("(BitMapPtr srcBits, BitMapPtr maskBits, BitMapPtr dstBits, Rect srcRect, Rect maskRect, Rect dstRect, short mode, RgnHandle maskRgn) -> None")}, - {"GetPattern", (PyCFunction)Qd_GetPattern, 1, - PyDoc_STR("(short patternID) -> (PatHandle _rv)")}, - {"MacGetCursor", (PyCFunction)Qd_MacGetCursor, 1, - PyDoc_STR("(short cursorID) -> (CursHandle _rv)")}, - {"GetPicture", (PyCFunction)Qd_GetPicture, 1, - PyDoc_STR("(short pictureID) -> (PicHandle _rv)")}, - {"DeltaPoint", (PyCFunction)Qd_DeltaPoint, 1, - PyDoc_STR("(Point ptA, Point ptB) -> (long _rv)")}, - {"ShieldCursor", (PyCFunction)Qd_ShieldCursor, 1, - PyDoc_STR("(Rect shieldRect, Point offsetPt) -> None")}, - {"ScreenRes", (PyCFunction)Qd_ScreenRes, 1, - PyDoc_STR("() -> (short scrnHRes, short scrnVRes)")}, - {"GetIndPattern", (PyCFunction)Qd_GetIndPattern, 1, - PyDoc_STR("(short patternListID, short index) -> (Pattern thePat)")}, - {"SlopeFromAngle", (PyCFunction)Qd_SlopeFromAngle, 1, - PyDoc_STR("(short angle) -> (Fixed _rv)")}, - {"AngleFromSlope", (PyCFunction)Qd_AngleFromSlope, 1, - PyDoc_STR("(Fixed slope) -> (short _rv)")}, - {"GetPixBounds", (PyCFunction)Qd_GetPixBounds, 1, - PyDoc_STR("(PixMapHandle pixMap) -> (Rect bounds)")}, - {"GetPixDepth", (PyCFunction)Qd_GetPixDepth, 1, - PyDoc_STR("(PixMapHandle pixMap) -> (short _rv)")}, - {"GetQDGlobalsRandomSeed", (PyCFunction)Qd_GetQDGlobalsRandomSeed, 1, - PyDoc_STR("() -> (long _rv)")}, - {"GetQDGlobalsScreenBits", (PyCFunction)Qd_GetQDGlobalsScreenBits, 1, - PyDoc_STR("() -> (BitMap screenBits)")}, - {"GetQDGlobalsArrow", (PyCFunction)Qd_GetQDGlobalsArrow, 1, - PyDoc_STR("() -> (Cursor arrow)")}, - {"GetQDGlobalsDarkGray", (PyCFunction)Qd_GetQDGlobalsDarkGray, 1, - PyDoc_STR("() -> (Pattern dkGray)")}, - {"GetQDGlobalsLightGray", (PyCFunction)Qd_GetQDGlobalsLightGray, 1, - PyDoc_STR("() -> (Pattern ltGray)")}, - {"GetQDGlobalsGray", (PyCFunction)Qd_GetQDGlobalsGray, 1, - PyDoc_STR("() -> (Pattern gray)")}, - {"GetQDGlobalsBlack", (PyCFunction)Qd_GetQDGlobalsBlack, 1, - PyDoc_STR("() -> (Pattern black)")}, - {"GetQDGlobalsWhite", (PyCFunction)Qd_GetQDGlobalsWhite, 1, - PyDoc_STR("() -> (Pattern white)")}, - {"GetQDGlobalsThePort", (PyCFunction)Qd_GetQDGlobalsThePort, 1, - PyDoc_STR("() -> (CGrafPtr _rv)")}, - {"SetQDGlobalsRandomSeed", (PyCFunction)Qd_SetQDGlobalsRandomSeed, 1, - PyDoc_STR("(long randomSeed) -> None")}, - {"SetQDGlobalsArrow", (PyCFunction)Qd_SetQDGlobalsArrow, 1, - PyDoc_STR("(Cursor arrow) -> None")}, - {"GetRegionBounds", (PyCFunction)Qd_GetRegionBounds, 1, - PyDoc_STR("(RgnHandle region) -> (Rect bounds)")}, - {"IsRegionRectangular", (PyCFunction)Qd_IsRegionRectangular, 1, - PyDoc_STR("(RgnHandle region) -> (Boolean _rv)")}, - {"CreateNewPort", (PyCFunction)Qd_CreateNewPort, 1, - PyDoc_STR("() -> (CGrafPtr _rv)")}, - {"SetQDError", (PyCFunction)Qd_SetQDError, 1, - PyDoc_STR("(OSErr err) -> None")}, - {"LMGetScrVRes", (PyCFunction)Qd_LMGetScrVRes, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"LMSetScrVRes", (PyCFunction)Qd_LMSetScrVRes, 1, - PyDoc_STR("(SInt16 value) -> None")}, - {"LMGetScrHRes", (PyCFunction)Qd_LMGetScrHRes, 1, - PyDoc_STR("() -> (SInt16 _rv)")}, - {"LMSetScrHRes", (PyCFunction)Qd_LMSetScrHRes, 1, - PyDoc_STR("(SInt16 value) -> None")}, - {"LMGetMainDevice", (PyCFunction)Qd_LMGetMainDevice, 1, - PyDoc_STR("() -> (GDHandle _rv)")}, - {"LMSetMainDevice", (PyCFunction)Qd_LMSetMainDevice, 1, - PyDoc_STR("(GDHandle value) -> None")}, - {"LMGetDeviceList", (PyCFunction)Qd_LMGetDeviceList, 1, - PyDoc_STR("() -> (GDHandle _rv)")}, - {"LMSetDeviceList", (PyCFunction)Qd_LMSetDeviceList, 1, - PyDoc_STR("(GDHandle value) -> None")}, - {"LMGetQDColors", (PyCFunction)Qd_LMGetQDColors, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {"LMSetQDColors", (PyCFunction)Qd_LMSetQDColors, 1, - PyDoc_STR("(Handle value) -> None")}, - {"LMGetWidthListHand", (PyCFunction)Qd_LMGetWidthListHand, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {"LMSetWidthListHand", (PyCFunction)Qd_LMSetWidthListHand, 1, - PyDoc_STR("(Handle value) -> None")}, - {"LMGetHiliteMode", (PyCFunction)Qd_LMGetHiliteMode, 1, - PyDoc_STR("() -> (UInt8 _rv)")}, - {"LMSetHiliteMode", (PyCFunction)Qd_LMSetHiliteMode, 1, - PyDoc_STR("(UInt8 value) -> None")}, - {"LMGetWidthTabHandle", (PyCFunction)Qd_LMGetWidthTabHandle, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {"LMSetWidthTabHandle", (PyCFunction)Qd_LMSetWidthTabHandle, 1, - PyDoc_STR("(Handle value) -> None")}, - {"LMGetLastSPExtra", (PyCFunction)Qd_LMGetLastSPExtra, 1, - PyDoc_STR("() -> (SInt32 _rv)")}, - {"LMSetLastSPExtra", (PyCFunction)Qd_LMSetLastSPExtra, 1, - PyDoc_STR("(SInt32 value) -> None")}, - {"LMGetLastFOND", (PyCFunction)Qd_LMGetLastFOND, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {"LMSetLastFOND", (PyCFunction)Qd_LMSetLastFOND, 1, - PyDoc_STR("(Handle value) -> None")}, - {"LMGetFractEnable", (PyCFunction)Qd_LMGetFractEnable, 1, - PyDoc_STR("() -> (UInt8 _rv)")}, - {"LMSetFractEnable", (PyCFunction)Qd_LMSetFractEnable, 1, - PyDoc_STR("(UInt8 value) -> None")}, - {"LMGetTheGDevice", (PyCFunction)Qd_LMGetTheGDevice, 1, - PyDoc_STR("() -> (GDHandle _rv)")}, - {"LMSetTheGDevice", (PyCFunction)Qd_LMSetTheGDevice, 1, - PyDoc_STR("(GDHandle value) -> None")}, - {"LMGetHiliteRGB", (PyCFunction)Qd_LMGetHiliteRGB, 1, - PyDoc_STR("() -> (RGBColor hiliteRGBValue)")}, - {"LMSetHiliteRGB", (PyCFunction)Qd_LMSetHiliteRGB, 1, - PyDoc_STR("(RGBColor hiliteRGBValue) -> None")}, - {"LMGetCursorNew", (PyCFunction)Qd_LMGetCursorNew, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"LMSetCursorNew", (PyCFunction)Qd_LMSetCursorNew, 1, - PyDoc_STR("(Boolean value) -> None")}, - {"TextFont", (PyCFunction)Qd_TextFont, 1, - PyDoc_STR("(short font) -> None")}, - {"TextFace", (PyCFunction)Qd_TextFace, 1, - PyDoc_STR("(StyleParameter face) -> None")}, - {"TextMode", (PyCFunction)Qd_TextMode, 1, - PyDoc_STR("(short mode) -> None")}, - {"TextSize", (PyCFunction)Qd_TextSize, 1, - PyDoc_STR("(short size) -> None")}, - {"SpaceExtra", (PyCFunction)Qd_SpaceExtra, 1, - PyDoc_STR("(Fixed extra) -> None")}, - {"DrawChar", (PyCFunction)Qd_DrawChar, 1, - PyDoc_STR("(CharParameter ch) -> None")}, - {"DrawString", (PyCFunction)Qd_DrawString, 1, - PyDoc_STR("(Str255 s) -> None")}, - {"MacDrawText", (PyCFunction)Qd_MacDrawText, 1, - PyDoc_STR("(Buffer textBuf, short firstByte, short byteCount) -> None")}, - {"CharWidth", (PyCFunction)Qd_CharWidth, 1, - PyDoc_STR("(CharParameter ch) -> (short _rv)")}, - {"StringWidth", (PyCFunction)Qd_StringWidth, 1, - PyDoc_STR("(Str255 s) -> (short _rv)")}, - {"TextWidth", (PyCFunction)Qd_TextWidth, 1, - PyDoc_STR("(Buffer textBuf, short firstByte, short byteCount) -> (short _rv)")}, - {"GetFontInfo", (PyCFunction)Qd_GetFontInfo, 1, - PyDoc_STR("() -> (FontInfo info)")}, - {"CharExtra", (PyCFunction)Qd_CharExtra, 1, - PyDoc_STR("(Fixed extra) -> None")}, - {"TruncString", (PyCFunction)Qd_TruncString, 1, - PyDoc_STR("(short width, Str255 theString, TruncCode truncWhere) -> (short _rv)")}, - {"SetPort", (PyCFunction)Qd_SetPort, 1, - PyDoc_STR("(GrafPtr thePort) -> None")}, - {"GetCursor", (PyCFunction)Qd_GetCursor, 1, - PyDoc_STR("(short cursorID) -> (CursHandle _rv)")}, - {"SetCursor", (PyCFunction)Qd_SetCursor, 1, - PyDoc_STR("(Cursor crsr) -> None")}, - {"ShowCursor", (PyCFunction)Qd_ShowCursor, 1, - PyDoc_STR("() -> None")}, - {"LineTo", (PyCFunction)Qd_LineTo, 1, - PyDoc_STR("(short h, short v) -> None")}, - {"SetRect", (PyCFunction)Qd_SetRect, 1, - PyDoc_STR("(short left, short top, short right, short bottom) -> (Rect r)")}, - {"OffsetRect", (PyCFunction)Qd_OffsetRect, 1, - PyDoc_STR("(Rect r, short dh, short dv) -> (Rect r)")}, - {"InsetRect", (PyCFunction)Qd_InsetRect, 1, - PyDoc_STR("(Rect r, short dh, short dv) -> (Rect r)")}, - {"UnionRect", (PyCFunction)Qd_UnionRect, 1, - PyDoc_STR("(Rect src1, Rect src2) -> (Rect dstRect)")}, - {"EqualRect", (PyCFunction)Qd_EqualRect, 1, - PyDoc_STR("(Rect rect1, Rect rect2) -> (Boolean _rv)")}, - {"FrameRect", (PyCFunction)Qd_FrameRect, 1, - PyDoc_STR("(Rect r) -> None")}, - {"InvertRect", (PyCFunction)Qd_InvertRect, 1, - PyDoc_STR("(Rect r) -> None")}, - {"FillRect", (PyCFunction)Qd_FillRect, 1, - PyDoc_STR("(Rect r, Pattern pat) -> None")}, - {"CopyRgn", (PyCFunction)Qd_CopyRgn, 1, - PyDoc_STR("(RgnHandle srcRgn, RgnHandle dstRgn) -> None")}, - {"SetRectRgn", (PyCFunction)Qd_SetRectRgn, 1, - PyDoc_STR("(RgnHandle rgn, short left, short top, short right, short bottom) -> None")}, - {"OffsetRgn", (PyCFunction)Qd_OffsetRgn, 1, - PyDoc_STR("(RgnHandle rgn, short dh, short dv) -> None")}, - {"UnionRgn", (PyCFunction)Qd_UnionRgn, 1, - PyDoc_STR("(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn) -> None")}, - {"XorRgn", (PyCFunction)Qd_XorRgn, 1, - PyDoc_STR("(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn) -> None")}, - {"EqualRgn", (PyCFunction)Qd_EqualRgn, 1, - PyDoc_STR("(RgnHandle rgnA, RgnHandle rgnB) -> (Boolean _rv)")}, - {"FrameRgn", (PyCFunction)Qd_FrameRgn, 1, - PyDoc_STR("(RgnHandle rgn) -> None")}, - {"PaintRgn", (PyCFunction)Qd_PaintRgn, 1, - PyDoc_STR("(RgnHandle rgn) -> None")}, - {"InvertRgn", (PyCFunction)Qd_InvertRgn, 1, - PyDoc_STR("(RgnHandle rgn) -> None")}, - {"FillRgn", (PyCFunction)Qd_FillRgn, 1, - PyDoc_STR("(RgnHandle rgn, Pattern pat) -> None")}, - {"GetPixel", (PyCFunction)Qd_GetPixel, 1, - PyDoc_STR("(short h, short v) -> (Boolean _rv)")}, - {"PtInRect", (PyCFunction)Qd_PtInRect, 1, - PyDoc_STR("(Point pt, Rect r) -> (Boolean _rv)")}, - {"DrawText", (PyCFunction)Qd_DrawText, 1, - PyDoc_STR("(Buffer textBuf, short firstByte, short byteCount) -> None")}, - {"BitMap", (PyCFunction)Qd_BitMap, 1, - PyDoc_STR("Take (string, int, Rect) argument and create BitMap")}, - {"RawBitMap", (PyCFunction)Qd_RawBitMap, 1, - PyDoc_STR("Take string BitMap and turn into BitMap object")}, -#endif /* __LP64__ */ - {NULL, NULL, 0} -}; - - -#ifndef __LP64__ - -/* Like BMObj_New, but the original bitmap data structure is copied (and -** released when the object is released) -*/ -PyObject *BMObj_NewCopied(BitMapPtr itself) -{ - BitMapObject *it; - BitMapPtr itself_copy; - - if ((itself_copy=(BitMapPtr)malloc(sizeof(BitMap))) == NULL) - return PyErr_NoMemory(); - *itself_copy = *itself; - it = (BitMapObject *)BMObj_New(itself_copy); - it->referred_bitmap = itself_copy; - return (PyObject *)it; -} - -#endif /* __LP64__ */ - - -void init_Qd(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; - - - - PyMac_INIT_TOOLBOX_OBJECT_NEW(BitMapPtr, BMObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(BitMapPtr, BMObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(GrafPtr, GrafObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(GrafPtr, GrafObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(RGBColorPtr, QdRGB_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(RGBColor, QdRGB_Convert); - -#endif /* __LP64__ */ - - m = Py_InitModule("_Qd", Qd_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - Qd_Error = PyMac_GetOSErrException(); - if (Qd_Error == NULL || - PyDict_SetItemString(d, "Error", Qd_Error) != 0) - return; - GrafPort_Type.ob_type = &PyType_Type; - if (PyType_Ready(&GrafPort_Type) < 0) return; - Py_INCREF(&GrafPort_Type); - PyModule_AddObject(m, "GrafPort", (PyObject *)&GrafPort_Type); - /* Backward-compatible name */ - Py_INCREF(&GrafPort_Type); - PyModule_AddObject(m, "GrafPortType", (PyObject *)&GrafPort_Type); - BitMap_Type.ob_type = &PyType_Type; - if (PyType_Ready(&BitMap_Type) < 0) return; - Py_INCREF(&BitMap_Type); - PyModule_AddObject(m, "BitMap", (PyObject *)&BitMap_Type); - /* Backward-compatible name */ - Py_INCREF(&BitMap_Type); - PyModule_AddObject(m, "BitMapType", (PyObject *)&BitMap_Type); -#endif /* __LP64__ */ -} - -/* ========================= End module _Qd ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/qd/qdedit.py b/project/jni/python/src/Mac/Modules/qd/qdedit.py deleted file mode 100644 index 83d81edc9..000000000 --- a/project/jni/python/src/Mac/Modules/qd/qdedit.py +++ /dev/null @@ -1,158 +0,0 @@ -f = Function(void, 'SetPort', - (GrafPtr, 'thePort', InMode), -) -functions.append(f) - -f = Function(CursHandle, 'GetCursor', - (short, 'cursorID', InMode), -) -functions.append(f) - -f = Function(void, 'SetCursor', - (Cursor_ptr, 'crsr', InMode), -) -functions.append(f) - -f = Function(void, 'ShowCursor', -) -functions.append(f) - -f = Function(void, 'LineTo', - (short, 'h', InMode), - (short, 'v', InMode), -) -functions.append(f) - -f = Function(void, 'SetRect', - (Rect, 'r', OutMode), - (short, 'left', InMode), - (short, 'top', InMode), - (short, 'right', InMode), - (short, 'bottom', InMode), -) -functions.append(f) - -f = Function(void, 'OffsetRect', - (Rect, 'r', InOutMode), - (short, 'dh', InMode), - (short, 'dv', InMode), -) -functions.append(f) - -f = Function(void, 'InsetRect', - (Rect, 'r', InOutMode), - (short, 'dh', InMode), - (short, 'dv', InMode), -) -functions.append(f) - -f = Function(void, 'UnionRect', - (Rect_ptr, 'src1', InMode), - (Rect_ptr, 'src2', InMode), - (Rect, 'dstRect', OutMode), -) -functions.append(f) - -f = Function(Boolean, 'EqualRect', - (Rect_ptr, 'rect1', InMode), - (Rect_ptr, 'rect2', InMode), -) -functions.append(f) - -f = Function(void, 'FrameRect', - (Rect_ptr, 'r', InMode), -) -functions.append(f) - -f = Function(void, 'InvertRect', - (Rect_ptr, 'r', InMode), -) -functions.append(f) - -f = Function(void, 'FillRect', - (Rect_ptr, 'r', InMode), - (Pattern_ptr, 'pat', InMode), -) -functions.append(f) - -f = Function(void, 'CopyRgn', - (RgnHandle, 'srcRgn', InMode), - (RgnHandle, 'dstRgn', InMode), -) -functions.append(f) - -f = Function(void, 'SetRectRgn', - (RgnHandle, 'rgn', InMode), - (short, 'left', InMode), - (short, 'top', InMode), - (short, 'right', InMode), - (short, 'bottom', InMode), -) -functions.append(f) - -f = Function(void, 'OffsetRgn', - (RgnHandle, 'rgn', InMode), - (short, 'dh', InMode), - (short, 'dv', InMode), -) -functions.append(f) - -f = Function(void, 'UnionRgn', - (RgnHandle, 'srcRgnA', InMode), - (RgnHandle, 'srcRgnB', InMode), - (RgnHandle, 'dstRgn', InMode), -) -functions.append(f) - -f = Function(void, 'XorRgn', - (RgnHandle, 'srcRgnA', InMode), - (RgnHandle, 'srcRgnB', InMode), - (RgnHandle, 'dstRgn', InMode), -) -functions.append(f) - -f = Function(Boolean, 'EqualRgn', - (RgnHandle, 'rgnA', InMode), - (RgnHandle, 'rgnB', InMode), -) -functions.append(f) - -f = Function(void, 'FrameRgn', - (RgnHandle, 'rgn', InMode), -) -functions.append(f) - -f = Function(void, 'PaintRgn', - (RgnHandle, 'rgn', InMode), -) -functions.append(f) - -f = Function(void, 'InvertRgn', - (RgnHandle, 'rgn', InMode), -) -functions.append(f) - -f = Function(void, 'FillRgn', - (RgnHandle, 'rgn', InMode), - (Pattern_ptr, 'pat', InMode), -) -functions.append(f) - -f = Function(Boolean, 'GetPixel', - (short, 'h', InMode), - (short, 'v', InMode), -) -functions.append(f) - -f = Function(Boolean, 'PtInRect', - (Point, 'pt', InMode), - (Rect_ptr, 'r', InMode), -) -functions.append(f) - -f = Function(void, 'DrawText', - (TextThingie, 'textBuf', InMode), - (short, 'firstByte', InMode), - (short, 'byteCount', InMode), -) -functions.append(f) diff --git a/project/jni/python/src/Mac/Modules/qd/qdscan.py b/project/jni/python/src/Mac/Modules/qd/qdscan.py deleted file mode 100644 index 24fbb74f8..000000000 --- a/project/jni/python/src/Mac/Modules/qd/qdscan.py +++ /dev/null @@ -1,234 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) - -from scantools import Scanner - -def main(): - input = "QuickDraw.h" - output = "qdgen.py" - defsoutput = TOOLBOXDIR + "QuickDraw.py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - - # Grmpf. Universal Headers have Text-stuff in a different include file... - input = "QuickDrawText.h" - output = "@qdgentext.py" - defsoutput = "@QuickDrawText.py" - have_extra = 0 - try: - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - have_extra = 1 - except IOError: - pass - if have_extra: - print "=== Copying QuickDrawText stuff into main files... ===" - ifp = open("@qdgentext.py") - ofp = open("qdgen.py", "a") - ofp.write(ifp.read()) - ifp.close() - ofp.close() - ifp = open("@QuickDrawText.py") - ofp = open(TOOLBOXDIR + "QuickDraw.py", "a") - ofp.write(ifp.read()) - ifp.close() - ofp.close() - - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - import qdsupport - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t in ('GrafPtr', 'CGrafPtr') and m == 'InMode': - classname = "Method" - listname = "gr_methods" - elif t == 'BitMapPtr' and m == 'InMode': - classname = "Method" - listname = "bm_methods" -## elif t == "PolyHandle" and m == "InMode": -## classname = "Method" -## listname = "p_methods" -## elif t == "RgnHandle" and m == "InMode": -## classname = "Method" -## listname = "r_methods" - return classname, listname - - - def writeinitialdefs(self): - self.defsfile.write(""" -def FOUR_CHAR_CODE(x): return x -normal = 0 -bold = 1 -italic = 2 -underline = 4 -outline = 8 -shadow = 0x10 -condense = 0x20 -extend = 0x40 -""") - - def makeblacklistnames(self): - return [ - 'InitGraf', - 'StuffHex', - 'StdLine', - 'StdComment', - 'StdGetPic', - 'OpenPort', - 'InitPort', - 'ClosePort', - 'OpenCPort', - 'InitCPort', - 'CloseCPort', - 'BitMapToRegionGlue', - 'StdOpcode', # XXXX Missing from library... - # The following are for non-macos use: - 'LockPortBits', - 'UnlockPortBits', - 'UpdatePort', - 'GetPortNativeWindow', - 'GetNativeWindowPort', - 'NativeRegionToMacRegion', - 'MacRegionToNativeRegion', - 'GetPortHWND', - 'GetHWNDPort', - 'GetPICTFromDIB', - - 'HandleToRgn', # Funny signature - - # Need Cm, which we don't want to drag in just yet - 'OpenCursorComponent', - 'CloseCursorComponent', - 'SetCursorComponent', - 'CursorComponentChanged', - 'CursorComponentSetData', - ] - - def makeblacklisttypes(self): - return [ - "QDRegionBitsRef", # Should do this, but too lazy now. - 'CIconHandle', # Obsolete - 'CQDProcs', - 'CQDProcsPtr', - 'CSpecArray', - 'ColorComplementProcPtr', - 'ColorComplementUPP', - 'ColorSearchProcPtr', - 'ColorSearchUPP', - 'ConstPatternParam', - 'DeviceLoopDrawingProcPtr', - 'DeviceLoopFlags', - 'GrafVerb', - 'OpenCPicParams_ptr', - 'Ptr', - 'QDProcs', - 'ReqListRec', - 'void_ptr', - 'CustomXFerProcPtr', - ] - - def makerepairinstructions(self): - return [ - ([('void_ptr', 'textBuf', 'InMode'), - ('short', 'firstByte', 'InMode'), - ('short', 'byteCount', 'InMode')], - [('TextThingie', '*', '*'), ('*', '*', '*'), ('*', '*', '*')]), - - # GetPen and SetPt use a point-pointer as output-only: - ('GetPen', [('Point', '*', 'OutMode')], [('*', '*', 'OutMode')]), - ('SetPt', [('Point', '*', 'OutMode')], [('*', '*', 'OutMode')]), - - # All others use it as input/output: - ([('Point', '*', 'OutMode')], - [('*', '*', 'InOutMode')]), - - # InsetRect, OffsetRect - ([('Rect', 'r', 'OutMode'), - ('short', 'dh', 'InMode'), - ('short', 'dv', 'InMode')], - [('Rect', 'r', 'InOutMode'), - ('short', 'dh', 'InMode'), - ('short', 'dv', 'InMode')]), - - # MapRect - ([('Rect', 'r', 'OutMode'), - ('Rect_ptr', 'srcRect', 'InMode'), - ('Rect_ptr', 'dstRect', 'InMode')], - [('Rect', 'r', 'InOutMode'), - ('Rect_ptr', 'srcRect', 'InMode'), - ('Rect_ptr', 'dstRect', 'InMode')]), - - # CopyBits and friends - ([('RgnHandle', 'maskRgn', 'InMode')], - [('OptRgnHandle', 'maskRgn', 'InMode')]), - - ('QDFlushPortBuffer', - [('RgnHandle', '*', 'InMode')], - [('OptRgnHandle', '*', 'InMode')]), - - # Accessors with reference argument also returned. - ([('Rect_ptr', 'GetPortBounds', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('RGBColor_ptr', 'GetPortForeColor', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('RGBColor_ptr', 'GetPortBackColor', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('RGBColor_ptr', 'GetPortOpColor', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('RGBColor_ptr', 'GetPortHiliteColor', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('Point_ptr', 'GetPortPenSize', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('Point_ptr', 'GetPortPenLocation', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('Rect_ptr', 'GetPixBounds', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('BitMap_ptr', 'GetQDGlobalsScreenBits', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('Cursor_ptr', 'GetQDGlobalsArrow', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('Rect_ptr', 'GetRegionBounds', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('Pattern_ptr', '*', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('Point_ptr', 'QDLocalToGlobalPoint', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('Rect_ptr', 'QDLocalToGlobalRect', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('Point_ptr', 'QDGlobalToLocalPoint', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ([('Rect_ptr', 'QDGlobalToLocalRect', 'ReturnMode')], - [('void', '*', 'ReturnMode')]), - - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/qd/qdsupport.py b/project/jni/python/src/Mac/Modules/qd/qdsupport.py deleted file mode 100644 index d078ac6cd..000000000 --- a/project/jni/python/src/Mac/Modules/qd/qdsupport.py +++ /dev/null @@ -1,377 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'QuickDraw.h' # The Apple header file -MODNAME = '_Qd' # The name of the module -OBJECTNAME = 'Graf' # The basic name of the objects used here - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Qd' # The prefix for module-wide routines -OBJECTTYPE = OBJECTNAME + 'Ptr' # The C type used to represent them -OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -EXTRAFILE = string.lower(MODPREFIX) + 'edit.py' # A similar file but hand-made -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects - -class TextThingieClass(FixedInputBufferType): - def getargsCheck(self, name): - Output("/* Fool compiler warnings */") - Output("%s__in_len__ = %s__in_len__;", name, name) - - def declareSize(self, name): - Output("int %s__in_len__;", name) - -TextThingie = TextThingieClass(None) - -# These are temporary! -RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") -OptRgnHandle = OpaqueByValueType("RgnHandle", "OptResObj") -PicHandle = OpaqueByValueType("PicHandle", "ResObj") -PolyHandle = OpaqueByValueType("PolyHandle", "ResObj") -PixMapHandle = OpaqueByValueType("PixMapHandle", "ResObj") -PixPatHandle = OpaqueByValueType("PixPatHandle", "ResObj") -PatHandle = OpaqueByValueType("PatHandle", "ResObj") -CursHandle = OpaqueByValueType("CursHandle", "ResObj") -CCrsrHandle = OpaqueByValueType("CCrsrHandle", "ResObj") -CIconHandle = OpaqueByValueType("CIconHandle", "ResObj") -CTabHandle = OpaqueByValueType("CTabHandle", "ResObj") -ITabHandle = OpaqueByValueType("ITabHandle", "ResObj") -GDHandle = OpaqueByValueType("GDHandle", "ResObj") -CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj") -GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj") -BitMap_ptr = OpaqueByValueType("BitMapPtr", "BMObj") -const_BitMap_ptr = OpaqueByValueType("const BitMap *", "BMObj") -BitMap = OpaqueType("BitMap", "BMObj_NewCopied", "BUG") -RGBColor = OpaqueType('RGBColor', 'QdRGB') -RGBColor_ptr = RGBColor -FontInfo = OpaqueType('FontInfo', 'QdFI') -Component = OpaqueByValueType('Component', 'CmpObj') -ComponentInstance = OpaqueByValueType('ComponentInstance', 'CmpInstObj') - -Cursor = StructOutputBufferType('Cursor') -Cursor_ptr = StructInputBufferType('Cursor') -Pattern = StructOutputBufferType('Pattern') -Pattern_ptr = StructInputBufferType('Pattern') -PenState = StructOutputBufferType('PenState') -PenState_ptr = StructInputBufferType('PenState') -TruncCode = Type("TruncCode", "h") - -includestuff = includestuff + """ -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_GrafObj_New(GrafPtr); -extern int _GrafObj_Convert(PyObject *, GrafPtr *); -extern PyObject *_BMObj_New(BitMapPtr); -extern int _BMObj_Convert(PyObject *, BitMapPtr *); -extern PyObject *_QdRGB_New(RGBColorPtr); -extern int _QdRGB_Convert(PyObject *, RGBColorPtr); - -#define GrafObj_New _GrafObj_New -#define GrafObj_Convert _GrafObj_Convert -#define BMObj_New _BMObj_New -#define BMObj_Convert _BMObj_Convert -#define QdRGB_New _QdRGB_New -#define QdRGB_Convert _QdRGB_Convert -#endif - -static PyObject *BMObj_NewCopied(BitMapPtr); - -/* -** Parse/generate RGB records -*/ -PyObject *QdRGB_New(RGBColorPtr itself) -{ - - return Py_BuildValue("lll", (long)itself->red, (long)itself->green, (long)itself->blue); -} - -int QdRGB_Convert(PyObject *v, RGBColorPtr p_itself) -{ - long red, green, blue; - - if( !PyArg_ParseTuple(v, "lll", &red, &green, &blue) ) - return 0; - p_itself->red = (unsigned short)red; - p_itself->green = (unsigned short)green; - p_itself->blue = (unsigned short)blue; - return 1; -} - -/* -** Generate FontInfo records -*/ -static -PyObject *QdFI_New(FontInfo *itself) -{ - - return Py_BuildValue("hhhh", itself->ascent, itself->descent, - itself->widMax, itself->leading); -} -""" - -finalstuff = finalstuff + """ -/* Like BMObj_New, but the original bitmap data structure is copied (and -** released when the object is released) -*/ -PyObject *BMObj_NewCopied(BitMapPtr itself) -{ - BitMapObject *it; - BitMapPtr itself_copy; - - if ((itself_copy=(BitMapPtr)malloc(sizeof(BitMap))) == NULL) - return PyErr_NoMemory(); - *itself_copy = *itself; - it = (BitMapObject *)BMObj_New(itself_copy); - it->referred_bitmap = itself_copy; - return (PyObject *)it; -} - -""" - -variablestuff = "" - -initstuff = initstuff + """ - PyMac_INIT_TOOLBOX_OBJECT_NEW(BitMapPtr, BMObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(BitMapPtr, BMObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(GrafPtr, GrafObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(GrafPtr, GrafObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(RGBColorPtr, QdRGB_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(RGBColor, QdRGB_Convert); -""" - -## not yet... -## -##class Region_ObjectDefinition(GlobalObjectDefinition): -## def outputCheckNewArg(self): -## Output("if (itself == NULL) return PyMac_Error(resNotFound);") -## def outputFreeIt(self, itselfname): -## Output("DisposeRegion(%s);", itselfname) -## -##class Polygon_ObjectDefinition(GlobalObjectDefinition): -## def outputCheckNewArg(self): -## Output("if (itself == NULL) return PyMac_Error(resNotFound);") -## def outputFreeIt(self, itselfname): -## Output("KillPoly(%s);", itselfname) - -class MyGRObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - getsetlist = [ - ('visRgn', - """RgnHandle h=NewRgn(); /* XXXX wrong dispose routine */ - return Py_BuildValue("O&", ResObj_New, (Handle)GetPortVisibleRegion(self->ob_itself, h)); - """, - None, - "Convenience attribute: return a copy of the visible region" - ), ( - 'clipRgn', - """RgnHandle h=NewRgn(); /* XXXX wrong dispose routine */ - return Py_BuildValue("O&", ResObj_New, (Handle)GetPortClipRegion(self->ob_itself, h)); - """, - None, - "Convenience attribute: return a copy of the clipping region" - )] - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") - def outputCheckConvertArg(self): - Output("#if 1") - OutLbrace() - Output("WindowRef win;") - OutLbrace("if (WinObj_Convert(v, &win) && v)") - Output("*p_itself = (GrafPtr)GetWindowPort(win);") - Output("return 1;") - OutRbrace() - Output("PyErr_Clear();") - OutRbrace() - Output("#else") - OutLbrace("if (DlgObj_Check(v))") - Output("DialogRef dlg = (DialogRef)((GrafPortObject *)v)->ob_itself;") - Output("*p_itself = (GrafPtr)GetWindowPort(GetDialogWindow(dlg));") - Output("return 1;") - OutRbrace() - OutLbrace("if (WinObj_Check(v))") - Output("WindowRef win = (WindowRef)((GrafPortObject *)v)->ob_itself;") - Output("*p_itself = (GrafPtr)GetWindowPort(win);") - Output("return 1;") - OutRbrace() - Output("#endif") - -class MyBMObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - getsetlist = [ - ( - 'baseAddr', - 'return PyInt_FromLong((long)self->ob_itself->baseAddr);', - None, - None - ), ( - 'rowBytes', - 'return PyInt_FromLong((long)self->ob_itself->rowBytes);', - None, - None - ), ( - 'bounds', - 'return Py_BuildValue("O&", PyMac_BuildRect, &self->ob_itself->bounds);', - None, - None - ), ( - 'bitmap_data', - 'return PyString_FromStringAndSize((char *)self->ob_itself, sizeof(BitMap));', - None, - None - ), ( - 'pixmap_data', - 'return PyString_FromStringAndSize((char *)self->ob_itself, sizeof(PixMap));', - None, - None - )] - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") - def outputStructMembers(self): - # We need to more items: a pointer to privately allocated data - # and a python object we're referring to. - Output("%s ob_itself;", self.itselftype) - Output("PyObject *referred_object;") - Output("BitMap *referred_bitmap;") - def outputInitStructMembers(self): - Output("it->ob_itself = %sitself;", self.argref) - Output("it->referred_object = NULL;") - Output("it->referred_bitmap = NULL;") - def outputCleanupStructMembers(self): - Output("Py_XDECREF(self->referred_object);") - Output("if (self->referred_bitmap) free(self->referred_bitmap);") - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff, variablestuff) -##r_object = Region_ObjectDefinition('Region', 'QdRgn', 'RgnHandle') -##po_object = Polygon_ObjectDefinition('Polygon', 'QdPgn', 'PolyHandle') -##module.addobject(r_object) -##module.addobject(po_object) -gr_object = MyGRObjectDefinition("GrafPort", "GrafObj", "GrafPtr") -module.addobject(gr_object) -bm_object = MyBMObjectDefinition("BitMap", "BMObj", "BitMapPtr") -module.addobject(bm_object) - - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -Method = OSErrWeakLinkMethodGenerator - -# Create and populate the lists -functions = [] -gr_methods = [] -bm_methods = [] -#methods = [] -execfile(INPUTFILE) -execfile(EXTRAFILE) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -for f in gr_methods: gr_object.add(f) -for f in bm_methods: bm_object.add(f) - -# Manual generator: get data out of a bitmap -getdata_body = """ -int from, length; -char *cp; - -if ( !PyArg_ParseTuple(_args, "ii", &from, &length) ) - return NULL; -cp = _self->ob_itself->baseAddr+from; -_res = PyString_FromStringAndSize(cp, length); -return _res; -""" -f = ManualGenerator("getdata", getdata_body) -f.docstring = lambda: """(int start, int size) -> string. Return bytes from the bitmap""" -bm_object.add(f) - -# Manual generator: store data in a bitmap -putdata_body = """ -int from, length; -char *cp, *icp; - -if ( !PyArg_ParseTuple(_args, "is#", &from, &icp, &length) ) - return NULL; -cp = _self->ob_itself->baseAddr+from; -memcpy(cp, icp, length); -Py_INCREF(Py_None); -_res = Py_None; -return _res; -""" -f = ManualGenerator("putdata", putdata_body) -f.docstring = lambda: """(int start, string data). Store bytes into the bitmap""" -bm_object.add(f) - -# -# We manually generate a routine to create a BitMap from python data. -# -BitMap_body = """ -BitMap *ptr; -PyObject *source; -Rect bounds; -int rowbytes; -char *data; - -if ( !PyArg_ParseTuple(_args, "O!iO&", &PyString_Type, &source, &rowbytes, PyMac_GetRect, - &bounds) ) - return NULL; -data = PyString_AsString(source); -if ((ptr=(BitMap *)malloc(sizeof(BitMap))) == NULL ) - return PyErr_NoMemory(); -ptr->baseAddr = (Ptr)data; -ptr->rowBytes = rowbytes; -ptr->bounds = bounds; -if ( (_res = BMObj_New(ptr)) == NULL ) { - free(ptr); - return NULL; -} -((BitMapObject *)_res)->referred_object = source; -Py_INCREF(source); -((BitMapObject *)_res)->referred_bitmap = ptr; -return _res; -""" - -f = ManualGenerator("BitMap", BitMap_body) -f.docstring = lambda: """Take (string, int, Rect) argument and create BitMap""" -module.add(f) - -# -# And again, for turning a correctly-formatted structure into the object -# -RawBitMap_body = """ -BitMap *ptr; -PyObject *source; - -if ( !PyArg_ParseTuple(_args, "O!", &PyString_Type, &source) ) - return NULL; -if ( PyString_Size(source) != sizeof(BitMap) && PyString_Size(source) != sizeof(PixMap) ) { - PyErr_Format(PyExc_TypeError, - "Argument size was %d, should be %d (sizeof BitMap) or %d (sizeof PixMap)", - PyString_Size(source), sizeof(BitMap), sizeof(PixMap)); - return NULL; -} -ptr = (BitMapPtr)PyString_AsString(source); -if ( (_res = BMObj_New(ptr)) == NULL ) { - return NULL; -} -((BitMapObject *)_res)->referred_object = source; -Py_INCREF(source); -return _res; -""" - -f = ManualGenerator("RawBitMap", RawBitMap_body) -f.docstring = lambda: """Take string BitMap and turn into BitMap object""" -module.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() -SetOutputFile() # Close it diff --git a/project/jni/python/src/Mac/Modules/qdoffs/_Qdoffsmodule.c b/project/jni/python/src/Mac/Modules/qdoffs/_Qdoffsmodule.c deleted file mode 100644 index b451472ea..000000000 --- a/project/jni/python/src/Mac/Modules/qdoffs/_Qdoffsmodule.c +++ /dev/null @@ -1,722 +0,0 @@ - -/* ========================= Module _Qdoffs ========================= */ - -#include "Python.h" - - -#ifndef __LP64__ - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_GWorldObj_New(GWorldPtr); -extern int _GWorldObj_Convert(PyObject *, GWorldPtr *); - -#define GWorldObj_New _GWorldObj_New -#define GWorldObj_Convert _GWorldObj_Convert -#endif - -#define as_GrafPtr(gworld) ((GrafPtr)(gworld)) - - -static PyObject *Qdoffs_Error; - -/* ----------------------- Object type GWorld ----------------------- */ - -PyTypeObject GWorld_Type; - -#define GWorldObj_Check(x) ((x)->ob_type == &GWorld_Type || PyObject_TypeCheck((x), &GWorld_Type)) - -typedef struct GWorldObject { - PyObject_HEAD - GWorldPtr ob_itself; -} GWorldObject; - -PyObject *GWorldObj_New(GWorldPtr itself) -{ - GWorldObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - it = PyObject_NEW(GWorldObject, &GWorld_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int GWorldObj_Convert(PyObject *v, GWorldPtr *p_itself) -{ - if (!GWorldObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "GWorld required"); - return 0; - } - *p_itself = ((GWorldObject *)v)->ob_itself; - return 1; -} - -static void GWorldObj_dealloc(GWorldObject *self) -{ - DisposeGWorld(self->ob_itself); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *GWorldObj_GetGWorldDevice(GWorldObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle _rv; -#ifndef GetGWorldDevice - PyMac_PRECHECK(GetGWorldDevice); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetGWorldDevice(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *GWorldObj_GetGWorldPixMap(GWorldObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle _rv; -#ifndef GetGWorldPixMap - PyMac_PRECHECK(GetGWorldPixMap); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetGWorldPixMap(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *GWorldObj_as_GrafPtr(GWorldObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GrafPtr _rv; -#ifndef as_GrafPtr - PyMac_PRECHECK(as_GrafPtr); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = as_GrafPtr(_self->ob_itself); - _res = Py_BuildValue("O&", - GrafObj_New, _rv); - return _res; -} - -static PyMethodDef GWorldObj_methods[] = { - {"GetGWorldDevice", (PyCFunction)GWorldObj_GetGWorldDevice, 1, - PyDoc_STR("() -> (GDHandle _rv)")}, - {"GetGWorldPixMap", (PyCFunction)GWorldObj_GetGWorldPixMap, 1, - PyDoc_STR("() -> (PixMapHandle _rv)")}, - {"as_GrafPtr", (PyCFunction)GWorldObj_as_GrafPtr, 1, - PyDoc_STR("() -> (GrafPtr _rv)")}, - {NULL, NULL, 0} -}; - -#define GWorldObj_getsetlist NULL - - -#define GWorldObj_compare NULL - -#define GWorldObj_repr NULL - -#define GWorldObj_hash NULL -#define GWorldObj_tp_init 0 - -#define GWorldObj_tp_alloc PyType_GenericAlloc - -static PyObject *GWorldObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - GWorldPtr itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, GWorldObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((GWorldObject *)_self)->ob_itself = itself; - return _self; -} - -#define GWorldObj_tp_free PyObject_Del - - -PyTypeObject GWorld_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Qdoffs.GWorld", /*tp_name*/ - sizeof(GWorldObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) GWorldObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) GWorldObj_compare, /*tp_compare*/ - (reprfunc) GWorldObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) GWorldObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - GWorldObj_methods, /* tp_methods */ - 0, /*tp_members*/ - GWorldObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - GWorldObj_tp_init, /* tp_init */ - GWorldObj_tp_alloc, /* tp_alloc */ - GWorldObj_tp_new, /* tp_new */ - GWorldObj_tp_free, /* tp_free */ -}; - -/* --------------------- End object type GWorld --------------------- */ - - -static PyObject *Qdoffs_NewGWorld(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - QDErr _err; - GWorldPtr offscreenGWorld; - short PixelDepth; - Rect boundsRect; - CTabHandle cTable; - GDHandle aGDevice; - GWorldFlags flags; -#ifndef NewGWorld - PyMac_PRECHECK(NewGWorld); -#endif - if (!PyArg_ParseTuple(_args, "hO&O&O&l", - &PixelDepth, - PyMac_GetRect, &boundsRect, - OptResObj_Convert, &cTable, - OptResObj_Convert, &aGDevice, - &flags)) - return NULL; - _err = NewGWorld(&offscreenGWorld, - PixelDepth, - &boundsRect, - cTable, - aGDevice, - flags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - GWorldObj_New, offscreenGWorld); - return _res; -} - -static PyObject *Qdoffs_LockPixels(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - PixMapHandle pm; -#ifndef LockPixels - PyMac_PRECHECK(LockPixels); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pm)) - return NULL; - _rv = LockPixels(pm); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qdoffs_UnlockPixels(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle pm; -#ifndef UnlockPixels - PyMac_PRECHECK(UnlockPixels); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pm)) - return NULL; - UnlockPixels(pm); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qdoffs_UpdateGWorld(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GWorldFlags _rv; - GWorldPtr offscreenGWorld; - short pixelDepth; - Rect boundsRect; - CTabHandle cTable; - GDHandle aGDevice; - GWorldFlags flags; -#ifndef UpdateGWorld - PyMac_PRECHECK(UpdateGWorld); -#endif - if (!PyArg_ParseTuple(_args, "hO&O&O&l", - &pixelDepth, - PyMac_GetRect, &boundsRect, - OptResObj_Convert, &cTable, - OptResObj_Convert, &aGDevice, - &flags)) - return NULL; - _rv = UpdateGWorld(&offscreenGWorld, - pixelDepth, - &boundsRect, - cTable, - aGDevice, - flags); - _res = Py_BuildValue("lO&", - _rv, - GWorldObj_New, offscreenGWorld); - return _res; -} - -static PyObject *Qdoffs_GetGWorld(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGrafPtr port; - GDHandle gdh; -#ifndef GetGWorld - PyMac_PRECHECK(GetGWorld); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetGWorld(&port, - &gdh); - _res = Py_BuildValue("O&O&", - GrafObj_New, port, - ResObj_New, gdh); - return _res; -} - -static PyObject *Qdoffs_SetGWorld(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGrafPtr port; - GDHandle gdh; -#ifndef SetGWorld - PyMac_PRECHECK(SetGWorld); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - GrafObj_Convert, &port, - OptResObj_Convert, &gdh)) - return NULL; - SetGWorld(port, - gdh); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qdoffs_CTabChanged(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CTabHandle ctab; -#ifndef CTabChanged - PyMac_PRECHECK(CTabChanged); -#endif - if (!PyArg_ParseTuple(_args, "O&", - OptResObj_Convert, &ctab)) - return NULL; - CTabChanged(ctab); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qdoffs_PixPatChanged(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixPatHandle ppat; -#ifndef PixPatChanged - PyMac_PRECHECK(PixPatChanged); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &ppat)) - return NULL; - PixPatChanged(ppat); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qdoffs_PortChanged(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GrafPtr port; -#ifndef PortChanged - PyMac_PRECHECK(PortChanged); -#endif - if (!PyArg_ParseTuple(_args, "O&", - GrafObj_Convert, &port)) - return NULL; - PortChanged(port); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qdoffs_GDeviceChanged(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GDHandle gdh; -#ifndef GDeviceChanged - PyMac_PRECHECK(GDeviceChanged); -#endif - if (!PyArg_ParseTuple(_args, "O&", - OptResObj_Convert, &gdh)) - return NULL; - GDeviceChanged(gdh); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qdoffs_AllowPurgePixels(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle pm; -#ifndef AllowPurgePixels - PyMac_PRECHECK(AllowPurgePixels); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pm)) - return NULL; - AllowPurgePixels(pm); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qdoffs_NoPurgePixels(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle pm; -#ifndef NoPurgePixels - PyMac_PRECHECK(NoPurgePixels); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pm)) - return NULL; - NoPurgePixels(pm); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qdoffs_GetPixelsState(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - GWorldFlags _rv; - PixMapHandle pm; -#ifndef GetPixelsState - PyMac_PRECHECK(GetPixelsState); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pm)) - return NULL; - _rv = GetPixelsState(pm); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qdoffs_SetPixelsState(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle pm; - GWorldFlags state; -#ifndef SetPixelsState - PyMac_PRECHECK(SetPixelsState); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - ResObj_Convert, &pm, - &state)) - return NULL; - SetPixelsState(pm, - state); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qdoffs_GetPixRowBytes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - PixMapHandle pm; -#ifndef GetPixRowBytes - PyMac_PRECHECK(GetPixRowBytes); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pm)) - return NULL; - _rv = GetPixRowBytes(pm); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qdoffs_NewScreenBuffer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - QDErr _err; - Rect globalRect; - Boolean purgeable; - GDHandle gdh; - PixMapHandle offscreenPixMap; -#ifndef NewScreenBuffer - PyMac_PRECHECK(NewScreenBuffer); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - PyMac_GetRect, &globalRect, - &purgeable)) - return NULL; - _err = NewScreenBuffer(&globalRect, - purgeable, - &gdh, - &offscreenPixMap); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - ResObj_New, gdh, - ResObj_New, offscreenPixMap); - return _res; -} - -static PyObject *Qdoffs_DisposeScreenBuffer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle offscreenPixMap; -#ifndef DisposeScreenBuffer - PyMac_PRECHECK(DisposeScreenBuffer); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &offscreenPixMap)) - return NULL; - DisposeScreenBuffer(offscreenPixMap); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qdoffs_QDDone(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - GrafPtr port; -#ifndef QDDone - PyMac_PRECHECK(QDDone); -#endif - if (!PyArg_ParseTuple(_args, "O&", - GrafObj_Convert, &port)) - return NULL; - _rv = QDDone(port); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qdoffs_OffscreenVersion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef OffscreenVersion - PyMac_PRECHECK(OffscreenVersion); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = OffscreenVersion(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qdoffs_NewTempScreenBuffer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - QDErr _err; - Rect globalRect; - Boolean purgeable; - GDHandle gdh; - PixMapHandle offscreenPixMap; -#ifndef NewTempScreenBuffer - PyMac_PRECHECK(NewTempScreenBuffer); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - PyMac_GetRect, &globalRect, - &purgeable)) - return NULL; - _err = NewTempScreenBuffer(&globalRect, - purgeable, - &gdh, - &offscreenPixMap); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - ResObj_New, gdh, - ResObj_New, offscreenPixMap); - return _res; -} - -static PyObject *Qdoffs_PixMap32Bit(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - PixMapHandle pmHandle; -#ifndef PixMap32Bit - PyMac_PRECHECK(PixMap32Bit); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pmHandle)) - return NULL; - _rv = PixMap32Bit(pmHandle); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Qdoffs_GetPixMapBytes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - PixMapHandle pm; - int from, length; - char *cp; - - if ( !PyArg_ParseTuple(_args, "O&ii", ResObj_Convert, &pm, &from, &length) ) - return NULL; - cp = GetPixBaseAddr(pm)+from; - _res = PyString_FromStringAndSize(cp, length); - return _res; - -} - -static PyObject *Qdoffs_PutPixMapBytes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - PixMapHandle pm; - int from, length; - char *cp, *icp; - - if ( !PyArg_ParseTuple(_args, "O&is#", ResObj_Convert, &pm, &from, &icp, &length) ) - return NULL; - cp = GetPixBaseAddr(pm)+from; - memcpy(cp, icp, length); - Py_INCREF(Py_None); - _res = Py_None; - return _res; - -} -#endif /* __LP64__ */ - -static PyMethodDef Qdoffs_methods[] = { -#ifndef __LP64__ - {"NewGWorld", (PyCFunction)Qdoffs_NewGWorld, 1, - PyDoc_STR("(short PixelDepth, Rect boundsRect, CTabHandle cTable, GDHandle aGDevice, GWorldFlags flags) -> (GWorldPtr offscreenGWorld)")}, - {"LockPixels", (PyCFunction)Qdoffs_LockPixels, 1, - PyDoc_STR("(PixMapHandle pm) -> (Boolean _rv)")}, - {"UnlockPixels", (PyCFunction)Qdoffs_UnlockPixels, 1, - PyDoc_STR("(PixMapHandle pm) -> None")}, - {"UpdateGWorld", (PyCFunction)Qdoffs_UpdateGWorld, 1, - PyDoc_STR("(short pixelDepth, Rect boundsRect, CTabHandle cTable, GDHandle aGDevice, GWorldFlags flags) -> (GWorldFlags _rv, GWorldPtr offscreenGWorld)")}, - {"GetGWorld", (PyCFunction)Qdoffs_GetGWorld, 1, - PyDoc_STR("() -> (CGrafPtr port, GDHandle gdh)")}, - {"SetGWorld", (PyCFunction)Qdoffs_SetGWorld, 1, - PyDoc_STR("(CGrafPtr port, GDHandle gdh) -> None")}, - {"CTabChanged", (PyCFunction)Qdoffs_CTabChanged, 1, - PyDoc_STR("(CTabHandle ctab) -> None")}, - {"PixPatChanged", (PyCFunction)Qdoffs_PixPatChanged, 1, - PyDoc_STR("(PixPatHandle ppat) -> None")}, - {"PortChanged", (PyCFunction)Qdoffs_PortChanged, 1, - PyDoc_STR("(GrafPtr port) -> None")}, - {"GDeviceChanged", (PyCFunction)Qdoffs_GDeviceChanged, 1, - PyDoc_STR("(GDHandle gdh) -> None")}, - {"AllowPurgePixels", (PyCFunction)Qdoffs_AllowPurgePixels, 1, - PyDoc_STR("(PixMapHandle pm) -> None")}, - {"NoPurgePixels", (PyCFunction)Qdoffs_NoPurgePixels, 1, - PyDoc_STR("(PixMapHandle pm) -> None")}, - {"GetPixelsState", (PyCFunction)Qdoffs_GetPixelsState, 1, - PyDoc_STR("(PixMapHandle pm) -> (GWorldFlags _rv)")}, - {"SetPixelsState", (PyCFunction)Qdoffs_SetPixelsState, 1, - PyDoc_STR("(PixMapHandle pm, GWorldFlags state) -> None")}, - {"GetPixRowBytes", (PyCFunction)Qdoffs_GetPixRowBytes, 1, - PyDoc_STR("(PixMapHandle pm) -> (long _rv)")}, - {"NewScreenBuffer", (PyCFunction)Qdoffs_NewScreenBuffer, 1, - PyDoc_STR("(Rect globalRect, Boolean purgeable) -> (GDHandle gdh, PixMapHandle offscreenPixMap)")}, - {"DisposeScreenBuffer", (PyCFunction)Qdoffs_DisposeScreenBuffer, 1, - PyDoc_STR("(PixMapHandle offscreenPixMap) -> None")}, - {"QDDone", (PyCFunction)Qdoffs_QDDone, 1, - PyDoc_STR("(GrafPtr port) -> (Boolean _rv)")}, - {"OffscreenVersion", (PyCFunction)Qdoffs_OffscreenVersion, 1, - PyDoc_STR("() -> (long _rv)")}, - {"NewTempScreenBuffer", (PyCFunction)Qdoffs_NewTempScreenBuffer, 1, - PyDoc_STR("(Rect globalRect, Boolean purgeable) -> (GDHandle gdh, PixMapHandle offscreenPixMap)")}, - {"PixMap32Bit", (PyCFunction)Qdoffs_PixMap32Bit, 1, - PyDoc_STR("(PixMapHandle pmHandle) -> (Boolean _rv)")}, - {"GetPixMapBytes", (PyCFunction)Qdoffs_GetPixMapBytes, 1, - PyDoc_STR("(pixmap, int start, int size) -> string. Return bytes from the pixmap")}, - {"PutPixMapBytes", (PyCFunction)Qdoffs_PutPixMapBytes, 1, - PyDoc_STR("(pixmap, int start, string data). Store bytes into the pixmap")}, -#endif /* __LP64__ */ - {NULL, NULL, 0} -}; - - - - -void init_Qdoffs(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; - - - - PyMac_INIT_TOOLBOX_OBJECT_NEW(GWorldPtr, GWorldObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(GWorldPtr, GWorldObj_Convert); - -#endif /* __LP64__ */ - - m = Py_InitModule("_Qdoffs", Qdoffs_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - Qdoffs_Error = PyMac_GetOSErrException(); - if (Qdoffs_Error == NULL || - PyDict_SetItemString(d, "Error", Qdoffs_Error) != 0) - return; - GWorld_Type.ob_type = &PyType_Type; - if (PyType_Ready(&GWorld_Type) < 0) return; - Py_INCREF(&GWorld_Type); - PyModule_AddObject(m, "GWorld", (PyObject *)&GWorld_Type); - /* Backward-compatible name */ - Py_INCREF(&GWorld_Type); - PyModule_AddObject(m, "GWorldType", (PyObject *)&GWorld_Type); -#endif /* __LP64__ */ -} - -/* ======================= End module _Qdoffs ======================= */ - diff --git a/project/jni/python/src/Mac/Modules/qdoffs/qdoffsscan.py b/project/jni/python/src/Mac/Modules/qdoffs/qdoffsscan.py deleted file mode 100644 index 0ad98028b..000000000 --- a/project/jni/python/src/Mac/Modules/qdoffs/qdoffsscan.py +++ /dev/null @@ -1,65 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) - -from scantools import Scanner - -def main(): - input = "QDOffscreen.h" - output = "qdoffsgen.py" - defsoutput = TOOLBOXDIR + "QDOffscreen.py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - import qdoffssupport - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t == "GWorldPtr" and m in ("InMode", "InOutMode"): - classname = "Method" - listname = "methods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - - def makeblacklistnames(self): - return [ - 'DisposeGWorld', # Implied when the object is deleted - 'NewGWorldFromHBITMAP', # Don't know what the args do - 'GetGDeviceAttributes', # Windows-only - ] - - def makeblacklisttypes(self): - return [ - "void_ptr", # GetGDeviceSurface, blacklisted for now - "Ptr", # Again, for now (array is probably ok here) - ] - - def makerepairinstructions(self): - return [ - -## ("UpdateGWorld", -## [("GWorldPtr", "*", "OutMode")], -## [("*", "*", "InOutMode")]), - - # This one is incorrect: we say that all input gdevices are - # optional, but some are not. Most are, however, so users passing - # None for non-optional gdevices will get a qd error, I guess, in - # stead of a python argument error. - ([("GDHandle", "*", "InMode")], - [("OptGDHandle", "*", "InMode")]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/qdoffs/qdoffssupport.py b/project/jni/python/src/Mac/Modules/qdoffs/qdoffssupport.py deleted file mode 100644 index 16177733d..000000000 --- a/project/jni/python/src/Mac/Modules/qdoffs/qdoffssupport.py +++ /dev/null @@ -1,139 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'QDOffscreen.h' # The Apple header file -MODNAME = '_Qdoffs' # The name of the module -OBJECTNAME = 'GWorld' # The basic name of the objects used here - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Qdoffs' # The prefix for module-wide routines -OBJECTTYPE = OBJECTNAME + 'Ptr' # The C type used to represent them -OBJECTPREFIX = OBJECTNAME + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -#EDITFILE = string.lower(MODPREFIX) + 'edit.py' # The manual definitions -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects - -GWorldPtr = OpaqueByValueType(OBJECTTYPE, OBJECTPREFIX) -GWorldFlags = Type("GWorldFlags", "l") -GDHandle = OpaqueByValueType("GDHandle", "ResObj") -OptGDHandle = OpaqueByValueType("GDHandle", "OptResObj") -CTabHandle = OpaqueByValueType("CTabHandle", "OptResObj") -PixPatHandle = OpaqueByValueType("PixPatHandle", "ResObj") -PixMapHandle = OpaqueByValueType("PixMapHandle", "ResObj") -CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj") -GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj") -QDErr = OSErrType("QDErr", 'h') - -includestuff = includestuff + """ -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_GWorldObj_New(GWorldPtr); -extern int _GWorldObj_Convert(PyObject *, GWorldPtr *); - -#define GWorldObj_New _GWorldObj_New -#define GWorldObj_Convert _GWorldObj_Convert -#endif - -#define as_GrafPtr(gworld) ((GrafPtr)(gworld)) - -""" - -initstuff = initstuff + """ - PyMac_INIT_TOOLBOX_OBJECT_NEW(GWorldPtr, GWorldObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(GWorldPtr, GWorldObj_Convert); -""" - -class MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - # XXXX Should inherit from GrafPtr? - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") -## def outputInitStructMembers(self): -## GlobalObjectDefinition.outputInitStructMembers(self) -## Output("SetWRefCon(itself, (long)it);") -## def outputCheckConvertArg(self): -## OutLbrace("if (DlgObj_Check(v))") -## Output("*p_itself = ((WindowObject *)v)->ob_itself;") -## Output("return 1;") -## OutRbrace() -## Out(""" -## if (v == Py_None) { *p_itself = NULL; return 1; } -## if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; } -## """) - def outputFreeIt(self, itselfname): - Output("DisposeGWorld(%s);", itselfname) -# From here on it's basically all boiler plate... - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE) -module.addobject(object) - - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -Method = OSErrWeakLinkMethodGenerator - -# Create and populate the lists -functions = [] -methods = [] -execfile(INPUTFILE) - -# A method to convert a GWorldPtr to a GrafPtr -f = Method(GrafPtr, 'as_GrafPtr', (GWorldPtr, 'p', InMode)) -methods.append(f) - -# -# Manual generator: get data out of a pixmap -pixmapgetbytes_body = """ -PixMapHandle pm; -int from, length; -char *cp; - -if ( !PyArg_ParseTuple(_args, "O&ii", ResObj_Convert, &pm, &from, &length) ) - return NULL; -cp = GetPixBaseAddr(pm)+from; -_res = PyString_FromStringAndSize(cp, length); -return _res; -""" -f = ManualGenerator("GetPixMapBytes", pixmapgetbytes_body) -f.docstring = lambda: """(pixmap, int start, int size) -> string. Return bytes from the pixmap""" -functions.append(f) - -# Manual generator: store data in a pixmap -pixmapputbytes_body = """ -PixMapHandle pm; -int from, length; -char *cp, *icp; - -if ( !PyArg_ParseTuple(_args, "O&is#", ResObj_Convert, &pm, &from, &icp, &length) ) - return NULL; -cp = GetPixBaseAddr(pm)+from; -memcpy(cp, icp, length); -Py_INCREF(Py_None); -_res = Py_None; -return _res; -""" -f = ManualGenerator("PutPixMapBytes", pixmapputbytes_body) -f.docstring = lambda: """(pixmap, int start, string data). Store bytes into the pixmap""" -functions.append(f) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -for f in methods: object.add(f) - - - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/qt/_Qtmodule.c b/project/jni/python/src/Mac/Modules/qt/_Qtmodule.c deleted file mode 100644 index 4845e4ab8..000000000 --- a/project/jni/python/src/Mac/Modules/qt/_Qtmodule.c +++ /dev/null @@ -1,28091 +0,0 @@ - -/* =========================== Module _Qt =========================== */ - -#include "Python.h" - - -#ifndef __LP64__ - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_TrackObj_New(Track); -extern int _TrackObj_Convert(PyObject *, Track *); -extern PyObject *_MovieObj_New(Movie); -extern int _MovieObj_Convert(PyObject *, Movie *); -extern PyObject *_MovieCtlObj_New(MovieController); -extern int _MovieCtlObj_Convert(PyObject *, MovieController *); -extern PyObject *_TimeBaseObj_New(TimeBase); -extern int _TimeBaseObj_Convert(PyObject *, TimeBase *); -extern PyObject *_UserDataObj_New(UserData); -extern int _UserDataObj_Convert(PyObject *, UserData *); -extern PyObject *_MediaObj_New(Media); -extern int _MediaObj_Convert(PyObject *, Media *); - -#define TrackObj_New _TrackObj_New -#define TrackObj_Convert _TrackObj_Convert -#define MovieObj_New _MovieObj_New -#define MovieObj_Convert _MovieObj_Convert -#define MovieCtlObj_New _MovieCtlObj_New -#define MovieCtlObj_Convert _MovieCtlObj_Convert -#define TimeBaseObj_New _TimeBaseObj_New -#define TimeBaseObj_Convert _TimeBaseObj_Convert -#define UserDataObj_New _UserDataObj_New -#define UserDataObj_Convert _UserDataObj_Convert -#define MediaObj_New _MediaObj_New -#define MediaObj_Convert _MediaObj_Convert -#endif - -/* Macro to allow us to GetNextInterestingTime without duration */ -#define GetMediaNextInterestingTimeOnly(media, flags, time, rate, rv) GetMediaNextInterestingTime(media, flags, time, rate, rv, NULL) - -/* -** Parse/generate time records -*/ -static PyObject * -QtTimeRecord_New(TimeRecord *itself) -{ - if (itself->base) - return Py_BuildValue("O&lO&", PyMac_Buildwide, &itself->value, itself->scale, - TimeBaseObj_New, itself->base); - else - return Py_BuildValue("O&lO", PyMac_Buildwide, &itself->value, itself->scale, - Py_None); -} - -static int -QtTimeRecord_Convert(PyObject *v, TimeRecord *p_itself) -{ - PyObject *base = NULL; - if( !PyArg_ParseTuple(v, "O&l|O", PyMac_Getwide, &p_itself->value, &p_itself->scale, - &base) ) - return 0; - if ( base == NULL || base == Py_None ) - p_itself->base = NULL; - else - if ( !TimeBaseObj_Convert(base, &p_itself->base) ) - return 0; - return 1; -} - -static int -QtMusicMIDIPacket_Convert(PyObject *v, MusicMIDIPacket *p_itself) -{ - int dummy; - - if( !PyArg_ParseTuple(v, "hls#", &p_itself->length, &p_itself->reserved, p_itself->data, dummy) ) - return 0; - return 1; -} - - - - -static PyObject *Qt_Error; - -/* -------------------- Object type IdleManager --------------------- */ - -PyTypeObject IdleManager_Type; - -#define IdleManagerObj_Check(x) ((x)->ob_type == &IdleManager_Type || PyObject_TypeCheck((x), &IdleManager_Type)) - -typedef struct IdleManagerObject { - PyObject_HEAD - IdleManager ob_itself; -} IdleManagerObject; - -PyObject *IdleManagerObj_New(IdleManager itself) -{ - IdleManagerObject *it; - if (itself == NULL) { - PyErr_SetString(Qt_Error,"Cannot create IdleManager from NULL pointer"); - return NULL; - } - it = PyObject_NEW(IdleManagerObject, &IdleManager_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int IdleManagerObj_Convert(PyObject *v, IdleManager *p_itself) -{ - if (v == Py_None) - { - *p_itself = NULL; - return 1; - } - if (!IdleManagerObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "IdleManager required"); - return 0; - } - *p_itself = ((IdleManagerObject *)v)->ob_itself; - return 1; -} - -static void IdleManagerObj_dealloc(IdleManagerObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyMethodDef IdleManagerObj_methods[] = { - {NULL, NULL, 0} -}; - -#define IdleManagerObj_getsetlist NULL - - -#define IdleManagerObj_compare NULL - -#define IdleManagerObj_repr NULL - -#define IdleManagerObj_hash NULL -#define IdleManagerObj_tp_init 0 - -#define IdleManagerObj_tp_alloc PyType_GenericAlloc - -static PyObject *IdleManagerObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - IdleManager itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, IdleManagerObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((IdleManagerObject *)_self)->ob_itself = itself; - return _self; -} - -#define IdleManagerObj_tp_free PyObject_Del - - -PyTypeObject IdleManager_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Qt.IdleManager", /*tp_name*/ - sizeof(IdleManagerObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) IdleManagerObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) IdleManagerObj_compare, /*tp_compare*/ - (reprfunc) IdleManagerObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) IdleManagerObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - IdleManagerObj_methods, /* tp_methods */ - 0, /*tp_members*/ - IdleManagerObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - IdleManagerObj_tp_init, /* tp_init */ - IdleManagerObj_tp_alloc, /* tp_alloc */ - IdleManagerObj_tp_new, /* tp_new */ - IdleManagerObj_tp_free, /* tp_free */ -}; - -/* ------------------ End object type IdleManager ------------------- */ - - -/* ------------------ Object type MovieController ------------------- */ - -PyTypeObject MovieController_Type; - -#define MovieCtlObj_Check(x) ((x)->ob_type == &MovieController_Type || PyObject_TypeCheck((x), &MovieController_Type)) - -typedef struct MovieControllerObject { - PyObject_HEAD - MovieController ob_itself; -} MovieControllerObject; - -PyObject *MovieCtlObj_New(MovieController itself) -{ - MovieControllerObject *it; - if (itself == NULL) { - PyErr_SetString(Qt_Error,"Cannot create MovieController from NULL pointer"); - return NULL; - } - it = PyObject_NEW(MovieControllerObject, &MovieController_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int MovieCtlObj_Convert(PyObject *v, MovieController *p_itself) -{ - if (v == Py_None) - { - *p_itself = NULL; - return 1; - } - if (!MovieCtlObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "MovieController required"); - return 0; - } - *p_itself = ((MovieControllerObject *)v)->ob_itself; - return 1; -} - -static void MovieCtlObj_dealloc(MovieControllerObject *self) -{ - if (self->ob_itself) DisposeMovieController(self->ob_itself); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *MovieCtlObj_MCSetMovie(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Movie theMovie; - WindowPtr movieWindow; - Point where; -#ifndef MCSetMovie - PyMac_PRECHECK(MCSetMovie); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - MovieObj_Convert, &theMovie, - WinObj_Convert, &movieWindow, - PyMac_GetPoint, &where)) - return NULL; - _rv = MCSetMovie(_self->ob_itself, - theMovie, - movieWindow, - where); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCGetIndMovie(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Movie _rv; - short index; -#ifndef MCGetIndMovie - PyMac_PRECHECK(MCGetIndMovie); -#endif - if (!PyArg_ParseTuple(_args, "h", - &index)) - return NULL; - _rv = MCGetIndMovie(_self->ob_itself, - index); - _res = Py_BuildValue("O&", - MovieObj_New, _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCRemoveAllMovies(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; -#ifndef MCRemoveAllMovies - PyMac_PRECHECK(MCRemoveAllMovies); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCRemoveAllMovies(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCRemoveAMovie(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Movie m; -#ifndef MCRemoveAMovie - PyMac_PRECHECK(MCRemoveAMovie); -#endif - if (!PyArg_ParseTuple(_args, "O&", - MovieObj_Convert, &m)) - return NULL; - _rv = MCRemoveAMovie(_self->ob_itself, - m); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCRemoveMovie(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; -#ifndef MCRemoveMovie - PyMac_PRECHECK(MCRemoveMovie); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCRemoveMovie(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCIsPlayerEvent(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - EventRecord e; -#ifndef MCIsPlayerEvent - PyMac_PRECHECK(MCIsPlayerEvent); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetEventRecord, &e)) - return NULL; - _rv = MCIsPlayerEvent(_self->ob_itself, - &e); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCDoAction(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - short action; - void * params; -#ifndef MCDoAction - PyMac_PRECHECK(MCDoAction); -#endif - if (!PyArg_ParseTuple(_args, "hs", - &action, - ¶ms)) - return NULL; - _rv = MCDoAction(_self->ob_itself, - action, - params); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCSetControllerAttached(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Boolean attach; -#ifndef MCSetControllerAttached - PyMac_PRECHECK(MCSetControllerAttached); -#endif - if (!PyArg_ParseTuple(_args, "b", - &attach)) - return NULL; - _rv = MCSetControllerAttached(_self->ob_itself, - attach); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCIsControllerAttached(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; -#ifndef MCIsControllerAttached - PyMac_PRECHECK(MCIsControllerAttached); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCIsControllerAttached(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCSetControllerPort(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - CGrafPtr gp; -#ifndef MCSetControllerPort - PyMac_PRECHECK(MCSetControllerPort); -#endif - if (!PyArg_ParseTuple(_args, "O&", - GrafObj_Convert, &gp)) - return NULL; - _rv = MCSetControllerPort(_self->ob_itself, - gp); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCGetControllerPort(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGrafPtr _rv; -#ifndef MCGetControllerPort - PyMac_PRECHECK(MCGetControllerPort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCGetControllerPort(_self->ob_itself); - _res = Py_BuildValue("O&", - GrafObj_New, _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCSetVisible(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Boolean visible; -#ifndef MCSetVisible - PyMac_PRECHECK(MCSetVisible); -#endif - if (!PyArg_ParseTuple(_args, "b", - &visible)) - return NULL; - _rv = MCSetVisible(_self->ob_itself, - visible); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCGetVisible(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; -#ifndef MCGetVisible - PyMac_PRECHECK(MCGetVisible); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCGetVisible(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCGetControllerBoundsRect(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Rect bounds; -#ifndef MCGetControllerBoundsRect - PyMac_PRECHECK(MCGetControllerBoundsRect); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCGetControllerBoundsRect(_self->ob_itself, - &bounds); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &bounds); - return _res; -} - -static PyObject *MovieCtlObj_MCSetControllerBoundsRect(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Rect bounds; -#ifndef MCSetControllerBoundsRect - PyMac_PRECHECK(MCSetControllerBoundsRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &bounds)) - return NULL; - _rv = MCSetControllerBoundsRect(_self->ob_itself, - &bounds); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCGetControllerBoundsRgn(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; -#ifndef MCGetControllerBoundsRgn - PyMac_PRECHECK(MCGetControllerBoundsRgn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCGetControllerBoundsRgn(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCGetWindowRgn(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; - WindowPtr w; -#ifndef MCGetWindowRgn - PyMac_PRECHECK(MCGetWindowRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &w)) - return NULL; - _rv = MCGetWindowRgn(_self->ob_itself, - w); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCMovieChanged(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Movie m; -#ifndef MCMovieChanged - PyMac_PRECHECK(MCMovieChanged); -#endif - if (!PyArg_ParseTuple(_args, "O&", - MovieObj_Convert, &m)) - return NULL; - _rv = MCMovieChanged(_self->ob_itself, - m); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCSetDuration(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TimeValue duration; -#ifndef MCSetDuration - PyMac_PRECHECK(MCSetDuration); -#endif - if (!PyArg_ParseTuple(_args, "l", - &duration)) - return NULL; - _rv = MCSetDuration(_self->ob_itself, - duration); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCGetCurrentTime(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue _rv; - TimeScale scale; -#ifndef MCGetCurrentTime - PyMac_PRECHECK(MCGetCurrentTime); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCGetCurrentTime(_self->ob_itself, - &scale); - _res = Py_BuildValue("ll", - _rv, - scale); - return _res; -} - -static PyObject *MovieCtlObj_MCNewAttachedController(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Movie theMovie; - WindowPtr w; - Point where; -#ifndef MCNewAttachedController - PyMac_PRECHECK(MCNewAttachedController); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - MovieObj_Convert, &theMovie, - WinObj_Convert, &w, - PyMac_GetPoint, &where)) - return NULL; - _rv = MCNewAttachedController(_self->ob_itself, - theMovie, - w, - where); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCDraw(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - WindowPtr w; -#ifndef MCDraw - PyMac_PRECHECK(MCDraw); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &w)) - return NULL; - _rv = MCDraw(_self->ob_itself, - w); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCActivate(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - WindowPtr w; - Boolean activate; -#ifndef MCActivate - PyMac_PRECHECK(MCActivate); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - WinObj_Convert, &w, - &activate)) - return NULL; - _rv = MCActivate(_self->ob_itself, - w, - activate); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCIdle(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; -#ifndef MCIdle - PyMac_PRECHECK(MCIdle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCIdle(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCKey(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SInt8 key; - long modifiers; -#ifndef MCKey - PyMac_PRECHECK(MCKey); -#endif - if (!PyArg_ParseTuple(_args, "bl", - &key, - &modifiers)) - return NULL; - _rv = MCKey(_self->ob_itself, - key, - modifiers); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCClick(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - WindowPtr w; - Point where; - long when; - long modifiers; -#ifndef MCClick - PyMac_PRECHECK(MCClick); -#endif - if (!PyArg_ParseTuple(_args, "O&O&ll", - WinObj_Convert, &w, - PyMac_GetPoint, &where, - &when, - &modifiers)) - return NULL; - _rv = MCClick(_self->ob_itself, - w, - where, - when, - modifiers); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCEnableEditing(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Boolean enabled; -#ifndef MCEnableEditing - PyMac_PRECHECK(MCEnableEditing); -#endif - if (!PyArg_ParseTuple(_args, "b", - &enabled)) - return NULL; - _rv = MCEnableEditing(_self->ob_itself, - enabled); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCIsEditingEnabled(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef MCIsEditingEnabled - PyMac_PRECHECK(MCIsEditingEnabled); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCIsEditingEnabled(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCCopy(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Movie _rv; -#ifndef MCCopy - PyMac_PRECHECK(MCCopy); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCCopy(_self->ob_itself); - _res = Py_BuildValue("O&", - MovieObj_New, _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCCut(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Movie _rv; -#ifndef MCCut - PyMac_PRECHECK(MCCut); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCCut(_self->ob_itself); - _res = Py_BuildValue("O&", - MovieObj_New, _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCPaste(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Movie srcMovie; -#ifndef MCPaste - PyMac_PRECHECK(MCPaste); -#endif - if (!PyArg_ParseTuple(_args, "O&", - MovieObj_Convert, &srcMovie)) - return NULL; - _rv = MCPaste(_self->ob_itself, - srcMovie); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCClear(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; -#ifndef MCClear - PyMac_PRECHECK(MCClear); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCClear(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCUndo(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; -#ifndef MCUndo - PyMac_PRECHECK(MCUndo); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCUndo(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCPositionController(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Rect movieRect; - Rect controllerRect; - long someFlags; -#ifndef MCPositionController - PyMac_PRECHECK(MCPositionController); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - PyMac_GetRect, &movieRect, - PyMac_GetRect, &controllerRect, - &someFlags)) - return NULL; - _rv = MCPositionController(_self->ob_itself, - &movieRect, - &controllerRect, - someFlags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCGetControllerInfo(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - long someFlags; -#ifndef MCGetControllerInfo - PyMac_PRECHECK(MCGetControllerInfo); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCGetControllerInfo(_self->ob_itself, - &someFlags); - _res = Py_BuildValue("ll", - _rv, - someFlags); - return _res; -} - -static PyObject *MovieCtlObj_MCSetClip(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - RgnHandle theClip; - RgnHandle movieClip; -#ifndef MCSetClip - PyMac_PRECHECK(MCSetClip); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &theClip, - ResObj_Convert, &movieClip)) - return NULL; - _rv = MCSetClip(_self->ob_itself, - theClip, - movieClip); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCGetClip(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - RgnHandle theClip; - RgnHandle movieClip; -#ifndef MCGetClip - PyMac_PRECHECK(MCGetClip); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCGetClip(_self->ob_itself, - &theClip, - &movieClip); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, theClip, - ResObj_New, movieClip); - return _res; -} - -static PyObject *MovieCtlObj_MCDrawBadge(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - RgnHandle movieRgn; - RgnHandle badgeRgn; -#ifndef MCDrawBadge - PyMac_PRECHECK(MCDrawBadge); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &movieRgn)) - return NULL; - _rv = MCDrawBadge(_self->ob_itself, - movieRgn, - &badgeRgn); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, badgeRgn); - return _res; -} - -static PyObject *MovieCtlObj_MCSetUpEditMenu(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - long modifiers; - MenuHandle mh; -#ifndef MCSetUpEditMenu - PyMac_PRECHECK(MCSetUpEditMenu); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &modifiers, - MenuObj_Convert, &mh)) - return NULL; - _rv = MCSetUpEditMenu(_self->ob_itself, - modifiers, - mh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCGetMenuString(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - long modifiers; - short item; - Str255 aString; -#ifndef MCGetMenuString - PyMac_PRECHECK(MCGetMenuString); -#endif - if (!PyArg_ParseTuple(_args, "lhO&", - &modifiers, - &item, - PyMac_GetStr255, aString)) - return NULL; - _rv = MCGetMenuString(_self->ob_itself, - modifiers, - item, - aString); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCPtInController(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Point thePt; - Boolean inController; -#ifndef MCPtInController - PyMac_PRECHECK(MCPtInController); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &thePt)) - return NULL; - _rv = MCPtInController(_self->ob_itself, - thePt, - &inController); - _res = Py_BuildValue("lb", - _rv, - inController); - return _res; -} - -static PyObject *MovieCtlObj_MCInvalidate(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - WindowPtr w; - RgnHandle invalidRgn; -#ifndef MCInvalidate - PyMac_PRECHECK(MCInvalidate); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - WinObj_Convert, &w, - ResObj_Convert, &invalidRgn)) - return NULL; - _rv = MCInvalidate(_self->ob_itself, - w, - invalidRgn); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCAdjustCursor(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - WindowPtr w; - Point where; - long modifiers; -#ifndef MCAdjustCursor - PyMac_PRECHECK(MCAdjustCursor); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - WinObj_Convert, &w, - PyMac_GetPoint, &where, - &modifiers)) - return NULL; - _rv = MCAdjustCursor(_self->ob_itself, - w, - where, - modifiers); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCGetInterfaceElement(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MCInterfaceElement whichElement; - void * element; -#ifndef MCGetInterfaceElement - PyMac_PRECHECK(MCGetInterfaceElement); -#endif - if (!PyArg_ParseTuple(_args, "ls", - &whichElement, - &element)) - return NULL; - _rv = MCGetInterfaceElement(_self->ob_itself, - whichElement, - element); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCAddMovieSegment(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Movie srcMovie; - Boolean scaled; -#ifndef MCAddMovieSegment - PyMac_PRECHECK(MCAddMovieSegment); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - MovieObj_Convert, &srcMovie, - &scaled)) - return NULL; - _rv = MCAddMovieSegment(_self->ob_itself, - srcMovie, - scaled); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCTrimMovieSegment(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; -#ifndef MCTrimMovieSegment - PyMac_PRECHECK(MCTrimMovieSegment); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MCTrimMovieSegment(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCSetIdleManager(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - IdleManager im; -#ifndef MCSetIdleManager - PyMac_PRECHECK(MCSetIdleManager); -#endif - if (!PyArg_ParseTuple(_args, "O&", - IdleManagerObj_Convert, &im)) - return NULL; - _rv = MCSetIdleManager(_self->ob_itself, - im); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieCtlObj_MCSetControllerCapabilities(MovieControllerObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - long flags; - long flagsMask; -#ifndef MCSetControllerCapabilities - PyMac_PRECHECK(MCSetControllerCapabilities); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &flags, - &flagsMask)) - return NULL; - _rv = MCSetControllerCapabilities(_self->ob_itself, - flags, - flagsMask); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyMethodDef MovieCtlObj_methods[] = { - {"MCSetMovie", (PyCFunction)MovieCtlObj_MCSetMovie, 1, - PyDoc_STR("(Movie theMovie, WindowPtr movieWindow, Point where) -> (ComponentResult _rv)")}, - {"MCGetIndMovie", (PyCFunction)MovieCtlObj_MCGetIndMovie, 1, - PyDoc_STR("(short index) -> (Movie _rv)")}, - {"MCRemoveAllMovies", (PyCFunction)MovieCtlObj_MCRemoveAllMovies, 1, - PyDoc_STR("() -> (ComponentResult _rv)")}, - {"MCRemoveAMovie", (PyCFunction)MovieCtlObj_MCRemoveAMovie, 1, - PyDoc_STR("(Movie m) -> (ComponentResult _rv)")}, - {"MCRemoveMovie", (PyCFunction)MovieCtlObj_MCRemoveMovie, 1, - PyDoc_STR("() -> (ComponentResult _rv)")}, - {"MCIsPlayerEvent", (PyCFunction)MovieCtlObj_MCIsPlayerEvent, 1, - PyDoc_STR("(EventRecord e) -> (ComponentResult _rv)")}, - {"MCDoAction", (PyCFunction)MovieCtlObj_MCDoAction, 1, - PyDoc_STR("(short action, void * params) -> (ComponentResult _rv)")}, - {"MCSetControllerAttached", (PyCFunction)MovieCtlObj_MCSetControllerAttached, 1, - PyDoc_STR("(Boolean attach) -> (ComponentResult _rv)")}, - {"MCIsControllerAttached", (PyCFunction)MovieCtlObj_MCIsControllerAttached, 1, - PyDoc_STR("() -> (ComponentResult _rv)")}, - {"MCSetControllerPort", (PyCFunction)MovieCtlObj_MCSetControllerPort, 1, - PyDoc_STR("(CGrafPtr gp) -> (ComponentResult _rv)")}, - {"MCGetControllerPort", (PyCFunction)MovieCtlObj_MCGetControllerPort, 1, - PyDoc_STR("() -> (CGrafPtr _rv)")}, - {"MCSetVisible", (PyCFunction)MovieCtlObj_MCSetVisible, 1, - PyDoc_STR("(Boolean visible) -> (ComponentResult _rv)")}, - {"MCGetVisible", (PyCFunction)MovieCtlObj_MCGetVisible, 1, - PyDoc_STR("() -> (ComponentResult _rv)")}, - {"MCGetControllerBoundsRect", (PyCFunction)MovieCtlObj_MCGetControllerBoundsRect, 1, - PyDoc_STR("() -> (ComponentResult _rv, Rect bounds)")}, - {"MCSetControllerBoundsRect", (PyCFunction)MovieCtlObj_MCSetControllerBoundsRect, 1, - PyDoc_STR("(Rect bounds) -> (ComponentResult _rv)")}, - {"MCGetControllerBoundsRgn", (PyCFunction)MovieCtlObj_MCGetControllerBoundsRgn, 1, - PyDoc_STR("() -> (RgnHandle _rv)")}, - {"MCGetWindowRgn", (PyCFunction)MovieCtlObj_MCGetWindowRgn, 1, - PyDoc_STR("(WindowPtr w) -> (RgnHandle _rv)")}, - {"MCMovieChanged", (PyCFunction)MovieCtlObj_MCMovieChanged, 1, - PyDoc_STR("(Movie m) -> (ComponentResult _rv)")}, - {"MCSetDuration", (PyCFunction)MovieCtlObj_MCSetDuration, 1, - PyDoc_STR("(TimeValue duration) -> (ComponentResult _rv)")}, - {"MCGetCurrentTime", (PyCFunction)MovieCtlObj_MCGetCurrentTime, 1, - PyDoc_STR("() -> (TimeValue _rv, TimeScale scale)")}, - {"MCNewAttachedController", (PyCFunction)MovieCtlObj_MCNewAttachedController, 1, - PyDoc_STR("(Movie theMovie, WindowPtr w, Point where) -> (ComponentResult _rv)")}, - {"MCDraw", (PyCFunction)MovieCtlObj_MCDraw, 1, - PyDoc_STR("(WindowPtr w) -> (ComponentResult _rv)")}, - {"MCActivate", (PyCFunction)MovieCtlObj_MCActivate, 1, - PyDoc_STR("(WindowPtr w, Boolean activate) -> (ComponentResult _rv)")}, - {"MCIdle", (PyCFunction)MovieCtlObj_MCIdle, 1, - PyDoc_STR("() -> (ComponentResult _rv)")}, - {"MCKey", (PyCFunction)MovieCtlObj_MCKey, 1, - PyDoc_STR("(SInt8 key, long modifiers) -> (ComponentResult _rv)")}, - {"MCClick", (PyCFunction)MovieCtlObj_MCClick, 1, - PyDoc_STR("(WindowPtr w, Point where, long when, long modifiers) -> (ComponentResult _rv)")}, - {"MCEnableEditing", (PyCFunction)MovieCtlObj_MCEnableEditing, 1, - PyDoc_STR("(Boolean enabled) -> (ComponentResult _rv)")}, - {"MCIsEditingEnabled", (PyCFunction)MovieCtlObj_MCIsEditingEnabled, 1, - PyDoc_STR("() -> (long _rv)")}, - {"MCCopy", (PyCFunction)MovieCtlObj_MCCopy, 1, - PyDoc_STR("() -> (Movie _rv)")}, - {"MCCut", (PyCFunction)MovieCtlObj_MCCut, 1, - PyDoc_STR("() -> (Movie _rv)")}, - {"MCPaste", (PyCFunction)MovieCtlObj_MCPaste, 1, - PyDoc_STR("(Movie srcMovie) -> (ComponentResult _rv)")}, - {"MCClear", (PyCFunction)MovieCtlObj_MCClear, 1, - PyDoc_STR("() -> (ComponentResult _rv)")}, - {"MCUndo", (PyCFunction)MovieCtlObj_MCUndo, 1, - PyDoc_STR("() -> (ComponentResult _rv)")}, - {"MCPositionController", (PyCFunction)MovieCtlObj_MCPositionController, 1, - PyDoc_STR("(Rect movieRect, Rect controllerRect, long someFlags) -> (ComponentResult _rv)")}, - {"MCGetControllerInfo", (PyCFunction)MovieCtlObj_MCGetControllerInfo, 1, - PyDoc_STR("() -> (ComponentResult _rv, long someFlags)")}, - {"MCSetClip", (PyCFunction)MovieCtlObj_MCSetClip, 1, - PyDoc_STR("(RgnHandle theClip, RgnHandle movieClip) -> (ComponentResult _rv)")}, - {"MCGetClip", (PyCFunction)MovieCtlObj_MCGetClip, 1, - PyDoc_STR("() -> (ComponentResult _rv, RgnHandle theClip, RgnHandle movieClip)")}, - {"MCDrawBadge", (PyCFunction)MovieCtlObj_MCDrawBadge, 1, - PyDoc_STR("(RgnHandle movieRgn) -> (ComponentResult _rv, RgnHandle badgeRgn)")}, - {"MCSetUpEditMenu", (PyCFunction)MovieCtlObj_MCSetUpEditMenu, 1, - PyDoc_STR("(long modifiers, MenuHandle mh) -> (ComponentResult _rv)")}, - {"MCGetMenuString", (PyCFunction)MovieCtlObj_MCGetMenuString, 1, - PyDoc_STR("(long modifiers, short item, Str255 aString) -> (ComponentResult _rv)")}, - {"MCPtInController", (PyCFunction)MovieCtlObj_MCPtInController, 1, - PyDoc_STR("(Point thePt) -> (ComponentResult _rv, Boolean inController)")}, - {"MCInvalidate", (PyCFunction)MovieCtlObj_MCInvalidate, 1, - PyDoc_STR("(WindowPtr w, RgnHandle invalidRgn) -> (ComponentResult _rv)")}, - {"MCAdjustCursor", (PyCFunction)MovieCtlObj_MCAdjustCursor, 1, - PyDoc_STR("(WindowPtr w, Point where, long modifiers) -> (ComponentResult _rv)")}, - {"MCGetInterfaceElement", (PyCFunction)MovieCtlObj_MCGetInterfaceElement, 1, - PyDoc_STR("(MCInterfaceElement whichElement, void * element) -> (ComponentResult _rv)")}, - {"MCAddMovieSegment", (PyCFunction)MovieCtlObj_MCAddMovieSegment, 1, - PyDoc_STR("(Movie srcMovie, Boolean scaled) -> (ComponentResult _rv)")}, - {"MCTrimMovieSegment", (PyCFunction)MovieCtlObj_MCTrimMovieSegment, 1, - PyDoc_STR("() -> (ComponentResult _rv)")}, - {"MCSetIdleManager", (PyCFunction)MovieCtlObj_MCSetIdleManager, 1, - PyDoc_STR("(IdleManager im) -> (ComponentResult _rv)")}, - {"MCSetControllerCapabilities", (PyCFunction)MovieCtlObj_MCSetControllerCapabilities, 1, - PyDoc_STR("(long flags, long flagsMask) -> (ComponentResult _rv)")}, - {NULL, NULL, 0} -}; - -#define MovieCtlObj_getsetlist NULL - - -#define MovieCtlObj_compare NULL - -#define MovieCtlObj_repr NULL - -#define MovieCtlObj_hash NULL -#define MovieCtlObj_tp_init 0 - -#define MovieCtlObj_tp_alloc PyType_GenericAlloc - -static PyObject *MovieCtlObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - MovieController itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, MovieCtlObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((MovieControllerObject *)_self)->ob_itself = itself; - return _self; -} - -#define MovieCtlObj_tp_free PyObject_Del - - -PyTypeObject MovieController_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Qt.MovieController", /*tp_name*/ - sizeof(MovieControllerObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) MovieCtlObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) MovieCtlObj_compare, /*tp_compare*/ - (reprfunc) MovieCtlObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) MovieCtlObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - MovieCtlObj_methods, /* tp_methods */ - 0, /*tp_members*/ - MovieCtlObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - MovieCtlObj_tp_init, /* tp_init */ - MovieCtlObj_tp_alloc, /* tp_alloc */ - MovieCtlObj_tp_new, /* tp_new */ - MovieCtlObj_tp_free, /* tp_free */ -}; - -/* ---------------- End object type MovieController ----------------- */ - - -/* ---------------------- Object type TimeBase ---------------------- */ - -PyTypeObject TimeBase_Type; - -#define TimeBaseObj_Check(x) ((x)->ob_type == &TimeBase_Type || PyObject_TypeCheck((x), &TimeBase_Type)) - -typedef struct TimeBaseObject { - PyObject_HEAD - TimeBase ob_itself; -} TimeBaseObject; - -PyObject *TimeBaseObj_New(TimeBase itself) -{ - TimeBaseObject *it; - if (itself == NULL) { - PyErr_SetString(Qt_Error,"Cannot create TimeBase from NULL pointer"); - return NULL; - } - it = PyObject_NEW(TimeBaseObject, &TimeBase_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int TimeBaseObj_Convert(PyObject *v, TimeBase *p_itself) -{ - if (v == Py_None) - { - *p_itself = NULL; - return 1; - } - if (!TimeBaseObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "TimeBase required"); - return 0; - } - *p_itself = ((TimeBaseObject *)v)->ob_itself; - return 1; -} - -static void TimeBaseObj_dealloc(TimeBaseObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *TimeBaseObj_DisposeTimeBase(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef DisposeTimeBase - PyMac_PRECHECK(DisposeTimeBase); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - DisposeTimeBase(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TimeBaseObj_GetTimeBaseTime(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue _rv; - TimeScale s; - TimeRecord tr; -#ifndef GetTimeBaseTime - PyMac_PRECHECK(GetTimeBaseTime); -#endif - if (!PyArg_ParseTuple(_args, "l", - &s)) - return NULL; - _rv = GetTimeBaseTime(_self->ob_itself, - s, - &tr); - _res = Py_BuildValue("lO&", - _rv, - QtTimeRecord_New, &tr); - return _res; -} - -static PyObject *TimeBaseObj_SetTimeBaseTime(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeRecord tr; -#ifndef SetTimeBaseTime - PyMac_PRECHECK(SetTimeBaseTime); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QtTimeRecord_Convert, &tr)) - return NULL; - SetTimeBaseTime(_self->ob_itself, - &tr); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TimeBaseObj_SetTimeBaseValue(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue t; - TimeScale s; -#ifndef SetTimeBaseValue - PyMac_PRECHECK(SetTimeBaseValue); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &t, - &s)) - return NULL; - SetTimeBaseValue(_self->ob_itself, - t, - s); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TimeBaseObj_GetTimeBaseRate(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; -#ifndef GetTimeBaseRate - PyMac_PRECHECK(GetTimeBaseRate); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTimeBaseRate(_self->ob_itself); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *TimeBaseObj_SetTimeBaseRate(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed r; -#ifndef SetTimeBaseRate - PyMac_PRECHECK(SetTimeBaseRate); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFixed, &r)) - return NULL; - SetTimeBaseRate(_self->ob_itself, - r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TimeBaseObj_GetTimeBaseStartTime(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue _rv; - TimeScale s; - TimeRecord tr; -#ifndef GetTimeBaseStartTime - PyMac_PRECHECK(GetTimeBaseStartTime); -#endif - if (!PyArg_ParseTuple(_args, "l", - &s)) - return NULL; - _rv = GetTimeBaseStartTime(_self->ob_itself, - s, - &tr); - _res = Py_BuildValue("lO&", - _rv, - QtTimeRecord_New, &tr); - return _res; -} - -static PyObject *TimeBaseObj_SetTimeBaseStartTime(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeRecord tr; -#ifndef SetTimeBaseStartTime - PyMac_PRECHECK(SetTimeBaseStartTime); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QtTimeRecord_Convert, &tr)) - return NULL; - SetTimeBaseStartTime(_self->ob_itself, - &tr); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TimeBaseObj_GetTimeBaseStopTime(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue _rv; - TimeScale s; - TimeRecord tr; -#ifndef GetTimeBaseStopTime - PyMac_PRECHECK(GetTimeBaseStopTime); -#endif - if (!PyArg_ParseTuple(_args, "l", - &s)) - return NULL; - _rv = GetTimeBaseStopTime(_self->ob_itself, - s, - &tr); - _res = Py_BuildValue("lO&", - _rv, - QtTimeRecord_New, &tr); - return _res; -} - -static PyObject *TimeBaseObj_SetTimeBaseStopTime(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeRecord tr; -#ifndef SetTimeBaseStopTime - PyMac_PRECHECK(SetTimeBaseStopTime); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QtTimeRecord_Convert, &tr)) - return NULL; - SetTimeBaseStopTime(_self->ob_itself, - &tr); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TimeBaseObj_GetTimeBaseFlags(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetTimeBaseFlags - PyMac_PRECHECK(GetTimeBaseFlags); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTimeBaseFlags(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TimeBaseObj_SetTimeBaseFlags(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long timeBaseFlags; -#ifndef SetTimeBaseFlags - PyMac_PRECHECK(SetTimeBaseFlags); -#endif - if (!PyArg_ParseTuple(_args, "l", - &timeBaseFlags)) - return NULL; - SetTimeBaseFlags(_self->ob_itself, - timeBaseFlags); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TimeBaseObj_SetTimeBaseMasterTimeBase(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeBase master; - TimeRecord slaveZero; -#ifndef SetTimeBaseMasterTimeBase - PyMac_PRECHECK(SetTimeBaseMasterTimeBase); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - TimeBaseObj_Convert, &master, - QtTimeRecord_Convert, &slaveZero)) - return NULL; - SetTimeBaseMasterTimeBase(_self->ob_itself, - master, - &slaveZero); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TimeBaseObj_GetTimeBaseMasterTimeBase(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeBase _rv; -#ifndef GetTimeBaseMasterTimeBase - PyMac_PRECHECK(GetTimeBaseMasterTimeBase); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTimeBaseMasterTimeBase(_self->ob_itself); - _res = Py_BuildValue("O&", - TimeBaseObj_New, _rv); - return _res; -} - -static PyObject *TimeBaseObj_SetTimeBaseMasterClock(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Component clockMeister; - TimeRecord slaveZero; -#ifndef SetTimeBaseMasterClock - PyMac_PRECHECK(SetTimeBaseMasterClock); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpObj_Convert, &clockMeister, - QtTimeRecord_Convert, &slaveZero)) - return NULL; - SetTimeBaseMasterClock(_self->ob_itself, - clockMeister, - &slaveZero); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TimeBaseObj_GetTimeBaseMasterClock(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentInstance _rv; -#ifndef GetTimeBaseMasterClock - PyMac_PRECHECK(GetTimeBaseMasterClock); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTimeBaseMasterClock(_self->ob_itself); - _res = Py_BuildValue("O&", - CmpInstObj_New, _rv); - return _res; -} - -static PyObject *TimeBaseObj_GetTimeBaseStatus(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - TimeRecord unpinnedTime; -#ifndef GetTimeBaseStatus - PyMac_PRECHECK(GetTimeBaseStatus); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTimeBaseStatus(_self->ob_itself, - &unpinnedTime); - _res = Py_BuildValue("lO&", - _rv, - QtTimeRecord_New, &unpinnedTime); - return _res; -} - -static PyObject *TimeBaseObj_SetTimeBaseZero(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeRecord zero; -#ifndef SetTimeBaseZero - PyMac_PRECHECK(SetTimeBaseZero); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QtTimeRecord_Convert, &zero)) - return NULL; - SetTimeBaseZero(_self->ob_itself, - &zero); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TimeBaseObj_GetTimeBaseEffectiveRate(TimeBaseObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; -#ifndef GetTimeBaseEffectiveRate - PyMac_PRECHECK(GetTimeBaseEffectiveRate); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTimeBaseEffectiveRate(_self->ob_itself); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyMethodDef TimeBaseObj_methods[] = { - {"DisposeTimeBase", (PyCFunction)TimeBaseObj_DisposeTimeBase, 1, - PyDoc_STR("() -> None")}, - {"GetTimeBaseTime", (PyCFunction)TimeBaseObj_GetTimeBaseTime, 1, - PyDoc_STR("(TimeScale s) -> (TimeValue _rv, TimeRecord tr)")}, - {"SetTimeBaseTime", (PyCFunction)TimeBaseObj_SetTimeBaseTime, 1, - PyDoc_STR("(TimeRecord tr) -> None")}, - {"SetTimeBaseValue", (PyCFunction)TimeBaseObj_SetTimeBaseValue, 1, - PyDoc_STR("(TimeValue t, TimeScale s) -> None")}, - {"GetTimeBaseRate", (PyCFunction)TimeBaseObj_GetTimeBaseRate, 1, - PyDoc_STR("() -> (Fixed _rv)")}, - {"SetTimeBaseRate", (PyCFunction)TimeBaseObj_SetTimeBaseRate, 1, - PyDoc_STR("(Fixed r) -> None")}, - {"GetTimeBaseStartTime", (PyCFunction)TimeBaseObj_GetTimeBaseStartTime, 1, - PyDoc_STR("(TimeScale s) -> (TimeValue _rv, TimeRecord tr)")}, - {"SetTimeBaseStartTime", (PyCFunction)TimeBaseObj_SetTimeBaseStartTime, 1, - PyDoc_STR("(TimeRecord tr) -> None")}, - {"GetTimeBaseStopTime", (PyCFunction)TimeBaseObj_GetTimeBaseStopTime, 1, - PyDoc_STR("(TimeScale s) -> (TimeValue _rv, TimeRecord tr)")}, - {"SetTimeBaseStopTime", (PyCFunction)TimeBaseObj_SetTimeBaseStopTime, 1, - PyDoc_STR("(TimeRecord tr) -> None")}, - {"GetTimeBaseFlags", (PyCFunction)TimeBaseObj_GetTimeBaseFlags, 1, - PyDoc_STR("() -> (long _rv)")}, - {"SetTimeBaseFlags", (PyCFunction)TimeBaseObj_SetTimeBaseFlags, 1, - PyDoc_STR("(long timeBaseFlags) -> None")}, - {"SetTimeBaseMasterTimeBase", (PyCFunction)TimeBaseObj_SetTimeBaseMasterTimeBase, 1, - PyDoc_STR("(TimeBase master, TimeRecord slaveZero) -> None")}, - {"GetTimeBaseMasterTimeBase", (PyCFunction)TimeBaseObj_GetTimeBaseMasterTimeBase, 1, - PyDoc_STR("() -> (TimeBase _rv)")}, - {"SetTimeBaseMasterClock", (PyCFunction)TimeBaseObj_SetTimeBaseMasterClock, 1, - PyDoc_STR("(Component clockMeister, TimeRecord slaveZero) -> None")}, - {"GetTimeBaseMasterClock", (PyCFunction)TimeBaseObj_GetTimeBaseMasterClock, 1, - PyDoc_STR("() -> (ComponentInstance _rv)")}, - {"GetTimeBaseStatus", (PyCFunction)TimeBaseObj_GetTimeBaseStatus, 1, - PyDoc_STR("() -> (long _rv, TimeRecord unpinnedTime)")}, - {"SetTimeBaseZero", (PyCFunction)TimeBaseObj_SetTimeBaseZero, 1, - PyDoc_STR("(TimeRecord zero) -> None")}, - {"GetTimeBaseEffectiveRate", (PyCFunction)TimeBaseObj_GetTimeBaseEffectiveRate, 1, - PyDoc_STR("() -> (Fixed _rv)")}, - {NULL, NULL, 0} -}; - -#define TimeBaseObj_getsetlist NULL - - -#define TimeBaseObj_compare NULL - -#define TimeBaseObj_repr NULL - -#define TimeBaseObj_hash NULL -#define TimeBaseObj_tp_init 0 - -#define TimeBaseObj_tp_alloc PyType_GenericAlloc - -static PyObject *TimeBaseObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - TimeBase itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, TimeBaseObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((TimeBaseObject *)_self)->ob_itself = itself; - return _self; -} - -#define TimeBaseObj_tp_free PyObject_Del - - -PyTypeObject TimeBase_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Qt.TimeBase", /*tp_name*/ - sizeof(TimeBaseObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) TimeBaseObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) TimeBaseObj_compare, /*tp_compare*/ - (reprfunc) TimeBaseObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) TimeBaseObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - TimeBaseObj_methods, /* tp_methods */ - 0, /*tp_members*/ - TimeBaseObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - TimeBaseObj_tp_init, /* tp_init */ - TimeBaseObj_tp_alloc, /* tp_alloc */ - TimeBaseObj_tp_new, /* tp_new */ - TimeBaseObj_tp_free, /* tp_free */ -}; - -/* -------------------- End object type TimeBase -------------------- */ - - -/* ---------------------- Object type UserData ---------------------- */ - -PyTypeObject UserData_Type; - -#define UserDataObj_Check(x) ((x)->ob_type == &UserData_Type || PyObject_TypeCheck((x), &UserData_Type)) - -typedef struct UserDataObject { - PyObject_HEAD - UserData ob_itself; -} UserDataObject; - -PyObject *UserDataObj_New(UserData itself) -{ - UserDataObject *it; - if (itself == NULL) { - PyErr_SetString(Qt_Error,"Cannot create UserData from NULL pointer"); - return NULL; - } - it = PyObject_NEW(UserDataObject, &UserData_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int UserDataObj_Convert(PyObject *v, UserData *p_itself) -{ - if (v == Py_None) - { - *p_itself = NULL; - return 1; - } - if (!UserDataObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "UserData required"); - return 0; - } - *p_itself = ((UserDataObject *)v)->ob_itself; - return 1; -} - -static void UserDataObj_dealloc(UserDataObject *self) -{ - if (self->ob_itself) DisposeUserData(self->ob_itself); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *UserDataObj_GetUserData(UserDataObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle data; - OSType udType; - long index; -#ifndef GetUserData - PyMac_PRECHECK(GetUserData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - ResObj_Convert, &data, - PyMac_GetOSType, &udType, - &index)) - return NULL; - _err = GetUserData(_self->ob_itself, - data, - udType, - index); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *UserDataObj_AddUserData(UserDataObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle data; - OSType udType; -#ifndef AddUserData - PyMac_PRECHECK(AddUserData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &data, - PyMac_GetOSType, &udType)) - return NULL; - _err = AddUserData(_self->ob_itself, - data, - udType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *UserDataObj_RemoveUserData(UserDataObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType udType; - long index; -#ifndef RemoveUserData - PyMac_PRECHECK(RemoveUserData); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetOSType, &udType, - &index)) - return NULL; - _err = RemoveUserData(_self->ob_itself, - udType, - index); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *UserDataObj_CountUserDataType(UserDataObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - OSType udType; -#ifndef CountUserDataType - PyMac_PRECHECK(CountUserDataType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &udType)) - return NULL; - _rv = CountUserDataType(_self->ob_itself, - udType); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *UserDataObj_GetNextUserDataType(UserDataObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - OSType udType; -#ifndef GetNextUserDataType - PyMac_PRECHECK(GetNextUserDataType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &udType)) - return NULL; - _rv = GetNextUserDataType(_self->ob_itself, - udType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *UserDataObj_AddUserDataText(UserDataObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle data; - OSType udType; - long index; - short itlRegionTag; -#ifndef AddUserDataText - PyMac_PRECHECK(AddUserDataText); -#endif - if (!PyArg_ParseTuple(_args, "O&O&lh", - ResObj_Convert, &data, - PyMac_GetOSType, &udType, - &index, - &itlRegionTag)) - return NULL; - _err = AddUserDataText(_self->ob_itself, - data, - udType, - index, - itlRegionTag); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *UserDataObj_GetUserDataText(UserDataObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle data; - OSType udType; - long index; - short itlRegionTag; -#ifndef GetUserDataText - PyMac_PRECHECK(GetUserDataText); -#endif - if (!PyArg_ParseTuple(_args, "O&O&lh", - ResObj_Convert, &data, - PyMac_GetOSType, &udType, - &index, - &itlRegionTag)) - return NULL; - _err = GetUserDataText(_self->ob_itself, - data, - udType, - index, - itlRegionTag); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *UserDataObj_RemoveUserDataText(UserDataObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType udType; - long index; - short itlRegionTag; -#ifndef RemoveUserDataText - PyMac_PRECHECK(RemoveUserDataText); -#endif - if (!PyArg_ParseTuple(_args, "O&lh", - PyMac_GetOSType, &udType, - &index, - &itlRegionTag)) - return NULL; - _err = RemoveUserDataText(_self->ob_itself, - udType, - index, - itlRegionTag); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *UserDataObj_PutUserDataIntoHandle(UserDataObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle h; -#ifndef PutUserDataIntoHandle - PyMac_PRECHECK(PutUserDataIntoHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &h)) - return NULL; - _err = PutUserDataIntoHandle(_self->ob_itself, - h); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *UserDataObj_CopyUserData(UserDataObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UserData dstUserData; - OSType copyRule; -#ifndef CopyUserData - PyMac_PRECHECK(CopyUserData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - UserDataObj_Convert, &dstUserData, - PyMac_GetOSType, ©Rule)) - return NULL; - _err = CopyUserData(_self->ob_itself, - dstUserData, - copyRule); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef UserDataObj_methods[] = { - {"GetUserData", (PyCFunction)UserDataObj_GetUserData, 1, - PyDoc_STR("(Handle data, OSType udType, long index) -> None")}, - {"AddUserData", (PyCFunction)UserDataObj_AddUserData, 1, - PyDoc_STR("(Handle data, OSType udType) -> None")}, - {"RemoveUserData", (PyCFunction)UserDataObj_RemoveUserData, 1, - PyDoc_STR("(OSType udType, long index) -> None")}, - {"CountUserDataType", (PyCFunction)UserDataObj_CountUserDataType, 1, - PyDoc_STR("(OSType udType) -> (short _rv)")}, - {"GetNextUserDataType", (PyCFunction)UserDataObj_GetNextUserDataType, 1, - PyDoc_STR("(OSType udType) -> (long _rv)")}, - {"AddUserDataText", (PyCFunction)UserDataObj_AddUserDataText, 1, - PyDoc_STR("(Handle data, OSType udType, long index, short itlRegionTag) -> None")}, - {"GetUserDataText", (PyCFunction)UserDataObj_GetUserDataText, 1, - PyDoc_STR("(Handle data, OSType udType, long index, short itlRegionTag) -> None")}, - {"RemoveUserDataText", (PyCFunction)UserDataObj_RemoveUserDataText, 1, - PyDoc_STR("(OSType udType, long index, short itlRegionTag) -> None")}, - {"PutUserDataIntoHandle", (PyCFunction)UserDataObj_PutUserDataIntoHandle, 1, - PyDoc_STR("(Handle h) -> None")}, - {"CopyUserData", (PyCFunction)UserDataObj_CopyUserData, 1, - PyDoc_STR("(UserData dstUserData, OSType copyRule) -> None")}, - {NULL, NULL, 0} -}; - -#define UserDataObj_getsetlist NULL - - -#define UserDataObj_compare NULL - -#define UserDataObj_repr NULL - -#define UserDataObj_hash NULL -#define UserDataObj_tp_init 0 - -#define UserDataObj_tp_alloc PyType_GenericAlloc - -static PyObject *UserDataObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - UserData itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, UserDataObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((UserDataObject *)_self)->ob_itself = itself; - return _self; -} - -#define UserDataObj_tp_free PyObject_Del - - -PyTypeObject UserData_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Qt.UserData", /*tp_name*/ - sizeof(UserDataObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) UserDataObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) UserDataObj_compare, /*tp_compare*/ - (reprfunc) UserDataObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) UserDataObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - UserDataObj_methods, /* tp_methods */ - 0, /*tp_members*/ - UserDataObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - UserDataObj_tp_init, /* tp_init */ - UserDataObj_tp_alloc, /* tp_alloc */ - UserDataObj_tp_new, /* tp_new */ - UserDataObj_tp_free, /* tp_free */ -}; - -/* -------------------- End object type UserData -------------------- */ - - -/* ----------------------- Object type Media ------------------------ */ - -PyTypeObject Media_Type; - -#define MediaObj_Check(x) ((x)->ob_type == &Media_Type || PyObject_TypeCheck((x), &Media_Type)) - -typedef struct MediaObject { - PyObject_HEAD - Media ob_itself; -} MediaObject; - -PyObject *MediaObj_New(Media itself) -{ - MediaObject *it; - if (itself == NULL) { - PyErr_SetString(Qt_Error,"Cannot create Media from NULL pointer"); - return NULL; - } - it = PyObject_NEW(MediaObject, &Media_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int MediaObj_Convert(PyObject *v, Media *p_itself) -{ - if (v == Py_None) - { - *p_itself = NULL; - return 1; - } - if (!MediaObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "Media required"); - return 0; - } - *p_itself = ((MediaObject *)v)->ob_itself; - return 1; -} - -static void MediaObj_dealloc(MediaObject *self) -{ - if (self->ob_itself) DisposeTrackMedia(self->ob_itself); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *MediaObj_LoadMediaIntoRam(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue time; - TimeValue duration; - long flags; -#ifndef LoadMediaIntoRam - PyMac_PRECHECK(LoadMediaIntoRam); -#endif - if (!PyArg_ParseTuple(_args, "lll", - &time, - &duration, - &flags)) - return NULL; - _err = LoadMediaIntoRam(_self->ob_itself, - time, - duration, - flags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_GetMediaTrack(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Track _rv; -#ifndef GetMediaTrack - PyMac_PRECHECK(GetMediaTrack); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMediaTrack(_self->ob_itself); - _res = Py_BuildValue("O&", - TrackObj_New, _rv); - return _res; -} - -static PyObject *MediaObj_GetMediaCreationTime(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - unsigned long _rv; -#ifndef GetMediaCreationTime - PyMac_PRECHECK(GetMediaCreationTime); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMediaCreationTime(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MediaObj_GetMediaModificationTime(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - unsigned long _rv; -#ifndef GetMediaModificationTime - PyMac_PRECHECK(GetMediaModificationTime); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMediaModificationTime(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MediaObj_GetMediaTimeScale(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeScale _rv; -#ifndef GetMediaTimeScale - PyMac_PRECHECK(GetMediaTimeScale); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMediaTimeScale(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MediaObj_SetMediaTimeScale(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeScale timeScale; -#ifndef SetMediaTimeScale - PyMac_PRECHECK(SetMediaTimeScale); -#endif - if (!PyArg_ParseTuple(_args, "l", - &timeScale)) - return NULL; - SetMediaTimeScale(_self->ob_itself, - timeScale); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_GetMediaDuration(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue _rv; -#ifndef GetMediaDuration - PyMac_PRECHECK(GetMediaDuration); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMediaDuration(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MediaObj_GetMediaLanguage(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetMediaLanguage - PyMac_PRECHECK(GetMediaLanguage); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMediaLanguage(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *MediaObj_SetMediaLanguage(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short language; -#ifndef SetMediaLanguage - PyMac_PRECHECK(SetMediaLanguage); -#endif - if (!PyArg_ParseTuple(_args, "h", - &language)) - return NULL; - SetMediaLanguage(_self->ob_itself, - language); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_GetMediaQuality(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetMediaQuality - PyMac_PRECHECK(GetMediaQuality); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMediaQuality(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *MediaObj_SetMediaQuality(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short quality; -#ifndef SetMediaQuality - PyMac_PRECHECK(SetMediaQuality); -#endif - if (!PyArg_ParseTuple(_args, "h", - &quality)) - return NULL; - SetMediaQuality(_self->ob_itself, - quality); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_GetMediaHandlerDescription(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSType mediaType; - Str255 creatorName; - OSType creatorManufacturer; -#ifndef GetMediaHandlerDescription - PyMac_PRECHECK(GetMediaHandlerDescription); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetStr255, creatorName)) - return NULL; - GetMediaHandlerDescription(_self->ob_itself, - &mediaType, - creatorName, - &creatorManufacturer); - _res = Py_BuildValue("O&O&", - PyMac_BuildOSType, mediaType, - PyMac_BuildOSType, creatorManufacturer); - return _res; -} - -static PyObject *MediaObj_GetMediaUserData(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UserData _rv; -#ifndef GetMediaUserData - PyMac_PRECHECK(GetMediaUserData); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMediaUserData(_self->ob_itself); - _res = Py_BuildValue("O&", - UserDataObj_New, _rv); - return _res; -} - -static PyObject *MediaObj_GetMediaHandler(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MediaHandler _rv; -#ifndef GetMediaHandler - PyMac_PRECHECK(GetMediaHandler); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMediaHandler(_self->ob_itself); - _res = Py_BuildValue("O&", - CmpInstObj_New, _rv); - return _res; -} - -static PyObject *MediaObj_SetMediaHandler(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - MediaHandlerComponent mH; -#ifndef SetMediaHandler - PyMac_PRECHECK(SetMediaHandler); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpObj_Convert, &mH)) - return NULL; - _err = SetMediaHandler(_self->ob_itself, - mH); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_BeginMediaEdits(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef BeginMediaEdits - PyMac_PRECHECK(BeginMediaEdits); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = BeginMediaEdits(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_EndMediaEdits(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef EndMediaEdits - PyMac_PRECHECK(EndMediaEdits); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = EndMediaEdits(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_SetMediaDefaultDataRefIndex(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short index; -#ifndef SetMediaDefaultDataRefIndex - PyMac_PRECHECK(SetMediaDefaultDataRefIndex); -#endif - if (!PyArg_ParseTuple(_args, "h", - &index)) - return NULL; - _err = SetMediaDefaultDataRefIndex(_self->ob_itself, - index); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_GetMediaDataHandlerDescription(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short index; - OSType dhType; - Str255 creatorName; - OSType creatorManufacturer; -#ifndef GetMediaDataHandlerDescription - PyMac_PRECHECK(GetMediaDataHandlerDescription); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &index, - PyMac_GetStr255, creatorName)) - return NULL; - GetMediaDataHandlerDescription(_self->ob_itself, - index, - &dhType, - creatorName, - &creatorManufacturer); - _res = Py_BuildValue("O&O&", - PyMac_BuildOSType, dhType, - PyMac_BuildOSType, creatorManufacturer); - return _res; -} - -static PyObject *MediaObj_GetMediaDataHandler(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - DataHandler _rv; - short index; -#ifndef GetMediaDataHandler - PyMac_PRECHECK(GetMediaDataHandler); -#endif - if (!PyArg_ParseTuple(_args, "h", - &index)) - return NULL; - _rv = GetMediaDataHandler(_self->ob_itself, - index); - _res = Py_BuildValue("O&", - CmpInstObj_New, _rv); - return _res; -} - -static PyObject *MediaObj_SetMediaDataHandler(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short index; - DataHandlerComponent dataHandler; -#ifndef SetMediaDataHandler - PyMac_PRECHECK(SetMediaDataHandler); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &index, - CmpObj_Convert, &dataHandler)) - return NULL; - _err = SetMediaDataHandler(_self->ob_itself, - index, - dataHandler); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_GetMediaSampleDescriptionCount(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetMediaSampleDescriptionCount - PyMac_PRECHECK(GetMediaSampleDescriptionCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMediaSampleDescriptionCount(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MediaObj_GetMediaSampleDescription(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long index; - SampleDescriptionHandle descH; -#ifndef GetMediaSampleDescription - PyMac_PRECHECK(GetMediaSampleDescription); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &index, - ResObj_Convert, &descH)) - return NULL; - GetMediaSampleDescription(_self->ob_itself, - index, - descH); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_SetMediaSampleDescription(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long index; - SampleDescriptionHandle descH; -#ifndef SetMediaSampleDescription - PyMac_PRECHECK(SetMediaSampleDescription); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &index, - ResObj_Convert, &descH)) - return NULL; - _err = SetMediaSampleDescription(_self->ob_itself, - index, - descH); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_GetMediaSampleCount(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetMediaSampleCount - PyMac_PRECHECK(GetMediaSampleCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMediaSampleCount(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MediaObj_GetMediaSyncSampleCount(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetMediaSyncSampleCount - PyMac_PRECHECK(GetMediaSyncSampleCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMediaSyncSampleCount(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MediaObj_SampleNumToMediaTime(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long logicalSampleNum; - TimeValue sampleTime; - TimeValue sampleDuration; -#ifndef SampleNumToMediaTime - PyMac_PRECHECK(SampleNumToMediaTime); -#endif - if (!PyArg_ParseTuple(_args, "l", - &logicalSampleNum)) - return NULL; - SampleNumToMediaTime(_self->ob_itself, - logicalSampleNum, - &sampleTime, - &sampleDuration); - _res = Py_BuildValue("ll", - sampleTime, - sampleDuration); - return _res; -} - -static PyObject *MediaObj_MediaTimeToSampleNum(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue time; - long sampleNum; - TimeValue sampleTime; - TimeValue sampleDuration; -#ifndef MediaTimeToSampleNum - PyMac_PRECHECK(MediaTimeToSampleNum); -#endif - if (!PyArg_ParseTuple(_args, "l", - &time)) - return NULL; - MediaTimeToSampleNum(_self->ob_itself, - time, - &sampleNum, - &sampleTime, - &sampleDuration); - _res = Py_BuildValue("lll", - sampleNum, - sampleTime, - sampleDuration); - return _res; -} - -static PyObject *MediaObj_AddMediaSample(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle dataIn; - long inOffset; - unsigned long size; - TimeValue durationPerSample; - SampleDescriptionHandle sampleDescriptionH; - long numberOfSamples; - short sampleFlags; - TimeValue sampleTime; -#ifndef AddMediaSample - PyMac_PRECHECK(AddMediaSample); -#endif - if (!PyArg_ParseTuple(_args, "O&lllO&lh", - ResObj_Convert, &dataIn, - &inOffset, - &size, - &durationPerSample, - ResObj_Convert, &sampleDescriptionH, - &numberOfSamples, - &sampleFlags)) - return NULL; - _err = AddMediaSample(_self->ob_itself, - dataIn, - inOffset, - size, - durationPerSample, - sampleDescriptionH, - numberOfSamples, - sampleFlags, - &sampleTime); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - sampleTime); - return _res; -} - -static PyObject *MediaObj_AddMediaSampleReference(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long dataOffset; - unsigned long size; - TimeValue durationPerSample; - SampleDescriptionHandle sampleDescriptionH; - long numberOfSamples; - short sampleFlags; - TimeValue sampleTime; -#ifndef AddMediaSampleReference - PyMac_PRECHECK(AddMediaSampleReference); -#endif - if (!PyArg_ParseTuple(_args, "lllO&lh", - &dataOffset, - &size, - &durationPerSample, - ResObj_Convert, &sampleDescriptionH, - &numberOfSamples, - &sampleFlags)) - return NULL; - _err = AddMediaSampleReference(_self->ob_itself, - dataOffset, - size, - durationPerSample, - sampleDescriptionH, - numberOfSamples, - sampleFlags, - &sampleTime); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - sampleTime); - return _res; -} - -static PyObject *MediaObj_GetMediaSample(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle dataOut; - long maxSizeToGrow; - long size; - TimeValue time; - TimeValue sampleTime; - TimeValue durationPerSample; - SampleDescriptionHandle sampleDescriptionH; - long sampleDescriptionIndex; - long maxNumberOfSamples; - long numberOfSamples; - short sampleFlags; -#ifndef GetMediaSample - PyMac_PRECHECK(GetMediaSample); -#endif - if (!PyArg_ParseTuple(_args, "O&llO&l", - ResObj_Convert, &dataOut, - &maxSizeToGrow, - &time, - ResObj_Convert, &sampleDescriptionH, - &maxNumberOfSamples)) - return NULL; - _err = GetMediaSample(_self->ob_itself, - dataOut, - maxSizeToGrow, - &size, - time, - &sampleTime, - &durationPerSample, - sampleDescriptionH, - &sampleDescriptionIndex, - maxNumberOfSamples, - &numberOfSamples, - &sampleFlags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("lllllh", - size, - sampleTime, - durationPerSample, - sampleDescriptionIndex, - numberOfSamples, - sampleFlags); - return _res; -} - -static PyObject *MediaObj_GetMediaSampleReference(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long dataOffset; - long size; - TimeValue time; - TimeValue sampleTime; - TimeValue durationPerSample; - SampleDescriptionHandle sampleDescriptionH; - long sampleDescriptionIndex; - long maxNumberOfSamples; - long numberOfSamples; - short sampleFlags; -#ifndef GetMediaSampleReference - PyMac_PRECHECK(GetMediaSampleReference); -#endif - if (!PyArg_ParseTuple(_args, "lO&l", - &time, - ResObj_Convert, &sampleDescriptionH, - &maxNumberOfSamples)) - return NULL; - _err = GetMediaSampleReference(_self->ob_itself, - &dataOffset, - &size, - time, - &sampleTime, - &durationPerSample, - sampleDescriptionH, - &sampleDescriptionIndex, - maxNumberOfSamples, - &numberOfSamples, - &sampleFlags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("llllllh", - dataOffset, - size, - sampleTime, - durationPerSample, - sampleDescriptionIndex, - numberOfSamples, - sampleFlags); - return _res; -} - -static PyObject *MediaObj_SetMediaPreferredChunkSize(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long maxChunkSize; -#ifndef SetMediaPreferredChunkSize - PyMac_PRECHECK(SetMediaPreferredChunkSize); -#endif - if (!PyArg_ParseTuple(_args, "l", - &maxChunkSize)) - return NULL; - _err = SetMediaPreferredChunkSize(_self->ob_itself, - maxChunkSize); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_GetMediaPreferredChunkSize(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long maxChunkSize; -#ifndef GetMediaPreferredChunkSize - PyMac_PRECHECK(GetMediaPreferredChunkSize); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetMediaPreferredChunkSize(_self->ob_itself, - &maxChunkSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - maxChunkSize); - return _res; -} - -static PyObject *MediaObj_SetMediaShadowSync(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long frameDiffSampleNum; - long syncSampleNum; -#ifndef SetMediaShadowSync - PyMac_PRECHECK(SetMediaShadowSync); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &frameDiffSampleNum, - &syncSampleNum)) - return NULL; - _err = SetMediaShadowSync(_self->ob_itself, - frameDiffSampleNum, - syncSampleNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_GetMediaShadowSync(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long frameDiffSampleNum; - long syncSampleNum; -#ifndef GetMediaShadowSync - PyMac_PRECHECK(GetMediaShadowSync); -#endif - if (!PyArg_ParseTuple(_args, "l", - &frameDiffSampleNum)) - return NULL; - _err = GetMediaShadowSync(_self->ob_itself, - frameDiffSampleNum, - &syncSampleNum); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - syncSampleNum); - return _res; -} - -static PyObject *MediaObj_GetMediaDataSize(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - TimeValue startTime; - TimeValue duration; -#ifndef GetMediaDataSize - PyMac_PRECHECK(GetMediaDataSize); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &startTime, - &duration)) - return NULL; - _rv = GetMediaDataSize(_self->ob_itself, - startTime, - duration); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MediaObj_GetMediaDataSize64(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue startTime; - TimeValue duration; - wide dataSize; -#ifndef GetMediaDataSize64 - PyMac_PRECHECK(GetMediaDataSize64); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &startTime, - &duration)) - return NULL; - _err = GetMediaDataSize64(_self->ob_itself, - startTime, - duration, - &dataSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_Buildwide, dataSize); - return _res; -} - -static PyObject *MediaObj_CopyMediaUserData(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Media dstMedia; - OSType copyRule; -#ifndef CopyMediaUserData - PyMac_PRECHECK(CopyMediaUserData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - MediaObj_Convert, &dstMedia, - PyMac_GetOSType, ©Rule)) - return NULL; - _err = CopyMediaUserData(_self->ob_itself, - dstMedia, - copyRule); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_GetMediaNextInterestingTime(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short interestingTimeFlags; - TimeValue time; - Fixed rate; - TimeValue interestingTime; - TimeValue interestingDuration; -#ifndef GetMediaNextInterestingTime - PyMac_PRECHECK(GetMediaNextInterestingTime); -#endif - if (!PyArg_ParseTuple(_args, "hlO&", - &interestingTimeFlags, - &time, - PyMac_GetFixed, &rate)) - return NULL; - GetMediaNextInterestingTime(_self->ob_itself, - interestingTimeFlags, - time, - rate, - &interestingTime, - &interestingDuration); - _res = Py_BuildValue("ll", - interestingTime, - interestingDuration); - return _res; -} - -static PyObject *MediaObj_GetMediaDataRef(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short index; - Handle dataRef; - OSType dataRefType; - long dataRefAttributes; -#ifndef GetMediaDataRef - PyMac_PRECHECK(GetMediaDataRef); -#endif - if (!PyArg_ParseTuple(_args, "h", - &index)) - return NULL; - _err = GetMediaDataRef(_self->ob_itself, - index, - &dataRef, - &dataRefType, - &dataRefAttributes); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&l", - ResObj_New, dataRef, - PyMac_BuildOSType, dataRefType, - dataRefAttributes); - return _res; -} - -static PyObject *MediaObj_SetMediaDataRef(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short index; - Handle dataRef; - OSType dataRefType; -#ifndef SetMediaDataRef - PyMac_PRECHECK(SetMediaDataRef); -#endif - if (!PyArg_ParseTuple(_args, "hO&O&", - &index, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType)) - return NULL; - _err = SetMediaDataRef(_self->ob_itself, - index, - dataRef, - dataRefType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_SetMediaDataRefAttributes(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short index; - long dataRefAttributes; -#ifndef SetMediaDataRefAttributes - PyMac_PRECHECK(SetMediaDataRefAttributes); -#endif - if (!PyArg_ParseTuple(_args, "hl", - &index, - &dataRefAttributes)) - return NULL; - _err = SetMediaDataRefAttributes(_self->ob_itself, - index, - dataRefAttributes); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_AddMediaDataRef(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short index; - Handle dataRef; - OSType dataRefType; -#ifndef AddMediaDataRef - PyMac_PRECHECK(AddMediaDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType)) - return NULL; - _err = AddMediaDataRef(_self->ob_itself, - &index, - dataRef, - dataRefType); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - index); - return _res; -} - -static PyObject *MediaObj_GetMediaDataRefCount(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short count; -#ifndef GetMediaDataRefCount - PyMac_PRECHECK(GetMediaDataRefCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetMediaDataRefCount(_self->ob_itself, - &count); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - count); - return _res; -} - -static PyObject *MediaObj_SetMediaPlayHints(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long flags; - long flagsMask; -#ifndef SetMediaPlayHints - PyMac_PRECHECK(SetMediaPlayHints); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &flags, - &flagsMask)) - return NULL; - SetMediaPlayHints(_self->ob_itself, - flags, - flagsMask); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MediaObj_GetMediaPlayHints(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long flags; -#ifndef GetMediaPlayHints - PyMac_PRECHECK(GetMediaPlayHints); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetMediaPlayHints(_self->ob_itself, - &flags); - _res = Py_BuildValue("l", - flags); - return _res; -} - -static PyObject *MediaObj_GetMediaNextInterestingTimeOnly(MediaObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short interestingTimeFlags; - TimeValue time; - Fixed rate; - TimeValue interestingTime; -#ifndef GetMediaNextInterestingTimeOnly - PyMac_PRECHECK(GetMediaNextInterestingTimeOnly); -#endif - if (!PyArg_ParseTuple(_args, "hlO&", - &interestingTimeFlags, - &time, - PyMac_GetFixed, &rate)) - return NULL; - GetMediaNextInterestingTimeOnly(_self->ob_itself, - interestingTimeFlags, - time, - rate, - &interestingTime); - _res = Py_BuildValue("l", - interestingTime); - return _res; -} - -static PyMethodDef MediaObj_methods[] = { - {"LoadMediaIntoRam", (PyCFunction)MediaObj_LoadMediaIntoRam, 1, - PyDoc_STR("(TimeValue time, TimeValue duration, long flags) -> None")}, - {"GetMediaTrack", (PyCFunction)MediaObj_GetMediaTrack, 1, - PyDoc_STR("() -> (Track _rv)")}, - {"GetMediaCreationTime", (PyCFunction)MediaObj_GetMediaCreationTime, 1, - PyDoc_STR("() -> (unsigned long _rv)")}, - {"GetMediaModificationTime", (PyCFunction)MediaObj_GetMediaModificationTime, 1, - PyDoc_STR("() -> (unsigned long _rv)")}, - {"GetMediaTimeScale", (PyCFunction)MediaObj_GetMediaTimeScale, 1, - PyDoc_STR("() -> (TimeScale _rv)")}, - {"SetMediaTimeScale", (PyCFunction)MediaObj_SetMediaTimeScale, 1, - PyDoc_STR("(TimeScale timeScale) -> None")}, - {"GetMediaDuration", (PyCFunction)MediaObj_GetMediaDuration, 1, - PyDoc_STR("() -> (TimeValue _rv)")}, - {"GetMediaLanguage", (PyCFunction)MediaObj_GetMediaLanguage, 1, - PyDoc_STR("() -> (short _rv)")}, - {"SetMediaLanguage", (PyCFunction)MediaObj_SetMediaLanguage, 1, - PyDoc_STR("(short language) -> None")}, - {"GetMediaQuality", (PyCFunction)MediaObj_GetMediaQuality, 1, - PyDoc_STR("() -> (short _rv)")}, - {"SetMediaQuality", (PyCFunction)MediaObj_SetMediaQuality, 1, - PyDoc_STR("(short quality) -> None")}, - {"GetMediaHandlerDescription", (PyCFunction)MediaObj_GetMediaHandlerDescription, 1, - PyDoc_STR("(Str255 creatorName) -> (OSType mediaType, OSType creatorManufacturer)")}, - {"GetMediaUserData", (PyCFunction)MediaObj_GetMediaUserData, 1, - PyDoc_STR("() -> (UserData _rv)")}, - {"GetMediaHandler", (PyCFunction)MediaObj_GetMediaHandler, 1, - PyDoc_STR("() -> (MediaHandler _rv)")}, - {"SetMediaHandler", (PyCFunction)MediaObj_SetMediaHandler, 1, - PyDoc_STR("(MediaHandlerComponent mH) -> None")}, - {"BeginMediaEdits", (PyCFunction)MediaObj_BeginMediaEdits, 1, - PyDoc_STR("() -> None")}, - {"EndMediaEdits", (PyCFunction)MediaObj_EndMediaEdits, 1, - PyDoc_STR("() -> None")}, - {"SetMediaDefaultDataRefIndex", (PyCFunction)MediaObj_SetMediaDefaultDataRefIndex, 1, - PyDoc_STR("(short index) -> None")}, - {"GetMediaDataHandlerDescription", (PyCFunction)MediaObj_GetMediaDataHandlerDescription, 1, - PyDoc_STR("(short index, Str255 creatorName) -> (OSType dhType, OSType creatorManufacturer)")}, - {"GetMediaDataHandler", (PyCFunction)MediaObj_GetMediaDataHandler, 1, - PyDoc_STR("(short index) -> (DataHandler _rv)")}, - {"SetMediaDataHandler", (PyCFunction)MediaObj_SetMediaDataHandler, 1, - PyDoc_STR("(short index, DataHandlerComponent dataHandler) -> None")}, - {"GetMediaSampleDescriptionCount", (PyCFunction)MediaObj_GetMediaSampleDescriptionCount, 1, - PyDoc_STR("() -> (long _rv)")}, - {"GetMediaSampleDescription", (PyCFunction)MediaObj_GetMediaSampleDescription, 1, - PyDoc_STR("(long index, SampleDescriptionHandle descH) -> None")}, - {"SetMediaSampleDescription", (PyCFunction)MediaObj_SetMediaSampleDescription, 1, - PyDoc_STR("(long index, SampleDescriptionHandle descH) -> None")}, - {"GetMediaSampleCount", (PyCFunction)MediaObj_GetMediaSampleCount, 1, - PyDoc_STR("() -> (long _rv)")}, - {"GetMediaSyncSampleCount", (PyCFunction)MediaObj_GetMediaSyncSampleCount, 1, - PyDoc_STR("() -> (long _rv)")}, - {"SampleNumToMediaTime", (PyCFunction)MediaObj_SampleNumToMediaTime, 1, - PyDoc_STR("(long logicalSampleNum) -> (TimeValue sampleTime, TimeValue sampleDuration)")}, - {"MediaTimeToSampleNum", (PyCFunction)MediaObj_MediaTimeToSampleNum, 1, - PyDoc_STR("(TimeValue time) -> (long sampleNum, TimeValue sampleTime, TimeValue sampleDuration)")}, - {"AddMediaSample", (PyCFunction)MediaObj_AddMediaSample, 1, - PyDoc_STR("(Handle dataIn, long inOffset, unsigned long size, TimeValue durationPerSample, SampleDescriptionHandle sampleDescriptionH, long numberOfSamples, short sampleFlags) -> (TimeValue sampleTime)")}, - {"AddMediaSampleReference", (PyCFunction)MediaObj_AddMediaSampleReference, 1, - PyDoc_STR("(long dataOffset, unsigned long size, TimeValue durationPerSample, SampleDescriptionHandle sampleDescriptionH, long numberOfSamples, short sampleFlags) -> (TimeValue sampleTime)")}, - {"GetMediaSample", (PyCFunction)MediaObj_GetMediaSample, 1, - PyDoc_STR("(Handle dataOut, long maxSizeToGrow, TimeValue time, SampleDescriptionHandle sampleDescriptionH, long maxNumberOfSamples) -> (long size, TimeValue sampleTime, TimeValue durationPerSample, long sampleDescriptionIndex, long numberOfSamples, short sampleFlags)")}, - {"GetMediaSampleReference", (PyCFunction)MediaObj_GetMediaSampleReference, 1, - PyDoc_STR("(TimeValue time, SampleDescriptionHandle sampleDescriptionH, long maxNumberOfSamples) -> (long dataOffset, long size, TimeValue sampleTime, TimeValue durationPerSample, long sampleDescriptionIndex, long numberOfSamples, short sampleFlags)")}, - {"SetMediaPreferredChunkSize", (PyCFunction)MediaObj_SetMediaPreferredChunkSize, 1, - PyDoc_STR("(long maxChunkSize) -> None")}, - {"GetMediaPreferredChunkSize", (PyCFunction)MediaObj_GetMediaPreferredChunkSize, 1, - PyDoc_STR("() -> (long maxChunkSize)")}, - {"SetMediaShadowSync", (PyCFunction)MediaObj_SetMediaShadowSync, 1, - PyDoc_STR("(long frameDiffSampleNum, long syncSampleNum) -> None")}, - {"GetMediaShadowSync", (PyCFunction)MediaObj_GetMediaShadowSync, 1, - PyDoc_STR("(long frameDiffSampleNum) -> (long syncSampleNum)")}, - {"GetMediaDataSize", (PyCFunction)MediaObj_GetMediaDataSize, 1, - PyDoc_STR("(TimeValue startTime, TimeValue duration) -> (long _rv)")}, - {"GetMediaDataSize64", (PyCFunction)MediaObj_GetMediaDataSize64, 1, - PyDoc_STR("(TimeValue startTime, TimeValue duration) -> (wide dataSize)")}, - {"CopyMediaUserData", (PyCFunction)MediaObj_CopyMediaUserData, 1, - PyDoc_STR("(Media dstMedia, OSType copyRule) -> None")}, - {"GetMediaNextInterestingTime", (PyCFunction)MediaObj_GetMediaNextInterestingTime, 1, - PyDoc_STR("(short interestingTimeFlags, TimeValue time, Fixed rate) -> (TimeValue interestingTime, TimeValue interestingDuration)")}, - {"GetMediaDataRef", (PyCFunction)MediaObj_GetMediaDataRef, 1, - PyDoc_STR("(short index) -> (Handle dataRef, OSType dataRefType, long dataRefAttributes)")}, - {"SetMediaDataRef", (PyCFunction)MediaObj_SetMediaDataRef, 1, - PyDoc_STR("(short index, Handle dataRef, OSType dataRefType) -> None")}, - {"SetMediaDataRefAttributes", (PyCFunction)MediaObj_SetMediaDataRefAttributes, 1, - PyDoc_STR("(short index, long dataRefAttributes) -> None")}, - {"AddMediaDataRef", (PyCFunction)MediaObj_AddMediaDataRef, 1, - PyDoc_STR("(Handle dataRef, OSType dataRefType) -> (short index)")}, - {"GetMediaDataRefCount", (PyCFunction)MediaObj_GetMediaDataRefCount, 1, - PyDoc_STR("() -> (short count)")}, - {"SetMediaPlayHints", (PyCFunction)MediaObj_SetMediaPlayHints, 1, - PyDoc_STR("(long flags, long flagsMask) -> None")}, - {"GetMediaPlayHints", (PyCFunction)MediaObj_GetMediaPlayHints, 1, - PyDoc_STR("() -> (long flags)")}, - {"GetMediaNextInterestingTimeOnly", (PyCFunction)MediaObj_GetMediaNextInterestingTimeOnly, 1, - PyDoc_STR("(short interestingTimeFlags, TimeValue time, Fixed rate) -> (TimeValue interestingTime)")}, - {NULL, NULL, 0} -}; - -#define MediaObj_getsetlist NULL - - -#define MediaObj_compare NULL - -#define MediaObj_repr NULL - -#define MediaObj_hash NULL -#define MediaObj_tp_init 0 - -#define MediaObj_tp_alloc PyType_GenericAlloc - -static PyObject *MediaObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - Media itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, MediaObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((MediaObject *)_self)->ob_itself = itself; - return _self; -} - -#define MediaObj_tp_free PyObject_Del - - -PyTypeObject Media_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Qt.Media", /*tp_name*/ - sizeof(MediaObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) MediaObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) MediaObj_compare, /*tp_compare*/ - (reprfunc) MediaObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) MediaObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - MediaObj_methods, /* tp_methods */ - 0, /*tp_members*/ - MediaObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - MediaObj_tp_init, /* tp_init */ - MediaObj_tp_alloc, /* tp_alloc */ - MediaObj_tp_new, /* tp_new */ - MediaObj_tp_free, /* tp_free */ -}; - -/* --------------------- End object type Media ---------------------- */ - - -/* ----------------------- Object type Track ------------------------ */ - -PyTypeObject Track_Type; - -#define TrackObj_Check(x) ((x)->ob_type == &Track_Type || PyObject_TypeCheck((x), &Track_Type)) - -typedef struct TrackObject { - PyObject_HEAD - Track ob_itself; -} TrackObject; - -PyObject *TrackObj_New(Track itself) -{ - TrackObject *it; - if (itself == NULL) { - PyErr_SetString(Qt_Error,"Cannot create Track from NULL pointer"); - return NULL; - } - it = PyObject_NEW(TrackObject, &Track_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int TrackObj_Convert(PyObject *v, Track *p_itself) -{ - if (v == Py_None) - { - *p_itself = NULL; - return 1; - } - if (!TrackObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "Track required"); - return 0; - } - *p_itself = ((TrackObject *)v)->ob_itself; - return 1; -} - -static void TrackObj_dealloc(TrackObject *self) -{ - if (self->ob_itself) DisposeMovieTrack(self->ob_itself); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *TrackObj_LoadTrackIntoRam(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue time; - TimeValue duration; - long flags; -#ifndef LoadTrackIntoRam - PyMac_PRECHECK(LoadTrackIntoRam); -#endif - if (!PyArg_ParseTuple(_args, "lll", - &time, - &duration, - &flags)) - return NULL; - _err = LoadTrackIntoRam(_self->ob_itself, - time, - duration, - flags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_GetTrackPict(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PicHandle _rv; - TimeValue time; -#ifndef GetTrackPict - PyMac_PRECHECK(GetTrackPict); -#endif - if (!PyArg_ParseTuple(_args, "l", - &time)) - return NULL; - _rv = GetTrackPict(_self->ob_itself, - time); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackClipRgn(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; -#ifndef GetTrackClipRgn - PyMac_PRECHECK(GetTrackClipRgn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackClipRgn(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_SetTrackClipRgn(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle theClip; -#ifndef SetTrackClipRgn - PyMac_PRECHECK(SetTrackClipRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theClip)) - return NULL; - SetTrackClipRgn(_self->ob_itself, - theClip); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_GetTrackDisplayBoundsRgn(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; -#ifndef GetTrackDisplayBoundsRgn - PyMac_PRECHECK(GetTrackDisplayBoundsRgn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackDisplayBoundsRgn(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackMovieBoundsRgn(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; -#ifndef GetTrackMovieBoundsRgn - PyMac_PRECHECK(GetTrackMovieBoundsRgn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackMovieBoundsRgn(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackBoundsRgn(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; -#ifndef GetTrackBoundsRgn - PyMac_PRECHECK(GetTrackBoundsRgn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackBoundsRgn(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackMatte(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle _rv; -#ifndef GetTrackMatte - PyMac_PRECHECK(GetTrackMatte); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackMatte(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_SetTrackMatte(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle theMatte; -#ifndef SetTrackMatte - PyMac_PRECHECK(SetTrackMatte); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theMatte)) - return NULL; - SetTrackMatte(_self->ob_itself, - theMatte); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_GetTrackID(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetTrackID - PyMac_PRECHECK(GetTrackID); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackID(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackMovie(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Movie _rv; -#ifndef GetTrackMovie - PyMac_PRECHECK(GetTrackMovie); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackMovie(_self->ob_itself); - _res = Py_BuildValue("O&", - MovieObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackCreationTime(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - unsigned long _rv; -#ifndef GetTrackCreationTime - PyMac_PRECHECK(GetTrackCreationTime); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackCreationTime(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackModificationTime(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - unsigned long _rv; -#ifndef GetTrackModificationTime - PyMac_PRECHECK(GetTrackModificationTime); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackModificationTime(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackEnabled(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef GetTrackEnabled - PyMac_PRECHECK(GetTrackEnabled); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackEnabled(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *TrackObj_SetTrackEnabled(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean isEnabled; -#ifndef SetTrackEnabled - PyMac_PRECHECK(SetTrackEnabled); -#endif - if (!PyArg_ParseTuple(_args, "b", - &isEnabled)) - return NULL; - SetTrackEnabled(_self->ob_itself, - isEnabled); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_GetTrackUsage(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetTrackUsage - PyMac_PRECHECK(GetTrackUsage); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackUsage(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TrackObj_SetTrackUsage(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long usage; -#ifndef SetTrackUsage - PyMac_PRECHECK(SetTrackUsage); -#endif - if (!PyArg_ParseTuple(_args, "l", - &usage)) - return NULL; - SetTrackUsage(_self->ob_itself, - usage); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_GetTrackDuration(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue _rv; -#ifndef GetTrackDuration - PyMac_PRECHECK(GetTrackDuration); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackDuration(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackOffset(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue _rv; -#ifndef GetTrackOffset - PyMac_PRECHECK(GetTrackOffset); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackOffset(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TrackObj_SetTrackOffset(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue movieOffsetTime; -#ifndef SetTrackOffset - PyMac_PRECHECK(SetTrackOffset); -#endif - if (!PyArg_ParseTuple(_args, "l", - &movieOffsetTime)) - return NULL; - SetTrackOffset(_self->ob_itself, - movieOffsetTime); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_GetTrackLayer(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetTrackLayer - PyMac_PRECHECK(GetTrackLayer); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackLayer(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *TrackObj_SetTrackLayer(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short layer; -#ifndef SetTrackLayer - PyMac_PRECHECK(SetTrackLayer); -#endif - if (!PyArg_ParseTuple(_args, "h", - &layer)) - return NULL; - SetTrackLayer(_self->ob_itself, - layer); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_GetTrackAlternate(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Track _rv; -#ifndef GetTrackAlternate - PyMac_PRECHECK(GetTrackAlternate); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackAlternate(_self->ob_itself); - _res = Py_BuildValue("O&", - TrackObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_SetTrackAlternate(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Track alternateT; -#ifndef SetTrackAlternate - PyMac_PRECHECK(SetTrackAlternate); -#endif - if (!PyArg_ParseTuple(_args, "O&", - TrackObj_Convert, &alternateT)) - return NULL; - SetTrackAlternate(_self->ob_itself, - alternateT); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_GetTrackVolume(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetTrackVolume - PyMac_PRECHECK(GetTrackVolume); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackVolume(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *TrackObj_SetTrackVolume(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short volume; -#ifndef SetTrackVolume - PyMac_PRECHECK(SetTrackVolume); -#endif - if (!PyArg_ParseTuple(_args, "h", - &volume)) - return NULL; - SetTrackVolume(_self->ob_itself, - volume); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_GetTrackDimensions(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed width; - Fixed height; -#ifndef GetTrackDimensions - PyMac_PRECHECK(GetTrackDimensions); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetTrackDimensions(_self->ob_itself, - &width, - &height); - _res = Py_BuildValue("O&O&", - PyMac_BuildFixed, width, - PyMac_BuildFixed, height); - return _res; -} - -static PyObject *TrackObj_SetTrackDimensions(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed width; - Fixed height; -#ifndef SetTrackDimensions - PyMac_PRECHECK(SetTrackDimensions); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetFixed, &width, - PyMac_GetFixed, &height)) - return NULL; - SetTrackDimensions(_self->ob_itself, - width, - height); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_GetTrackUserData(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UserData _rv; -#ifndef GetTrackUserData - PyMac_PRECHECK(GetTrackUserData); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackUserData(_self->ob_itself); - _res = Py_BuildValue("O&", - UserDataObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackSoundLocalizationSettings(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle settings; -#ifndef GetTrackSoundLocalizationSettings - PyMac_PRECHECK(GetTrackSoundLocalizationSettings); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetTrackSoundLocalizationSettings(_self->ob_itself, - &settings); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, settings); - return _res; -} - -static PyObject *TrackObj_SetTrackSoundLocalizationSettings(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle settings; -#ifndef SetTrackSoundLocalizationSettings - PyMac_PRECHECK(SetTrackSoundLocalizationSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &settings)) - return NULL; - _err = SetTrackSoundLocalizationSettings(_self->ob_itself, - settings); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_NewTrackMedia(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Media _rv; - OSType mediaType; - TimeScale timeScale; - Handle dataRef; - OSType dataRefType; -#ifndef NewTrackMedia - PyMac_PRECHECK(NewTrackMedia); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&O&", - PyMac_GetOSType, &mediaType, - &timeScale, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType)) - return NULL; - _rv = NewTrackMedia(_self->ob_itself, - mediaType, - timeScale, - dataRef, - dataRefType); - _res = Py_BuildValue("O&", - MediaObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackMedia(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Media _rv; -#ifndef GetTrackMedia - PyMac_PRECHECK(GetTrackMedia); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackMedia(_self->ob_itself); - _res = Py_BuildValue("O&", - MediaObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_InsertMediaIntoTrack(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue trackStart; - TimeValue mediaTime; - TimeValue mediaDuration; - Fixed mediaRate; -#ifndef InsertMediaIntoTrack - PyMac_PRECHECK(InsertMediaIntoTrack); -#endif - if (!PyArg_ParseTuple(_args, "lllO&", - &trackStart, - &mediaTime, - &mediaDuration, - PyMac_GetFixed, &mediaRate)) - return NULL; - _err = InsertMediaIntoTrack(_self->ob_itself, - trackStart, - mediaTime, - mediaDuration, - mediaRate); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_InsertTrackSegment(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Track dstTrack; - TimeValue srcIn; - TimeValue srcDuration; - TimeValue dstIn; -#ifndef InsertTrackSegment - PyMac_PRECHECK(InsertTrackSegment); -#endif - if (!PyArg_ParseTuple(_args, "O&lll", - TrackObj_Convert, &dstTrack, - &srcIn, - &srcDuration, - &dstIn)) - return NULL; - _err = InsertTrackSegment(_self->ob_itself, - dstTrack, - srcIn, - srcDuration, - dstIn); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_InsertEmptyTrackSegment(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue dstIn; - TimeValue dstDuration; -#ifndef InsertEmptyTrackSegment - PyMac_PRECHECK(InsertEmptyTrackSegment); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &dstIn, - &dstDuration)) - return NULL; - _err = InsertEmptyTrackSegment(_self->ob_itself, - dstIn, - dstDuration); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_DeleteTrackSegment(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue startTime; - TimeValue duration; -#ifndef DeleteTrackSegment - PyMac_PRECHECK(DeleteTrackSegment); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &startTime, - &duration)) - return NULL; - _err = DeleteTrackSegment(_self->ob_itself, - startTime, - duration); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_ScaleTrackSegment(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue startTime; - TimeValue oldDuration; - TimeValue newDuration; -#ifndef ScaleTrackSegment - PyMac_PRECHECK(ScaleTrackSegment); -#endif - if (!PyArg_ParseTuple(_args, "lll", - &startTime, - &oldDuration, - &newDuration)) - return NULL; - _err = ScaleTrackSegment(_self->ob_itself, - startTime, - oldDuration, - newDuration); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_IsScrapMovie(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Component _rv; -#ifndef IsScrapMovie - PyMac_PRECHECK(IsScrapMovie); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsScrapMovie(_self->ob_itself); - _res = Py_BuildValue("O&", - CmpObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_CopyTrackSettings(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Track dstTrack; -#ifndef CopyTrackSettings - PyMac_PRECHECK(CopyTrackSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&", - TrackObj_Convert, &dstTrack)) - return NULL; - _err = CopyTrackSettings(_self->ob_itself, - dstTrack); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_AddEmptyTrackToMovie(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Movie dstMovie; - Handle dataRef; - OSType dataRefType; - Track dstTrack; -#ifndef AddEmptyTrackToMovie - PyMac_PRECHECK(AddEmptyTrackToMovie); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - MovieObj_Convert, &dstMovie, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType)) - return NULL; - _err = AddEmptyTrackToMovie(_self->ob_itself, - dstMovie, - dataRef, - dataRefType, - &dstTrack); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - TrackObj_New, dstTrack); - return _res; -} - -static PyObject *TrackObj_AddClonedTrackToMovie(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Movie dstMovie; - long flags; - Track dstTrack; -#ifndef AddClonedTrackToMovie - PyMac_PRECHECK(AddClonedTrackToMovie); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - MovieObj_Convert, &dstMovie, - &flags)) - return NULL; - _err = AddClonedTrackToMovie(_self->ob_itself, - dstMovie, - flags, - &dstTrack); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - TrackObj_New, dstTrack); - return _res; -} - -static PyObject *TrackObj_AddTrackReference(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Track refTrack; - OSType refType; - long addedIndex; -#ifndef AddTrackReference - PyMac_PRECHECK(AddTrackReference); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - TrackObj_Convert, &refTrack, - PyMac_GetOSType, &refType)) - return NULL; - _err = AddTrackReference(_self->ob_itself, - refTrack, - refType, - &addedIndex); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - addedIndex); - return _res; -} - -static PyObject *TrackObj_DeleteTrackReference(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType refType; - long index; -#ifndef DeleteTrackReference - PyMac_PRECHECK(DeleteTrackReference); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetOSType, &refType, - &index)) - return NULL; - _err = DeleteTrackReference(_self->ob_itself, - refType, - index); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_SetTrackReference(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Track refTrack; - OSType refType; - long index; -#ifndef SetTrackReference - PyMac_PRECHECK(SetTrackReference); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - TrackObj_Convert, &refTrack, - PyMac_GetOSType, &refType, - &index)) - return NULL; - _err = SetTrackReference(_self->ob_itself, - refTrack, - refType, - index); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_GetTrackReference(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Track _rv; - OSType refType; - long index; -#ifndef GetTrackReference - PyMac_PRECHECK(GetTrackReference); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetOSType, &refType, - &index)) - return NULL; - _rv = GetTrackReference(_self->ob_itself, - refType, - index); - _res = Py_BuildValue("O&", - TrackObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_GetNextTrackReferenceType(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSType _rv; - OSType refType; -#ifndef GetNextTrackReferenceType - PyMac_PRECHECK(GetNextTrackReferenceType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &refType)) - return NULL; - _rv = GetNextTrackReferenceType(_self->ob_itself, - refType); - _res = Py_BuildValue("O&", - PyMac_BuildOSType, _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackReferenceCount(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - OSType refType; -#ifndef GetTrackReferenceCount - PyMac_PRECHECK(GetTrackReferenceCount); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &refType)) - return NULL; - _rv = GetTrackReferenceCount(_self->ob_itself, - refType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackEditRate(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; - TimeValue atTime; -#ifndef GetTrackEditRate - PyMac_PRECHECK(GetTrackEditRate); -#endif - if (!PyArg_ParseTuple(_args, "l", - &atTime)) - return NULL; - _rv = GetTrackEditRate(_self->ob_itself, - atTime); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackDataSize(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - TimeValue startTime; - TimeValue duration; -#ifndef GetTrackDataSize - PyMac_PRECHECK(GetTrackDataSize); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &startTime, - &duration)) - return NULL; - _rv = GetTrackDataSize(_self->ob_itself, - startTime, - duration); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackDataSize64(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue startTime; - TimeValue duration; - wide dataSize; -#ifndef GetTrackDataSize64 - PyMac_PRECHECK(GetTrackDataSize64); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &startTime, - &duration)) - return NULL; - _err = GetTrackDataSize64(_self->ob_itself, - startTime, - duration, - &dataSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_Buildwide, dataSize); - return _res; -} - -static PyObject *TrackObj_PtInTrack(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point pt; -#ifndef PtInTrack - PyMac_PRECHECK(PtInTrack); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &pt)) - return NULL; - _rv = PtInTrack(_self->ob_itself, - pt); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *TrackObj_CopyTrackUserData(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Track dstTrack; - OSType copyRule; -#ifndef CopyTrackUserData - PyMac_PRECHECK(CopyTrackUserData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - TrackObj_Convert, &dstTrack, - PyMac_GetOSType, ©Rule)) - return NULL; - _err = CopyTrackUserData(_self->ob_itself, - dstTrack, - copyRule); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_GetTrackNextInterestingTime(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short interestingTimeFlags; - TimeValue time; - Fixed rate; - TimeValue interestingTime; - TimeValue interestingDuration; -#ifndef GetTrackNextInterestingTime - PyMac_PRECHECK(GetTrackNextInterestingTime); -#endif - if (!PyArg_ParseTuple(_args, "hlO&", - &interestingTimeFlags, - &time, - PyMac_GetFixed, &rate)) - return NULL; - GetTrackNextInterestingTime(_self->ob_itself, - interestingTimeFlags, - time, - rate, - &interestingTime, - &interestingDuration); - _res = Py_BuildValue("ll", - interestingTime, - interestingDuration); - return _res; -} - -static PyObject *TrackObj_GetTrackSegmentDisplayBoundsRgn(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; - TimeValue time; - TimeValue duration; -#ifndef GetTrackSegmentDisplayBoundsRgn - PyMac_PRECHECK(GetTrackSegmentDisplayBoundsRgn); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &time, - &duration)) - return NULL; - _rv = GetTrackSegmentDisplayBoundsRgn(_self->ob_itself, - time, - duration); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *TrackObj_GetTrackStatus(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; -#ifndef GetTrackStatus - PyMac_PRECHECK(GetTrackStatus); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetTrackStatus(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TrackObj_SetTrackLoadSettings(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue preloadTime; - TimeValue preloadDuration; - long preloadFlags; - long defaultHints; -#ifndef SetTrackLoadSettings - PyMac_PRECHECK(SetTrackLoadSettings); -#endif - if (!PyArg_ParseTuple(_args, "llll", - &preloadTime, - &preloadDuration, - &preloadFlags, - &defaultHints)) - return NULL; - SetTrackLoadSettings(_self->ob_itself, - preloadTime, - preloadDuration, - preloadFlags, - defaultHints); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TrackObj_GetTrackLoadSettings(TrackObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue preloadTime; - TimeValue preloadDuration; - long preloadFlags; - long defaultHints; -#ifndef GetTrackLoadSettings - PyMac_PRECHECK(GetTrackLoadSettings); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetTrackLoadSettings(_self->ob_itself, - &preloadTime, - &preloadDuration, - &preloadFlags, - &defaultHints); - _res = Py_BuildValue("llll", - preloadTime, - preloadDuration, - preloadFlags, - defaultHints); - return _res; -} - -static PyMethodDef TrackObj_methods[] = { - {"LoadTrackIntoRam", (PyCFunction)TrackObj_LoadTrackIntoRam, 1, - PyDoc_STR("(TimeValue time, TimeValue duration, long flags) -> None")}, - {"GetTrackPict", (PyCFunction)TrackObj_GetTrackPict, 1, - PyDoc_STR("(TimeValue time) -> (PicHandle _rv)")}, - {"GetTrackClipRgn", (PyCFunction)TrackObj_GetTrackClipRgn, 1, - PyDoc_STR("() -> (RgnHandle _rv)")}, - {"SetTrackClipRgn", (PyCFunction)TrackObj_SetTrackClipRgn, 1, - PyDoc_STR("(RgnHandle theClip) -> None")}, - {"GetTrackDisplayBoundsRgn", (PyCFunction)TrackObj_GetTrackDisplayBoundsRgn, 1, - PyDoc_STR("() -> (RgnHandle _rv)")}, - {"GetTrackMovieBoundsRgn", (PyCFunction)TrackObj_GetTrackMovieBoundsRgn, 1, - PyDoc_STR("() -> (RgnHandle _rv)")}, - {"GetTrackBoundsRgn", (PyCFunction)TrackObj_GetTrackBoundsRgn, 1, - PyDoc_STR("() -> (RgnHandle _rv)")}, - {"GetTrackMatte", (PyCFunction)TrackObj_GetTrackMatte, 1, - PyDoc_STR("() -> (PixMapHandle _rv)")}, - {"SetTrackMatte", (PyCFunction)TrackObj_SetTrackMatte, 1, - PyDoc_STR("(PixMapHandle theMatte) -> None")}, - {"GetTrackID", (PyCFunction)TrackObj_GetTrackID, 1, - PyDoc_STR("() -> (long _rv)")}, - {"GetTrackMovie", (PyCFunction)TrackObj_GetTrackMovie, 1, - PyDoc_STR("() -> (Movie _rv)")}, - {"GetTrackCreationTime", (PyCFunction)TrackObj_GetTrackCreationTime, 1, - PyDoc_STR("() -> (unsigned long _rv)")}, - {"GetTrackModificationTime", (PyCFunction)TrackObj_GetTrackModificationTime, 1, - PyDoc_STR("() -> (unsigned long _rv)")}, - {"GetTrackEnabled", (PyCFunction)TrackObj_GetTrackEnabled, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"SetTrackEnabled", (PyCFunction)TrackObj_SetTrackEnabled, 1, - PyDoc_STR("(Boolean isEnabled) -> None")}, - {"GetTrackUsage", (PyCFunction)TrackObj_GetTrackUsage, 1, - PyDoc_STR("() -> (long _rv)")}, - {"SetTrackUsage", (PyCFunction)TrackObj_SetTrackUsage, 1, - PyDoc_STR("(long usage) -> None")}, - {"GetTrackDuration", (PyCFunction)TrackObj_GetTrackDuration, 1, - PyDoc_STR("() -> (TimeValue _rv)")}, - {"GetTrackOffset", (PyCFunction)TrackObj_GetTrackOffset, 1, - PyDoc_STR("() -> (TimeValue _rv)")}, - {"SetTrackOffset", (PyCFunction)TrackObj_SetTrackOffset, 1, - PyDoc_STR("(TimeValue movieOffsetTime) -> None")}, - {"GetTrackLayer", (PyCFunction)TrackObj_GetTrackLayer, 1, - PyDoc_STR("() -> (short _rv)")}, - {"SetTrackLayer", (PyCFunction)TrackObj_SetTrackLayer, 1, - PyDoc_STR("(short layer) -> None")}, - {"GetTrackAlternate", (PyCFunction)TrackObj_GetTrackAlternate, 1, - PyDoc_STR("() -> (Track _rv)")}, - {"SetTrackAlternate", (PyCFunction)TrackObj_SetTrackAlternate, 1, - PyDoc_STR("(Track alternateT) -> None")}, - {"GetTrackVolume", (PyCFunction)TrackObj_GetTrackVolume, 1, - PyDoc_STR("() -> (short _rv)")}, - {"SetTrackVolume", (PyCFunction)TrackObj_SetTrackVolume, 1, - PyDoc_STR("(short volume) -> None")}, - {"GetTrackDimensions", (PyCFunction)TrackObj_GetTrackDimensions, 1, - PyDoc_STR("() -> (Fixed width, Fixed height)")}, - {"SetTrackDimensions", (PyCFunction)TrackObj_SetTrackDimensions, 1, - PyDoc_STR("(Fixed width, Fixed height) -> None")}, - {"GetTrackUserData", (PyCFunction)TrackObj_GetTrackUserData, 1, - PyDoc_STR("() -> (UserData _rv)")}, - {"GetTrackSoundLocalizationSettings", (PyCFunction)TrackObj_GetTrackSoundLocalizationSettings, 1, - PyDoc_STR("() -> (Handle settings)")}, - {"SetTrackSoundLocalizationSettings", (PyCFunction)TrackObj_SetTrackSoundLocalizationSettings, 1, - PyDoc_STR("(Handle settings) -> None")}, - {"NewTrackMedia", (PyCFunction)TrackObj_NewTrackMedia, 1, - PyDoc_STR("(OSType mediaType, TimeScale timeScale, Handle dataRef, OSType dataRefType) -> (Media _rv)")}, - {"GetTrackMedia", (PyCFunction)TrackObj_GetTrackMedia, 1, - PyDoc_STR("() -> (Media _rv)")}, - {"InsertMediaIntoTrack", (PyCFunction)TrackObj_InsertMediaIntoTrack, 1, - PyDoc_STR("(TimeValue trackStart, TimeValue mediaTime, TimeValue mediaDuration, Fixed mediaRate) -> None")}, - {"InsertTrackSegment", (PyCFunction)TrackObj_InsertTrackSegment, 1, - PyDoc_STR("(Track dstTrack, TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn) -> None")}, - {"InsertEmptyTrackSegment", (PyCFunction)TrackObj_InsertEmptyTrackSegment, 1, - PyDoc_STR("(TimeValue dstIn, TimeValue dstDuration) -> None")}, - {"DeleteTrackSegment", (PyCFunction)TrackObj_DeleteTrackSegment, 1, - PyDoc_STR("(TimeValue startTime, TimeValue duration) -> None")}, - {"ScaleTrackSegment", (PyCFunction)TrackObj_ScaleTrackSegment, 1, - PyDoc_STR("(TimeValue startTime, TimeValue oldDuration, TimeValue newDuration) -> None")}, - {"IsScrapMovie", (PyCFunction)TrackObj_IsScrapMovie, 1, - PyDoc_STR("() -> (Component _rv)")}, - {"CopyTrackSettings", (PyCFunction)TrackObj_CopyTrackSettings, 1, - PyDoc_STR("(Track dstTrack) -> None")}, - {"AddEmptyTrackToMovie", (PyCFunction)TrackObj_AddEmptyTrackToMovie, 1, - PyDoc_STR("(Movie dstMovie, Handle dataRef, OSType dataRefType) -> (Track dstTrack)")}, - {"AddClonedTrackToMovie", (PyCFunction)TrackObj_AddClonedTrackToMovie, 1, - PyDoc_STR("(Movie dstMovie, long flags) -> (Track dstTrack)")}, - {"AddTrackReference", (PyCFunction)TrackObj_AddTrackReference, 1, - PyDoc_STR("(Track refTrack, OSType refType) -> (long addedIndex)")}, - {"DeleteTrackReference", (PyCFunction)TrackObj_DeleteTrackReference, 1, - PyDoc_STR("(OSType refType, long index) -> None")}, - {"SetTrackReference", (PyCFunction)TrackObj_SetTrackReference, 1, - PyDoc_STR("(Track refTrack, OSType refType, long index) -> None")}, - {"GetTrackReference", (PyCFunction)TrackObj_GetTrackReference, 1, - PyDoc_STR("(OSType refType, long index) -> (Track _rv)")}, - {"GetNextTrackReferenceType", (PyCFunction)TrackObj_GetNextTrackReferenceType, 1, - PyDoc_STR("(OSType refType) -> (OSType _rv)")}, - {"GetTrackReferenceCount", (PyCFunction)TrackObj_GetTrackReferenceCount, 1, - PyDoc_STR("(OSType refType) -> (long _rv)")}, - {"GetTrackEditRate", (PyCFunction)TrackObj_GetTrackEditRate, 1, - PyDoc_STR("(TimeValue atTime) -> (Fixed _rv)")}, - {"GetTrackDataSize", (PyCFunction)TrackObj_GetTrackDataSize, 1, - PyDoc_STR("(TimeValue startTime, TimeValue duration) -> (long _rv)")}, - {"GetTrackDataSize64", (PyCFunction)TrackObj_GetTrackDataSize64, 1, - PyDoc_STR("(TimeValue startTime, TimeValue duration) -> (wide dataSize)")}, - {"PtInTrack", (PyCFunction)TrackObj_PtInTrack, 1, - PyDoc_STR("(Point pt) -> (Boolean _rv)")}, - {"CopyTrackUserData", (PyCFunction)TrackObj_CopyTrackUserData, 1, - PyDoc_STR("(Track dstTrack, OSType copyRule) -> None")}, - {"GetTrackNextInterestingTime", (PyCFunction)TrackObj_GetTrackNextInterestingTime, 1, - PyDoc_STR("(short interestingTimeFlags, TimeValue time, Fixed rate) -> (TimeValue interestingTime, TimeValue interestingDuration)")}, - {"GetTrackSegmentDisplayBoundsRgn", (PyCFunction)TrackObj_GetTrackSegmentDisplayBoundsRgn, 1, - PyDoc_STR("(TimeValue time, TimeValue duration) -> (RgnHandle _rv)")}, - {"GetTrackStatus", (PyCFunction)TrackObj_GetTrackStatus, 1, - PyDoc_STR("() -> (ComponentResult _rv)")}, - {"SetTrackLoadSettings", (PyCFunction)TrackObj_SetTrackLoadSettings, 1, - PyDoc_STR("(TimeValue preloadTime, TimeValue preloadDuration, long preloadFlags, long defaultHints) -> None")}, - {"GetTrackLoadSettings", (PyCFunction)TrackObj_GetTrackLoadSettings, 1, - PyDoc_STR("() -> (TimeValue preloadTime, TimeValue preloadDuration, long preloadFlags, long defaultHints)")}, - {NULL, NULL, 0} -}; - -#define TrackObj_getsetlist NULL - - -#define TrackObj_compare NULL - -#define TrackObj_repr NULL - -#define TrackObj_hash NULL -#define TrackObj_tp_init 0 - -#define TrackObj_tp_alloc PyType_GenericAlloc - -static PyObject *TrackObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - Track itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, TrackObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((TrackObject *)_self)->ob_itself = itself; - return _self; -} - -#define TrackObj_tp_free PyObject_Del - - -PyTypeObject Track_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Qt.Track", /*tp_name*/ - sizeof(TrackObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) TrackObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) TrackObj_compare, /*tp_compare*/ - (reprfunc) TrackObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) TrackObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - TrackObj_methods, /* tp_methods */ - 0, /*tp_members*/ - TrackObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - TrackObj_tp_init, /* tp_init */ - TrackObj_tp_alloc, /* tp_alloc */ - TrackObj_tp_new, /* tp_new */ - TrackObj_tp_free, /* tp_free */ -}; - -/* --------------------- End object type Track ---------------------- */ - - -/* ----------------------- Object type Movie ------------------------ */ - -PyTypeObject Movie_Type; - -#define MovieObj_Check(x) ((x)->ob_type == &Movie_Type || PyObject_TypeCheck((x), &Movie_Type)) - -typedef struct MovieObject { - PyObject_HEAD - Movie ob_itself; -} MovieObject; - -PyObject *MovieObj_New(Movie itself) -{ - MovieObject *it; - if (itself == NULL) { - PyErr_SetString(Qt_Error,"Cannot create Movie from NULL pointer"); - return NULL; - } - it = PyObject_NEW(MovieObject, &Movie_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int MovieObj_Convert(PyObject *v, Movie *p_itself) -{ - if (v == Py_None) - { - *p_itself = NULL; - return 1; - } - if (!MovieObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "Movie required"); - return 0; - } - *p_itself = ((MovieObject *)v)->ob_itself; - return 1; -} - -static void MovieObj_dealloc(MovieObject *self) -{ - if (self->ob_itself) DisposeMovie(self->ob_itself); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *MovieObj_MoviesTask(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long maxMilliSecToUse; -#ifndef MoviesTask - PyMac_PRECHECK(MoviesTask); -#endif - if (!PyArg_ParseTuple(_args, "l", - &maxMilliSecToUse)) - return NULL; - MoviesTask(_self->ob_itself, - maxMilliSecToUse); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_PrerollMovie(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue time; - Fixed Rate; -#ifndef PrerollMovie - PyMac_PRECHECK(PrerollMovie); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &time, - PyMac_GetFixed, &Rate)) - return NULL; - _err = PrerollMovie(_self->ob_itself, - time, - Rate); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_AbortPrePrerollMovie(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr err; -#ifndef AbortPrePrerollMovie - PyMac_PRECHECK(AbortPrePrerollMovie); -#endif - if (!PyArg_ParseTuple(_args, "h", - &err)) - return NULL; - AbortPrePrerollMovie(_self->ob_itself, - err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_LoadMovieIntoRam(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue time; - TimeValue duration; - long flags; -#ifndef LoadMovieIntoRam - PyMac_PRECHECK(LoadMovieIntoRam); -#endif - if (!PyArg_ParseTuple(_args, "lll", - &time, - &duration, - &flags)) - return NULL; - _err = LoadMovieIntoRam(_self->ob_itself, - time, - duration, - flags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_SetMovieActive(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean active; -#ifndef SetMovieActive - PyMac_PRECHECK(SetMovieActive); -#endif - if (!PyArg_ParseTuple(_args, "b", - &active)) - return NULL; - SetMovieActive(_self->ob_itself, - active); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieActive(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef GetMovieActive - PyMac_PRECHECK(GetMovieActive); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieActive(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MovieObj_StartMovie(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef StartMovie - PyMac_PRECHECK(StartMovie); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - StartMovie(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_StopMovie(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef StopMovie - PyMac_PRECHECK(StopMovie); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - StopMovie(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GoToBeginningOfMovie(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef GoToBeginningOfMovie - PyMac_PRECHECK(GoToBeginningOfMovie); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GoToBeginningOfMovie(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GoToEndOfMovie(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef GoToEndOfMovie - PyMac_PRECHECK(GoToEndOfMovie); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GoToEndOfMovie(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_IsMovieDone(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsMovieDone - PyMac_PRECHECK(IsMovieDone); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsMovieDone(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MovieObj_GetMoviePreviewMode(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef GetMoviePreviewMode - PyMac_PRECHECK(GetMoviePreviewMode); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMoviePreviewMode(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MovieObj_SetMoviePreviewMode(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean usePreview; -#ifndef SetMoviePreviewMode - PyMac_PRECHECK(SetMoviePreviewMode); -#endif - if (!PyArg_ParseTuple(_args, "b", - &usePreview)) - return NULL; - SetMoviePreviewMode(_self->ob_itself, - usePreview); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_ShowMoviePoster(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ShowMoviePoster - PyMac_PRECHECK(ShowMoviePoster); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ShowMoviePoster(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieTimeBase(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeBase _rv; -#ifndef GetMovieTimeBase - PyMac_PRECHECK(GetMovieTimeBase); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieTimeBase(_self->ob_itself); - _res = Py_BuildValue("O&", - TimeBaseObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_SetMovieMasterTimeBase(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeBase tb; - TimeRecord slaveZero; -#ifndef SetMovieMasterTimeBase - PyMac_PRECHECK(SetMovieMasterTimeBase); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - TimeBaseObj_Convert, &tb, - QtTimeRecord_Convert, &slaveZero)) - return NULL; - SetMovieMasterTimeBase(_self->ob_itself, - tb, - &slaveZero); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_SetMovieMasterClock(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Component clockMeister; - TimeRecord slaveZero; -#ifndef SetMovieMasterClock - PyMac_PRECHECK(SetMovieMasterClock); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpObj_Convert, &clockMeister, - QtTimeRecord_Convert, &slaveZero)) - return NULL; - SetMovieMasterClock(_self->ob_itself, - clockMeister, - &slaveZero); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_ChooseMovieClock(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long flags; -#ifndef ChooseMovieClock - PyMac_PRECHECK(ChooseMovieClock); -#endif - if (!PyArg_ParseTuple(_args, "l", - &flags)) - return NULL; - ChooseMovieClock(_self->ob_itself, - flags); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieGWorld(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGrafPtr port; - GDHandle gdh; -#ifndef GetMovieGWorld - PyMac_PRECHECK(GetMovieGWorld); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetMovieGWorld(_self->ob_itself, - &port, - &gdh); - _res = Py_BuildValue("O&O&", - GrafObj_New, port, - OptResObj_New, gdh); - return _res; -} - -static PyObject *MovieObj_SetMovieGWorld(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGrafPtr port; - GDHandle gdh; -#ifndef SetMovieGWorld - PyMac_PRECHECK(SetMovieGWorld); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - GrafObj_Convert, &port, - OptResObj_Convert, &gdh)) - return NULL; - SetMovieGWorld(_self->ob_itself, - port, - gdh); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieNaturalBoundsRect(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect naturalBounds; -#ifndef GetMovieNaturalBoundsRect - PyMac_PRECHECK(GetMovieNaturalBoundsRect); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetMovieNaturalBoundsRect(_self->ob_itself, - &naturalBounds); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &naturalBounds); - return _res; -} - -static PyObject *MovieObj_GetNextTrackForCompositing(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Track _rv; - Track theTrack; -#ifndef GetNextTrackForCompositing - PyMac_PRECHECK(GetNextTrackForCompositing); -#endif - if (!PyArg_ParseTuple(_args, "O&", - TrackObj_Convert, &theTrack)) - return NULL; - _rv = GetNextTrackForCompositing(_self->ob_itself, - theTrack); - _res = Py_BuildValue("O&", - TrackObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_GetPrevTrackForCompositing(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Track _rv; - Track theTrack; -#ifndef GetPrevTrackForCompositing - PyMac_PRECHECK(GetPrevTrackForCompositing); -#endif - if (!PyArg_ParseTuple(_args, "O&", - TrackObj_Convert, &theTrack)) - return NULL; - _rv = GetPrevTrackForCompositing(_self->ob_itself, - theTrack); - _res = Py_BuildValue("O&", - TrackObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_GetMoviePict(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PicHandle _rv; - TimeValue time; -#ifndef GetMoviePict - PyMac_PRECHECK(GetMoviePict); -#endif - if (!PyArg_ParseTuple(_args, "l", - &time)) - return NULL; - _rv = GetMoviePict(_self->ob_itself, - time); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_GetMoviePosterPict(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PicHandle _rv; -#ifndef GetMoviePosterPict - PyMac_PRECHECK(GetMoviePosterPict); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMoviePosterPict(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_UpdateMovie(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef UpdateMovie - PyMac_PRECHECK(UpdateMovie); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = UpdateMovie(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_InvalidateMovieRegion(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - RgnHandle invalidRgn; -#ifndef InvalidateMovieRegion - PyMac_PRECHECK(InvalidateMovieRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &invalidRgn)) - return NULL; - _err = InvalidateMovieRegion(_self->ob_itself, - invalidRgn); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieBox(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect boxRect; -#ifndef GetMovieBox - PyMac_PRECHECK(GetMovieBox); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetMovieBox(_self->ob_itself, - &boxRect); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &boxRect); - return _res; -} - -static PyObject *MovieObj_SetMovieBox(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect boxRect; -#ifndef SetMovieBox - PyMac_PRECHECK(SetMovieBox); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &boxRect)) - return NULL; - SetMovieBox(_self->ob_itself, - &boxRect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieDisplayClipRgn(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; -#ifndef GetMovieDisplayClipRgn - PyMac_PRECHECK(GetMovieDisplayClipRgn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieDisplayClipRgn(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_SetMovieDisplayClipRgn(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle theClip; -#ifndef SetMovieDisplayClipRgn - PyMac_PRECHECK(SetMovieDisplayClipRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theClip)) - return NULL; - SetMovieDisplayClipRgn(_self->ob_itself, - theClip); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieClipRgn(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; -#ifndef GetMovieClipRgn - PyMac_PRECHECK(GetMovieClipRgn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieClipRgn(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_SetMovieClipRgn(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle theClip; -#ifndef SetMovieClipRgn - PyMac_PRECHECK(SetMovieClipRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theClip)) - return NULL; - SetMovieClipRgn(_self->ob_itself, - theClip); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieDisplayBoundsRgn(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; -#ifndef GetMovieDisplayBoundsRgn - PyMac_PRECHECK(GetMovieDisplayBoundsRgn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieDisplayBoundsRgn(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_GetMovieBoundsRgn(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; -#ifndef GetMovieBoundsRgn - PyMac_PRECHECK(GetMovieBoundsRgn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieBoundsRgn(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_SetMovieVideoOutput(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentInstance vout; -#ifndef SetMovieVideoOutput - PyMac_PRECHECK(SetMovieVideoOutput); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &vout)) - return NULL; - SetMovieVideoOutput(_self->ob_itself, - vout); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_PutMovieIntoHandle(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle publicMovie; -#ifndef PutMovieIntoHandle - PyMac_PRECHECK(PutMovieIntoHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &publicMovie)) - return NULL; - _err = PutMovieIntoHandle(_self->ob_itself, - publicMovie); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_PutMovieIntoDataFork(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short fRefNum; - long offset; - long maxSize; -#ifndef PutMovieIntoDataFork - PyMac_PRECHECK(PutMovieIntoDataFork); -#endif - if (!PyArg_ParseTuple(_args, "hll", - &fRefNum, - &offset, - &maxSize)) - return NULL; - _err = PutMovieIntoDataFork(_self->ob_itself, - fRefNum, - offset, - maxSize); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_PutMovieIntoDataFork64(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long fRefNum; - wide offset; - unsigned long maxSize; -#ifndef PutMovieIntoDataFork64 - PyMac_PRECHECK(PutMovieIntoDataFork64); -#endif - if (!PyArg_ParseTuple(_args, "lO&l", - &fRefNum, - PyMac_Getwide, &offset, - &maxSize)) - return NULL; - _err = PutMovieIntoDataFork64(_self->ob_itself, - fRefNum, - &offset, - maxSize); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_PutMovieIntoStorage(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DataHandler dh; - wide offset; - unsigned long maxSize; -#ifndef PutMovieIntoStorage - PyMac_PRECHECK(PutMovieIntoStorage); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - CmpInstObj_Convert, &dh, - PyMac_Getwide, &offset, - &maxSize)) - return NULL; - _err = PutMovieIntoStorage(_self->ob_itself, - dh, - &offset, - maxSize); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_PutMovieForDataRefIntoHandle(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle dataRef; - OSType dataRefType; - Handle publicMovie; -#ifndef PutMovieForDataRefIntoHandle - PyMac_PRECHECK(PutMovieForDataRefIntoHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType, - ResObj_Convert, &publicMovie)) - return NULL; - _err = PutMovieForDataRefIntoHandle(_self->ob_itself, - dataRef, - dataRefType, - publicMovie); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieCreationTime(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - unsigned long _rv; -#ifndef GetMovieCreationTime - PyMac_PRECHECK(GetMovieCreationTime); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieCreationTime(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieObj_GetMovieModificationTime(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - unsigned long _rv; -#ifndef GetMovieModificationTime - PyMac_PRECHECK(GetMovieModificationTime); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieModificationTime(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieObj_GetMovieTimeScale(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeScale _rv; -#ifndef GetMovieTimeScale - PyMac_PRECHECK(GetMovieTimeScale); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieTimeScale(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieObj_SetMovieTimeScale(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeScale timeScale; -#ifndef SetMovieTimeScale - PyMac_PRECHECK(SetMovieTimeScale); -#endif - if (!PyArg_ParseTuple(_args, "l", - &timeScale)) - return NULL; - SetMovieTimeScale(_self->ob_itself, - timeScale); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieDuration(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue _rv; -#ifndef GetMovieDuration - PyMac_PRECHECK(GetMovieDuration); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieDuration(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieObj_GetMovieRate(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; -#ifndef GetMovieRate - PyMac_PRECHECK(GetMovieRate); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieRate(_self->ob_itself); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *MovieObj_SetMovieRate(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed rate; -#ifndef SetMovieRate - PyMac_PRECHECK(SetMovieRate); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFixed, &rate)) - return NULL; - SetMovieRate(_self->ob_itself, - rate); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMoviePreferredRate(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; -#ifndef GetMoviePreferredRate - PyMac_PRECHECK(GetMoviePreferredRate); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMoviePreferredRate(_self->ob_itself); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *MovieObj_SetMoviePreferredRate(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed rate; -#ifndef SetMoviePreferredRate - PyMac_PRECHECK(SetMoviePreferredRate); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFixed, &rate)) - return NULL; - SetMoviePreferredRate(_self->ob_itself, - rate); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMoviePreferredVolume(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetMoviePreferredVolume - PyMac_PRECHECK(GetMoviePreferredVolume); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMoviePreferredVolume(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *MovieObj_SetMoviePreferredVolume(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short volume; -#ifndef SetMoviePreferredVolume - PyMac_PRECHECK(SetMoviePreferredVolume); -#endif - if (!PyArg_ParseTuple(_args, "h", - &volume)) - return NULL; - SetMoviePreferredVolume(_self->ob_itself, - volume); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieVolume(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetMovieVolume - PyMac_PRECHECK(GetMovieVolume); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieVolume(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *MovieObj_SetMovieVolume(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short volume; -#ifndef SetMovieVolume - PyMac_PRECHECK(SetMovieVolume); -#endif - if (!PyArg_ParseTuple(_args, "h", - &volume)) - return NULL; - SetMovieVolume(_self->ob_itself, - volume); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMoviePreviewTime(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue previewTime; - TimeValue previewDuration; -#ifndef GetMoviePreviewTime - PyMac_PRECHECK(GetMoviePreviewTime); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetMoviePreviewTime(_self->ob_itself, - &previewTime, - &previewDuration); - _res = Py_BuildValue("ll", - previewTime, - previewDuration); - return _res; -} - -static PyObject *MovieObj_SetMoviePreviewTime(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue previewTime; - TimeValue previewDuration; -#ifndef SetMoviePreviewTime - PyMac_PRECHECK(SetMoviePreviewTime); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &previewTime, - &previewDuration)) - return NULL; - SetMoviePreviewTime(_self->ob_itself, - previewTime, - previewDuration); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMoviePosterTime(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue _rv; -#ifndef GetMoviePosterTime - PyMac_PRECHECK(GetMoviePosterTime); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMoviePosterTime(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieObj_SetMoviePosterTime(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue posterTime; -#ifndef SetMoviePosterTime - PyMac_PRECHECK(SetMoviePosterTime); -#endif - if (!PyArg_ParseTuple(_args, "l", - &posterTime)) - return NULL; - SetMoviePosterTime(_self->ob_itself, - posterTime); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieSelection(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue selectionTime; - TimeValue selectionDuration; -#ifndef GetMovieSelection - PyMac_PRECHECK(GetMovieSelection); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetMovieSelection(_self->ob_itself, - &selectionTime, - &selectionDuration); - _res = Py_BuildValue("ll", - selectionTime, - selectionDuration); - return _res; -} - -static PyObject *MovieObj_SetMovieSelection(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue selectionTime; - TimeValue selectionDuration; -#ifndef SetMovieSelection - PyMac_PRECHECK(SetMovieSelection); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &selectionTime, - &selectionDuration)) - return NULL; - SetMovieSelection(_self->ob_itself, - selectionTime, - selectionDuration); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_SetMovieActiveSegment(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue startTime; - TimeValue duration; -#ifndef SetMovieActiveSegment - PyMac_PRECHECK(SetMovieActiveSegment); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &startTime, - &duration)) - return NULL; - SetMovieActiveSegment(_self->ob_itself, - startTime, - duration); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieActiveSegment(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue startTime; - TimeValue duration; -#ifndef GetMovieActiveSegment - PyMac_PRECHECK(GetMovieActiveSegment); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetMovieActiveSegment(_self->ob_itself, - &startTime, - &duration); - _res = Py_BuildValue("ll", - startTime, - duration); - return _res; -} - -static PyObject *MovieObj_GetMovieTime(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue _rv; - TimeRecord currentTime; -#ifndef GetMovieTime - PyMac_PRECHECK(GetMovieTime); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieTime(_self->ob_itself, - ¤tTime); - _res = Py_BuildValue("lO&", - _rv, - QtTimeRecord_New, ¤tTime); - return _res; -} - -static PyObject *MovieObj_SetMovieTime(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeRecord newtime; -#ifndef SetMovieTime - PyMac_PRECHECK(SetMovieTime); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QtTimeRecord_Convert, &newtime)) - return NULL; - SetMovieTime(_self->ob_itself, - &newtime); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_SetMovieTimeValue(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue newtime; -#ifndef SetMovieTimeValue - PyMac_PRECHECK(SetMovieTimeValue); -#endif - if (!PyArg_ParseTuple(_args, "l", - &newtime)) - return NULL; - SetMovieTimeValue(_self->ob_itself, - newtime); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieUserData(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UserData _rv; -#ifndef GetMovieUserData - PyMac_PRECHECK(GetMovieUserData); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieUserData(_self->ob_itself); - _res = Py_BuildValue("O&", - UserDataObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_GetMovieTrackCount(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetMovieTrackCount - PyMac_PRECHECK(GetMovieTrackCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieTrackCount(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieObj_GetMovieTrack(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Track _rv; - long trackID; -#ifndef GetMovieTrack - PyMac_PRECHECK(GetMovieTrack); -#endif - if (!PyArg_ParseTuple(_args, "l", - &trackID)) - return NULL; - _rv = GetMovieTrack(_self->ob_itself, - trackID); - _res = Py_BuildValue("O&", - TrackObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_GetMovieIndTrack(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Track _rv; - long index; -#ifndef GetMovieIndTrack - PyMac_PRECHECK(GetMovieIndTrack); -#endif - if (!PyArg_ParseTuple(_args, "l", - &index)) - return NULL; - _rv = GetMovieIndTrack(_self->ob_itself, - index); - _res = Py_BuildValue("O&", - TrackObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_GetMovieIndTrackType(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Track _rv; - long index; - OSType trackType; - long flags; -#ifndef GetMovieIndTrackType - PyMac_PRECHECK(GetMovieIndTrackType); -#endif - if (!PyArg_ParseTuple(_args, "lO&l", - &index, - PyMac_GetOSType, &trackType, - &flags)) - return NULL; - _rv = GetMovieIndTrackType(_self->ob_itself, - index, - trackType, - flags); - _res = Py_BuildValue("O&", - TrackObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_NewMovieTrack(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Track _rv; - Fixed width; - Fixed height; - short trackVolume; -#ifndef NewMovieTrack - PyMac_PRECHECK(NewMovieTrack); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - PyMac_GetFixed, &width, - PyMac_GetFixed, &height, - &trackVolume)) - return NULL; - _rv = NewMovieTrack(_self->ob_itself, - width, - height, - trackVolume); - _res = Py_BuildValue("O&", - TrackObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_SetAutoTrackAlternatesEnabled(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean enable; -#ifndef SetAutoTrackAlternatesEnabled - PyMac_PRECHECK(SetAutoTrackAlternatesEnabled); -#endif - if (!PyArg_ParseTuple(_args, "b", - &enable)) - return NULL; - SetAutoTrackAlternatesEnabled(_self->ob_itself, - enable); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_SelectMovieAlternates(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef SelectMovieAlternates - PyMac_PRECHECK(SelectMovieAlternates); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - SelectMovieAlternates(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_InsertMovieSegment(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Movie dstMovie; - TimeValue srcIn; - TimeValue srcDuration; - TimeValue dstIn; -#ifndef InsertMovieSegment - PyMac_PRECHECK(InsertMovieSegment); -#endif - if (!PyArg_ParseTuple(_args, "O&lll", - MovieObj_Convert, &dstMovie, - &srcIn, - &srcDuration, - &dstIn)) - return NULL; - _err = InsertMovieSegment(_self->ob_itself, - dstMovie, - srcIn, - srcDuration, - dstIn); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_InsertEmptyMovieSegment(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue dstIn; - TimeValue dstDuration; -#ifndef InsertEmptyMovieSegment - PyMac_PRECHECK(InsertEmptyMovieSegment); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &dstIn, - &dstDuration)) - return NULL; - _err = InsertEmptyMovieSegment(_self->ob_itself, - dstIn, - dstDuration); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_DeleteMovieSegment(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue startTime; - TimeValue duration; -#ifndef DeleteMovieSegment - PyMac_PRECHECK(DeleteMovieSegment); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &startTime, - &duration)) - return NULL; - _err = DeleteMovieSegment(_self->ob_itself, - startTime, - duration); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_ScaleMovieSegment(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue startTime; - TimeValue oldDuration; - TimeValue newDuration; -#ifndef ScaleMovieSegment - PyMac_PRECHECK(ScaleMovieSegment); -#endif - if (!PyArg_ParseTuple(_args, "lll", - &startTime, - &oldDuration, - &newDuration)) - return NULL; - _err = ScaleMovieSegment(_self->ob_itself, - startTime, - oldDuration, - newDuration); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_CutMovieSelection(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Movie _rv; -#ifndef CutMovieSelection - PyMac_PRECHECK(CutMovieSelection); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CutMovieSelection(_self->ob_itself); - _res = Py_BuildValue("O&", - MovieObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_CopyMovieSelection(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Movie _rv; -#ifndef CopyMovieSelection - PyMac_PRECHECK(CopyMovieSelection); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CopyMovieSelection(_self->ob_itself); - _res = Py_BuildValue("O&", - MovieObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_PasteMovieSelection(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Movie src; -#ifndef PasteMovieSelection - PyMac_PRECHECK(PasteMovieSelection); -#endif - if (!PyArg_ParseTuple(_args, "O&", - MovieObj_Convert, &src)) - return NULL; - PasteMovieSelection(_self->ob_itself, - src); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_AddMovieSelection(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Movie src; -#ifndef AddMovieSelection - PyMac_PRECHECK(AddMovieSelection); -#endif - if (!PyArg_ParseTuple(_args, "O&", - MovieObj_Convert, &src)) - return NULL; - AddMovieSelection(_self->ob_itself, - src); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_ClearMovieSelection(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ClearMovieSelection - PyMac_PRECHECK(ClearMovieSelection); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ClearMovieSelection(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_PutMovieIntoTypedHandle(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Track targetTrack; - OSType handleType; - Handle publicMovie; - TimeValue start; - TimeValue dur; - long flags; - ComponentInstance userComp; -#ifndef PutMovieIntoTypedHandle - PyMac_PRECHECK(PutMovieIntoTypedHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&lllO&", - TrackObj_Convert, &targetTrack, - PyMac_GetOSType, &handleType, - ResObj_Convert, &publicMovie, - &start, - &dur, - &flags, - CmpInstObj_Convert, &userComp)) - return NULL; - _err = PutMovieIntoTypedHandle(_self->ob_itself, - targetTrack, - handleType, - publicMovie, - start, - dur, - flags, - userComp); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_CopyMovieSettings(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Movie dstMovie; -#ifndef CopyMovieSettings - PyMac_PRECHECK(CopyMovieSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&", - MovieObj_Convert, &dstMovie)) - return NULL; - _err = CopyMovieSettings(_self->ob_itself, - dstMovie); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_ConvertMovieToFile(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Track onlyTrack; - FSSpec outputFile; - OSType fileType; - OSType creator; - ScriptCode scriptTag; - short resID; - long flags; - ComponentInstance userComp; -#ifndef ConvertMovieToFile - PyMac_PRECHECK(ConvertMovieToFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&hlO&", - TrackObj_Convert, &onlyTrack, - PyMac_GetFSSpec, &outputFile, - PyMac_GetOSType, &fileType, - PyMac_GetOSType, &creator, - &scriptTag, - &flags, - CmpInstObj_Convert, &userComp)) - return NULL; - _err = ConvertMovieToFile(_self->ob_itself, - onlyTrack, - &outputFile, - fileType, - creator, - scriptTag, - &resID, - flags, - userComp); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - resID); - return _res; -} - -static PyObject *MovieObj_GetMovieDataSize(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - TimeValue startTime; - TimeValue duration; -#ifndef GetMovieDataSize - PyMac_PRECHECK(GetMovieDataSize); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &startTime, - &duration)) - return NULL; - _rv = GetMovieDataSize(_self->ob_itself, - startTime, - duration); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *MovieObj_GetMovieDataSize64(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue startTime; - TimeValue duration; - wide dataSize; -#ifndef GetMovieDataSize64 - PyMac_PRECHECK(GetMovieDataSize64); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &startTime, - &duration)) - return NULL; - _err = GetMovieDataSize64(_self->ob_itself, - startTime, - duration, - &dataSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_Buildwide, dataSize); - return _res; -} - -static PyObject *MovieObj_PtInMovie(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point pt; -#ifndef PtInMovie - PyMac_PRECHECK(PtInMovie); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &pt)) - return NULL; - _rv = PtInMovie(_self->ob_itself, - pt); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MovieObj_SetMovieLanguage(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long language; -#ifndef SetMovieLanguage - PyMac_PRECHECK(SetMovieLanguage); -#endif - if (!PyArg_ParseTuple(_args, "l", - &language)) - return NULL; - SetMovieLanguage(_self->ob_itself, - language); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_CopyMovieUserData(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Movie dstMovie; - OSType copyRule; -#ifndef CopyMovieUserData - PyMac_PRECHECK(CopyMovieUserData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - MovieObj_Convert, &dstMovie, - PyMac_GetOSType, ©Rule)) - return NULL; - _err = CopyMovieUserData(_self->ob_itself, - dstMovie, - copyRule); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieNextInterestingTime(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short interestingTimeFlags; - short numMediaTypes; - OSType whichMediaTypes; - TimeValue time; - Fixed rate; - TimeValue interestingTime; - TimeValue interestingDuration; -#ifndef GetMovieNextInterestingTime - PyMac_PRECHECK(GetMovieNextInterestingTime); -#endif - if (!PyArg_ParseTuple(_args, "hhO&lO&", - &interestingTimeFlags, - &numMediaTypes, - PyMac_GetOSType, &whichMediaTypes, - &time, - PyMac_GetFixed, &rate)) - return NULL; - GetMovieNextInterestingTime(_self->ob_itself, - interestingTimeFlags, - numMediaTypes, - &whichMediaTypes, - time, - rate, - &interestingTime, - &interestingDuration); - _res = Py_BuildValue("ll", - interestingTime, - interestingDuration); - return _res; -} - -static PyObject *MovieObj_AddMovieResource(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short resRefNum; - short resId; - Str255 resName; -#ifndef AddMovieResource - PyMac_PRECHECK(AddMovieResource); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &resRefNum, - PyMac_GetStr255, resName)) - return NULL; - _err = AddMovieResource(_self->ob_itself, - resRefNum, - &resId, - resName); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - resId); - return _res; -} - -static PyObject *MovieObj_UpdateMovieResource(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short resRefNum; - short resId; - Str255 resName; -#ifndef UpdateMovieResource - PyMac_PRECHECK(UpdateMovieResource); -#endif - if (!PyArg_ParseTuple(_args, "hhO&", - &resRefNum, - &resId, - PyMac_GetStr255, resName)) - return NULL; - _err = UpdateMovieResource(_self->ob_itself, - resRefNum, - resId, - resName); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_AddMovieToStorage(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DataHandler dh; -#ifndef AddMovieToStorage - PyMac_PRECHECK(AddMovieToStorage); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _err = AddMovieToStorage(_self->ob_itself, - dh); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_UpdateMovieInStorage(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DataHandler dh; -#ifndef UpdateMovieInStorage - PyMac_PRECHECK(UpdateMovieInStorage); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _err = UpdateMovieInStorage(_self->ob_itself, - dh); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_HasMovieChanged(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef HasMovieChanged - PyMac_PRECHECK(HasMovieChanged); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = HasMovieChanged(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *MovieObj_ClearMovieChanged(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ClearMovieChanged - PyMac_PRECHECK(ClearMovieChanged); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ClearMovieChanged(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_SetMovieDefaultDataRef(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle dataRef; - OSType dataRefType; -#ifndef SetMovieDefaultDataRef - PyMac_PRECHECK(SetMovieDefaultDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType)) - return NULL; - _err = SetMovieDefaultDataRef(_self->ob_itself, - dataRef, - dataRefType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieDefaultDataRef(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle dataRef; - OSType dataRefType; -#ifndef GetMovieDefaultDataRef - PyMac_PRECHECK(GetMovieDefaultDataRef); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetMovieDefaultDataRef(_self->ob_itself, - &dataRef, - &dataRefType); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - ResObj_New, dataRef, - PyMac_BuildOSType, dataRefType); - return _res; -} - -static PyObject *MovieObj_SetMovieColorTable(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - CTabHandle ctab; -#ifndef SetMovieColorTable - PyMac_PRECHECK(SetMovieColorTable); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &ctab)) - return NULL; - _err = SetMovieColorTable(_self->ob_itself, - ctab); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieColorTable(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - CTabHandle ctab; -#ifndef GetMovieColorTable - PyMac_PRECHECK(GetMovieColorTable); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetMovieColorTable(_self->ob_itself, - &ctab); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, ctab); - return _res; -} - -static PyObject *MovieObj_FlattenMovie(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long movieFlattenFlags; - FSSpec theFile; - OSType creator; - ScriptCode scriptTag; - long createMovieFileFlags; - short resId; - Str255 resName; -#ifndef FlattenMovie - PyMac_PRECHECK(FlattenMovie); -#endif - if (!PyArg_ParseTuple(_args, "lO&O&hlO&", - &movieFlattenFlags, - PyMac_GetFSSpec, &theFile, - PyMac_GetOSType, &creator, - &scriptTag, - &createMovieFileFlags, - PyMac_GetStr255, resName)) - return NULL; - FlattenMovie(_self->ob_itself, - movieFlattenFlags, - &theFile, - creator, - scriptTag, - createMovieFileFlags, - &resId, - resName); - _res = Py_BuildValue("h", - resId); - return _res; -} - -static PyObject *MovieObj_FlattenMovieData(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Movie _rv; - long movieFlattenFlags; - FSSpec theFile; - OSType creator; - ScriptCode scriptTag; - long createMovieFileFlags; -#ifndef FlattenMovieData - PyMac_PRECHECK(FlattenMovieData); -#endif - if (!PyArg_ParseTuple(_args, "lO&O&hl", - &movieFlattenFlags, - PyMac_GetFSSpec, &theFile, - PyMac_GetOSType, &creator, - &scriptTag, - &createMovieFileFlags)) - return NULL; - _rv = FlattenMovieData(_self->ob_itself, - movieFlattenFlags, - &theFile, - creator, - scriptTag, - createMovieFileFlags); - _res = Py_BuildValue("O&", - MovieObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_FlattenMovieDataToDataRef(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Movie _rv; - long movieFlattenFlags; - Handle dataRef; - OSType dataRefType; - OSType creator; - ScriptCode scriptTag; - long createMovieFileFlags; -#ifndef FlattenMovieDataToDataRef - PyMac_PRECHECK(FlattenMovieDataToDataRef); -#endif - if (!PyArg_ParseTuple(_args, "lO&O&O&hl", - &movieFlattenFlags, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType, - PyMac_GetOSType, &creator, - &scriptTag, - &createMovieFileFlags)) - return NULL; - _rv = FlattenMovieDataToDataRef(_self->ob_itself, - movieFlattenFlags, - dataRef, - dataRefType, - creator, - scriptTag, - createMovieFileFlags); - _res = Py_BuildValue("O&", - MovieObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_MovieSearchText(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Ptr text; - long size; - long searchFlags; - Track searchTrack; - TimeValue searchTime; - long searchOffset; -#ifndef MovieSearchText - PyMac_PRECHECK(MovieSearchText); -#endif - if (!PyArg_ParseTuple(_args, "sll", - &text, - &size, - &searchFlags)) - return NULL; - _err = MovieSearchText(_self->ob_itself, - text, - size, - searchFlags, - &searchTrack, - &searchTime, - &searchOffset); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&ll", - TrackObj_New, searchTrack, - searchTime, - searchOffset); - return _res; -} - -static PyObject *MovieObj_GetPosterBox(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect boxRect; -#ifndef GetPosterBox - PyMac_PRECHECK(GetPosterBox); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetPosterBox(_self->ob_itself, - &boxRect); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &boxRect); - return _res; -} - -static PyObject *MovieObj_SetPosterBox(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect boxRect; -#ifndef SetPosterBox - PyMac_PRECHECK(SetPosterBox); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &boxRect)) - return NULL; - SetPosterBox(_self->ob_itself, - &boxRect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMovieSegmentDisplayBoundsRgn(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; - TimeValue time; - TimeValue duration; -#ifndef GetMovieSegmentDisplayBoundsRgn - PyMac_PRECHECK(GetMovieSegmentDisplayBoundsRgn); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &time, - &duration)) - return NULL; - _rv = GetMovieSegmentDisplayBoundsRgn(_self->ob_itself, - time, - duration); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_GetMovieStatus(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - Track firstProblemTrack; -#ifndef GetMovieStatus - PyMac_PRECHECK(GetMovieStatus); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMovieStatus(_self->ob_itself, - &firstProblemTrack); - _res = Py_BuildValue("lO&", - _rv, - TrackObj_New, firstProblemTrack); - return _res; -} - -static PyObject *MovieObj_NewMovieController(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - MovieController _rv; - Rect movieRect; - long someFlags; -#ifndef NewMovieController - PyMac_PRECHECK(NewMovieController); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetRect, &movieRect, - &someFlags)) - return NULL; - _rv = NewMovieController(_self->ob_itself, - &movieRect, - someFlags); - _res = Py_BuildValue("O&", - MovieCtlObj_New, _rv); - return _res; -} - -static PyObject *MovieObj_PutMovieOnScrap(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long movieScrapFlags; -#ifndef PutMovieOnScrap - PyMac_PRECHECK(PutMovieOnScrap); -#endif - if (!PyArg_ParseTuple(_args, "l", - &movieScrapFlags)) - return NULL; - _err = PutMovieOnScrap(_self->ob_itself, - movieScrapFlags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_SetMoviePlayHints(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long flags; - long flagsMask; -#ifndef SetMoviePlayHints - PyMac_PRECHECK(SetMoviePlayHints); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &flags, - &flagsMask)) - return NULL; - SetMoviePlayHints(_self->ob_itself, - flags, - flagsMask); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *MovieObj_GetMaxLoadedTimeInMovie(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeValue time; -#ifndef GetMaxLoadedTimeInMovie - PyMac_PRECHECK(GetMaxLoadedTimeInMovie); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetMaxLoadedTimeInMovie(_self->ob_itself, - &time); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - time); - return _res; -} - -static PyObject *MovieObj_QTMovieNeedsTimeTable(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Boolean needsTimeTable; -#ifndef QTMovieNeedsTimeTable - PyMac_PRECHECK(QTMovieNeedsTimeTable); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = QTMovieNeedsTimeTable(_self->ob_itself, - &needsTimeTable); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("b", - needsTimeTable); - return _res; -} - -static PyObject *MovieObj_QTGetDataRefMaxFileOffset(MovieObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType dataRefType; - Handle dataRef; - long offset; -#ifndef QTGetDataRefMaxFileOffset - PyMac_PRECHECK(QTGetDataRefMaxFileOffset); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &dataRefType, - ResObj_Convert, &dataRef)) - return NULL; - _err = QTGetDataRefMaxFileOffset(_self->ob_itself, - dataRefType, - dataRef, - &offset); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - offset); - return _res; -} - -static PyMethodDef MovieObj_methods[] = { - {"MoviesTask", (PyCFunction)MovieObj_MoviesTask, 1, - PyDoc_STR("(long maxMilliSecToUse) -> None")}, - {"PrerollMovie", (PyCFunction)MovieObj_PrerollMovie, 1, - PyDoc_STR("(TimeValue time, Fixed Rate) -> None")}, - {"AbortPrePrerollMovie", (PyCFunction)MovieObj_AbortPrePrerollMovie, 1, - PyDoc_STR("(OSErr err) -> None")}, - {"LoadMovieIntoRam", (PyCFunction)MovieObj_LoadMovieIntoRam, 1, - PyDoc_STR("(TimeValue time, TimeValue duration, long flags) -> None")}, - {"SetMovieActive", (PyCFunction)MovieObj_SetMovieActive, 1, - PyDoc_STR("(Boolean active) -> None")}, - {"GetMovieActive", (PyCFunction)MovieObj_GetMovieActive, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"StartMovie", (PyCFunction)MovieObj_StartMovie, 1, - PyDoc_STR("() -> None")}, - {"StopMovie", (PyCFunction)MovieObj_StopMovie, 1, - PyDoc_STR("() -> None")}, - {"GoToBeginningOfMovie", (PyCFunction)MovieObj_GoToBeginningOfMovie, 1, - PyDoc_STR("() -> None")}, - {"GoToEndOfMovie", (PyCFunction)MovieObj_GoToEndOfMovie, 1, - PyDoc_STR("() -> None")}, - {"IsMovieDone", (PyCFunction)MovieObj_IsMovieDone, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"GetMoviePreviewMode", (PyCFunction)MovieObj_GetMoviePreviewMode, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"SetMoviePreviewMode", (PyCFunction)MovieObj_SetMoviePreviewMode, 1, - PyDoc_STR("(Boolean usePreview) -> None")}, - {"ShowMoviePoster", (PyCFunction)MovieObj_ShowMoviePoster, 1, - PyDoc_STR("() -> None")}, - {"GetMovieTimeBase", (PyCFunction)MovieObj_GetMovieTimeBase, 1, - PyDoc_STR("() -> (TimeBase _rv)")}, - {"SetMovieMasterTimeBase", (PyCFunction)MovieObj_SetMovieMasterTimeBase, 1, - PyDoc_STR("(TimeBase tb, TimeRecord slaveZero) -> None")}, - {"SetMovieMasterClock", (PyCFunction)MovieObj_SetMovieMasterClock, 1, - PyDoc_STR("(Component clockMeister, TimeRecord slaveZero) -> None")}, - {"ChooseMovieClock", (PyCFunction)MovieObj_ChooseMovieClock, 1, - PyDoc_STR("(long flags) -> None")}, - {"GetMovieGWorld", (PyCFunction)MovieObj_GetMovieGWorld, 1, - PyDoc_STR("() -> (CGrafPtr port, GDHandle gdh)")}, - {"SetMovieGWorld", (PyCFunction)MovieObj_SetMovieGWorld, 1, - PyDoc_STR("(CGrafPtr port, GDHandle gdh) -> None")}, - {"GetMovieNaturalBoundsRect", (PyCFunction)MovieObj_GetMovieNaturalBoundsRect, 1, - PyDoc_STR("() -> (Rect naturalBounds)")}, - {"GetNextTrackForCompositing", (PyCFunction)MovieObj_GetNextTrackForCompositing, 1, - PyDoc_STR("(Track theTrack) -> (Track _rv)")}, - {"GetPrevTrackForCompositing", (PyCFunction)MovieObj_GetPrevTrackForCompositing, 1, - PyDoc_STR("(Track theTrack) -> (Track _rv)")}, - {"GetMoviePict", (PyCFunction)MovieObj_GetMoviePict, 1, - PyDoc_STR("(TimeValue time) -> (PicHandle _rv)")}, - {"GetMoviePosterPict", (PyCFunction)MovieObj_GetMoviePosterPict, 1, - PyDoc_STR("() -> (PicHandle _rv)")}, - {"UpdateMovie", (PyCFunction)MovieObj_UpdateMovie, 1, - PyDoc_STR("() -> None")}, - {"InvalidateMovieRegion", (PyCFunction)MovieObj_InvalidateMovieRegion, 1, - PyDoc_STR("(RgnHandle invalidRgn) -> None")}, - {"GetMovieBox", (PyCFunction)MovieObj_GetMovieBox, 1, - PyDoc_STR("() -> (Rect boxRect)")}, - {"SetMovieBox", (PyCFunction)MovieObj_SetMovieBox, 1, - PyDoc_STR("(Rect boxRect) -> None")}, - {"GetMovieDisplayClipRgn", (PyCFunction)MovieObj_GetMovieDisplayClipRgn, 1, - PyDoc_STR("() -> (RgnHandle _rv)")}, - {"SetMovieDisplayClipRgn", (PyCFunction)MovieObj_SetMovieDisplayClipRgn, 1, - PyDoc_STR("(RgnHandle theClip) -> None")}, - {"GetMovieClipRgn", (PyCFunction)MovieObj_GetMovieClipRgn, 1, - PyDoc_STR("() -> (RgnHandle _rv)")}, - {"SetMovieClipRgn", (PyCFunction)MovieObj_SetMovieClipRgn, 1, - PyDoc_STR("(RgnHandle theClip) -> None")}, - {"GetMovieDisplayBoundsRgn", (PyCFunction)MovieObj_GetMovieDisplayBoundsRgn, 1, - PyDoc_STR("() -> (RgnHandle _rv)")}, - {"GetMovieBoundsRgn", (PyCFunction)MovieObj_GetMovieBoundsRgn, 1, - PyDoc_STR("() -> (RgnHandle _rv)")}, - {"SetMovieVideoOutput", (PyCFunction)MovieObj_SetMovieVideoOutput, 1, - PyDoc_STR("(ComponentInstance vout) -> None")}, - {"PutMovieIntoHandle", (PyCFunction)MovieObj_PutMovieIntoHandle, 1, - PyDoc_STR("(Handle publicMovie) -> None")}, - {"PutMovieIntoDataFork", (PyCFunction)MovieObj_PutMovieIntoDataFork, 1, - PyDoc_STR("(short fRefNum, long offset, long maxSize) -> None")}, - {"PutMovieIntoDataFork64", (PyCFunction)MovieObj_PutMovieIntoDataFork64, 1, - PyDoc_STR("(long fRefNum, wide offset, unsigned long maxSize) -> None")}, - {"PutMovieIntoStorage", (PyCFunction)MovieObj_PutMovieIntoStorage, 1, - PyDoc_STR("(DataHandler dh, wide offset, unsigned long maxSize) -> None")}, - {"PutMovieForDataRefIntoHandle", (PyCFunction)MovieObj_PutMovieForDataRefIntoHandle, 1, - PyDoc_STR("(Handle dataRef, OSType dataRefType, Handle publicMovie) -> None")}, - {"GetMovieCreationTime", (PyCFunction)MovieObj_GetMovieCreationTime, 1, - PyDoc_STR("() -> (unsigned long _rv)")}, - {"GetMovieModificationTime", (PyCFunction)MovieObj_GetMovieModificationTime, 1, - PyDoc_STR("() -> (unsigned long _rv)")}, - {"GetMovieTimeScale", (PyCFunction)MovieObj_GetMovieTimeScale, 1, - PyDoc_STR("() -> (TimeScale _rv)")}, - {"SetMovieTimeScale", (PyCFunction)MovieObj_SetMovieTimeScale, 1, - PyDoc_STR("(TimeScale timeScale) -> None")}, - {"GetMovieDuration", (PyCFunction)MovieObj_GetMovieDuration, 1, - PyDoc_STR("() -> (TimeValue _rv)")}, - {"GetMovieRate", (PyCFunction)MovieObj_GetMovieRate, 1, - PyDoc_STR("() -> (Fixed _rv)")}, - {"SetMovieRate", (PyCFunction)MovieObj_SetMovieRate, 1, - PyDoc_STR("(Fixed rate) -> None")}, - {"GetMoviePreferredRate", (PyCFunction)MovieObj_GetMoviePreferredRate, 1, - PyDoc_STR("() -> (Fixed _rv)")}, - {"SetMoviePreferredRate", (PyCFunction)MovieObj_SetMoviePreferredRate, 1, - PyDoc_STR("(Fixed rate) -> None")}, - {"GetMoviePreferredVolume", (PyCFunction)MovieObj_GetMoviePreferredVolume, 1, - PyDoc_STR("() -> (short _rv)")}, - {"SetMoviePreferredVolume", (PyCFunction)MovieObj_SetMoviePreferredVolume, 1, - PyDoc_STR("(short volume) -> None")}, - {"GetMovieVolume", (PyCFunction)MovieObj_GetMovieVolume, 1, - PyDoc_STR("() -> (short _rv)")}, - {"SetMovieVolume", (PyCFunction)MovieObj_SetMovieVolume, 1, - PyDoc_STR("(short volume) -> None")}, - {"GetMoviePreviewTime", (PyCFunction)MovieObj_GetMoviePreviewTime, 1, - PyDoc_STR("() -> (TimeValue previewTime, TimeValue previewDuration)")}, - {"SetMoviePreviewTime", (PyCFunction)MovieObj_SetMoviePreviewTime, 1, - PyDoc_STR("(TimeValue previewTime, TimeValue previewDuration) -> None")}, - {"GetMoviePosterTime", (PyCFunction)MovieObj_GetMoviePosterTime, 1, - PyDoc_STR("() -> (TimeValue _rv)")}, - {"SetMoviePosterTime", (PyCFunction)MovieObj_SetMoviePosterTime, 1, - PyDoc_STR("(TimeValue posterTime) -> None")}, - {"GetMovieSelection", (PyCFunction)MovieObj_GetMovieSelection, 1, - PyDoc_STR("() -> (TimeValue selectionTime, TimeValue selectionDuration)")}, - {"SetMovieSelection", (PyCFunction)MovieObj_SetMovieSelection, 1, - PyDoc_STR("(TimeValue selectionTime, TimeValue selectionDuration) -> None")}, - {"SetMovieActiveSegment", (PyCFunction)MovieObj_SetMovieActiveSegment, 1, - PyDoc_STR("(TimeValue startTime, TimeValue duration) -> None")}, - {"GetMovieActiveSegment", (PyCFunction)MovieObj_GetMovieActiveSegment, 1, - PyDoc_STR("() -> (TimeValue startTime, TimeValue duration)")}, - {"GetMovieTime", (PyCFunction)MovieObj_GetMovieTime, 1, - PyDoc_STR("() -> (TimeValue _rv, TimeRecord currentTime)")}, - {"SetMovieTime", (PyCFunction)MovieObj_SetMovieTime, 1, - PyDoc_STR("(TimeRecord newtime) -> None")}, - {"SetMovieTimeValue", (PyCFunction)MovieObj_SetMovieTimeValue, 1, - PyDoc_STR("(TimeValue newtime) -> None")}, - {"GetMovieUserData", (PyCFunction)MovieObj_GetMovieUserData, 1, - PyDoc_STR("() -> (UserData _rv)")}, - {"GetMovieTrackCount", (PyCFunction)MovieObj_GetMovieTrackCount, 1, - PyDoc_STR("() -> (long _rv)")}, - {"GetMovieTrack", (PyCFunction)MovieObj_GetMovieTrack, 1, - PyDoc_STR("(long trackID) -> (Track _rv)")}, - {"GetMovieIndTrack", (PyCFunction)MovieObj_GetMovieIndTrack, 1, - PyDoc_STR("(long index) -> (Track _rv)")}, - {"GetMovieIndTrackType", (PyCFunction)MovieObj_GetMovieIndTrackType, 1, - PyDoc_STR("(long index, OSType trackType, long flags) -> (Track _rv)")}, - {"NewMovieTrack", (PyCFunction)MovieObj_NewMovieTrack, 1, - PyDoc_STR("(Fixed width, Fixed height, short trackVolume) -> (Track _rv)")}, - {"SetAutoTrackAlternatesEnabled", (PyCFunction)MovieObj_SetAutoTrackAlternatesEnabled, 1, - PyDoc_STR("(Boolean enable) -> None")}, - {"SelectMovieAlternates", (PyCFunction)MovieObj_SelectMovieAlternates, 1, - PyDoc_STR("() -> None")}, - {"InsertMovieSegment", (PyCFunction)MovieObj_InsertMovieSegment, 1, - PyDoc_STR("(Movie dstMovie, TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn) -> None")}, - {"InsertEmptyMovieSegment", (PyCFunction)MovieObj_InsertEmptyMovieSegment, 1, - PyDoc_STR("(TimeValue dstIn, TimeValue dstDuration) -> None")}, - {"DeleteMovieSegment", (PyCFunction)MovieObj_DeleteMovieSegment, 1, - PyDoc_STR("(TimeValue startTime, TimeValue duration) -> None")}, - {"ScaleMovieSegment", (PyCFunction)MovieObj_ScaleMovieSegment, 1, - PyDoc_STR("(TimeValue startTime, TimeValue oldDuration, TimeValue newDuration) -> None")}, - {"CutMovieSelection", (PyCFunction)MovieObj_CutMovieSelection, 1, - PyDoc_STR("() -> (Movie _rv)")}, - {"CopyMovieSelection", (PyCFunction)MovieObj_CopyMovieSelection, 1, - PyDoc_STR("() -> (Movie _rv)")}, - {"PasteMovieSelection", (PyCFunction)MovieObj_PasteMovieSelection, 1, - PyDoc_STR("(Movie src) -> None")}, - {"AddMovieSelection", (PyCFunction)MovieObj_AddMovieSelection, 1, - PyDoc_STR("(Movie src) -> None")}, - {"ClearMovieSelection", (PyCFunction)MovieObj_ClearMovieSelection, 1, - PyDoc_STR("() -> None")}, - {"PutMovieIntoTypedHandle", (PyCFunction)MovieObj_PutMovieIntoTypedHandle, 1, - PyDoc_STR("(Track targetTrack, OSType handleType, Handle publicMovie, TimeValue start, TimeValue dur, long flags, ComponentInstance userComp) -> None")}, - {"CopyMovieSettings", (PyCFunction)MovieObj_CopyMovieSettings, 1, - PyDoc_STR("(Movie dstMovie) -> None")}, - {"ConvertMovieToFile", (PyCFunction)MovieObj_ConvertMovieToFile, 1, - PyDoc_STR("(Track onlyTrack, FSSpec outputFile, OSType fileType, OSType creator, ScriptCode scriptTag, long flags, ComponentInstance userComp) -> (short resID)")}, - {"GetMovieDataSize", (PyCFunction)MovieObj_GetMovieDataSize, 1, - PyDoc_STR("(TimeValue startTime, TimeValue duration) -> (long _rv)")}, - {"GetMovieDataSize64", (PyCFunction)MovieObj_GetMovieDataSize64, 1, - PyDoc_STR("(TimeValue startTime, TimeValue duration) -> (wide dataSize)")}, - {"PtInMovie", (PyCFunction)MovieObj_PtInMovie, 1, - PyDoc_STR("(Point pt) -> (Boolean _rv)")}, - {"SetMovieLanguage", (PyCFunction)MovieObj_SetMovieLanguage, 1, - PyDoc_STR("(long language) -> None")}, - {"CopyMovieUserData", (PyCFunction)MovieObj_CopyMovieUserData, 1, - PyDoc_STR("(Movie dstMovie, OSType copyRule) -> None")}, - {"GetMovieNextInterestingTime", (PyCFunction)MovieObj_GetMovieNextInterestingTime, 1, - PyDoc_STR("(short interestingTimeFlags, short numMediaTypes, OSType whichMediaTypes, TimeValue time, Fixed rate) -> (TimeValue interestingTime, TimeValue interestingDuration)")}, - {"AddMovieResource", (PyCFunction)MovieObj_AddMovieResource, 1, - PyDoc_STR("(short resRefNum, Str255 resName) -> (short resId)")}, - {"UpdateMovieResource", (PyCFunction)MovieObj_UpdateMovieResource, 1, - PyDoc_STR("(short resRefNum, short resId, Str255 resName) -> None")}, - {"AddMovieToStorage", (PyCFunction)MovieObj_AddMovieToStorage, 1, - PyDoc_STR("(DataHandler dh) -> None")}, - {"UpdateMovieInStorage", (PyCFunction)MovieObj_UpdateMovieInStorage, 1, - PyDoc_STR("(DataHandler dh) -> None")}, - {"HasMovieChanged", (PyCFunction)MovieObj_HasMovieChanged, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"ClearMovieChanged", (PyCFunction)MovieObj_ClearMovieChanged, 1, - PyDoc_STR("() -> None")}, - {"SetMovieDefaultDataRef", (PyCFunction)MovieObj_SetMovieDefaultDataRef, 1, - PyDoc_STR("(Handle dataRef, OSType dataRefType) -> None")}, - {"GetMovieDefaultDataRef", (PyCFunction)MovieObj_GetMovieDefaultDataRef, 1, - PyDoc_STR("() -> (Handle dataRef, OSType dataRefType)")}, - {"SetMovieColorTable", (PyCFunction)MovieObj_SetMovieColorTable, 1, - PyDoc_STR("(CTabHandle ctab) -> None")}, - {"GetMovieColorTable", (PyCFunction)MovieObj_GetMovieColorTable, 1, - PyDoc_STR("() -> (CTabHandle ctab)")}, - {"FlattenMovie", (PyCFunction)MovieObj_FlattenMovie, 1, - PyDoc_STR("(long movieFlattenFlags, FSSpec theFile, OSType creator, ScriptCode scriptTag, long createMovieFileFlags, Str255 resName) -> (short resId)")}, - {"FlattenMovieData", (PyCFunction)MovieObj_FlattenMovieData, 1, - PyDoc_STR("(long movieFlattenFlags, FSSpec theFile, OSType creator, ScriptCode scriptTag, long createMovieFileFlags) -> (Movie _rv)")}, - {"FlattenMovieDataToDataRef", (PyCFunction)MovieObj_FlattenMovieDataToDataRef, 1, - PyDoc_STR("(long movieFlattenFlags, Handle dataRef, OSType dataRefType, OSType creator, ScriptCode scriptTag, long createMovieFileFlags) -> (Movie _rv)")}, - {"MovieSearchText", (PyCFunction)MovieObj_MovieSearchText, 1, - PyDoc_STR("(Ptr text, long size, long searchFlags) -> (Track searchTrack, TimeValue searchTime, long searchOffset)")}, - {"GetPosterBox", (PyCFunction)MovieObj_GetPosterBox, 1, - PyDoc_STR("() -> (Rect boxRect)")}, - {"SetPosterBox", (PyCFunction)MovieObj_SetPosterBox, 1, - PyDoc_STR("(Rect boxRect) -> None")}, - {"GetMovieSegmentDisplayBoundsRgn", (PyCFunction)MovieObj_GetMovieSegmentDisplayBoundsRgn, 1, - PyDoc_STR("(TimeValue time, TimeValue duration) -> (RgnHandle _rv)")}, - {"GetMovieStatus", (PyCFunction)MovieObj_GetMovieStatus, 1, - PyDoc_STR("() -> (ComponentResult _rv, Track firstProblemTrack)")}, - {"NewMovieController", (PyCFunction)MovieObj_NewMovieController, 1, - PyDoc_STR("(Rect movieRect, long someFlags) -> (MovieController _rv)")}, - {"PutMovieOnScrap", (PyCFunction)MovieObj_PutMovieOnScrap, 1, - PyDoc_STR("(long movieScrapFlags) -> None")}, - {"SetMoviePlayHints", (PyCFunction)MovieObj_SetMoviePlayHints, 1, - PyDoc_STR("(long flags, long flagsMask) -> None")}, - {"GetMaxLoadedTimeInMovie", (PyCFunction)MovieObj_GetMaxLoadedTimeInMovie, 1, - PyDoc_STR("() -> (TimeValue time)")}, - {"QTMovieNeedsTimeTable", (PyCFunction)MovieObj_QTMovieNeedsTimeTable, 1, - PyDoc_STR("() -> (Boolean needsTimeTable)")}, - {"QTGetDataRefMaxFileOffset", (PyCFunction)MovieObj_QTGetDataRefMaxFileOffset, 1, - PyDoc_STR("(OSType dataRefType, Handle dataRef) -> (long offset)")}, - {NULL, NULL, 0} -}; - -#define MovieObj_getsetlist NULL - - -#define MovieObj_compare NULL - -#define MovieObj_repr NULL - -#define MovieObj_hash NULL -#define MovieObj_tp_init 0 - -#define MovieObj_tp_alloc PyType_GenericAlloc - -static PyObject *MovieObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - Movie itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, MovieObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((MovieObject *)_self)->ob_itself = itself; - return _self; -} - -#define MovieObj_tp_free PyObject_Del - - -PyTypeObject Movie_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Qt.Movie", /*tp_name*/ - sizeof(MovieObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) MovieObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) MovieObj_compare, /*tp_compare*/ - (reprfunc) MovieObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) MovieObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - MovieObj_methods, /* tp_methods */ - 0, /*tp_members*/ - MovieObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - MovieObj_tp_init, /* tp_init */ - MovieObj_tp_alloc, /* tp_alloc */ - MovieObj_tp_new, /* tp_new */ - MovieObj_tp_free, /* tp_free */ -}; - -/* --------------------- End object type Movie ---------------------- */ - - -/* ---------------------- Object type SGOutput ---------------------- */ - -PyTypeObject SGOutput_Type; - -#define SGOutputObj_Check(x) ((x)->ob_type == &SGOutput_Type || PyObject_TypeCheck((x), &SGOutput_Type)) - -typedef struct SGOutputObject { - PyObject_HEAD - SGOutput ob_itself; -} SGOutputObject; - -PyObject *SGOutputObj_New(SGOutput itself) -{ - SGOutputObject *it; - if (itself == NULL) { - PyErr_SetString(Qt_Error,"Cannot create SGOutput from NULL pointer"); - return NULL; - } - it = PyObject_NEW(SGOutputObject, &SGOutput_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int SGOutputObj_Convert(PyObject *v, SGOutput *p_itself) -{ - if (v == Py_None) - { - *p_itself = NULL; - return 1; - } - if (!SGOutputObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "SGOutput required"); - return 0; - } - *p_itself = ((SGOutputObject *)v)->ob_itself; - return 1; -} - -static void SGOutputObj_dealloc(SGOutputObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyMethodDef SGOutputObj_methods[] = { - {NULL, NULL, 0} -}; - -#define SGOutputObj_getsetlist NULL - - -#define SGOutputObj_compare NULL - -#define SGOutputObj_repr NULL - -#define SGOutputObj_hash NULL -#define SGOutputObj_tp_init 0 - -#define SGOutputObj_tp_alloc PyType_GenericAlloc - -static PyObject *SGOutputObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - SGOutput itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, SGOutputObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((SGOutputObject *)_self)->ob_itself = itself; - return _self; -} - -#define SGOutputObj_tp_free PyObject_Del - - -PyTypeObject SGOutput_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Qt.SGOutput", /*tp_name*/ - sizeof(SGOutputObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) SGOutputObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) SGOutputObj_compare, /*tp_compare*/ - (reprfunc) SGOutputObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) SGOutputObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - SGOutputObj_methods, /* tp_methods */ - 0, /*tp_members*/ - SGOutputObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - SGOutputObj_tp_init, /* tp_init */ - SGOutputObj_tp_alloc, /* tp_alloc */ - SGOutputObj_tp_new, /* tp_new */ - SGOutputObj_tp_free, /* tp_free */ -}; - -/* -------------------- End object type SGOutput -------------------- */ - - -static PyObject *Qt_EnterMovies(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef EnterMovies - PyMac_PRECHECK(EnterMovies); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = EnterMovies(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_ExitMovies(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ExitMovies - PyMac_PRECHECK(ExitMovies); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ExitMovies(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_GetMoviesError(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef GetMoviesError - PyMac_PRECHECK(GetMoviesError); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetMoviesError(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_ClearMoviesStickyError(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ClearMoviesStickyError - PyMac_PRECHECK(ClearMoviesStickyError); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ClearMoviesStickyError(); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_GetMoviesStickyError(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef GetMoviesStickyError - PyMac_PRECHECK(GetMoviesStickyError); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetMoviesStickyError(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_QTGetWallClockTimeBase(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - TimeBase wallClockTimeBase; -#ifndef QTGetWallClockTimeBase - PyMac_PRECHECK(QTGetWallClockTimeBase); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = QTGetWallClockTimeBase(&wallClockTimeBase); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - TimeBaseObj_New, wallClockTimeBase); - return _res; -} - -static PyObject *Qt_QTIdleManagerOpen(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - IdleManager _rv; -#ifndef QTIdleManagerOpen - PyMac_PRECHECK(QTIdleManagerOpen); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = QTIdleManagerOpen(); - _res = Py_BuildValue("O&", - IdleManagerObj_New, _rv); - return _res; -} - -static PyObject *Qt_CreateMovieControl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - WindowPtr theWindow; - Rect localRect; - Movie theMovie; - UInt32 options; - ControlHandle returnedControl; -#ifndef CreateMovieControl - PyMac_PRECHECK(CreateMovieControl); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - WinObj_Convert, &theWindow, - MovieObj_Convert, &theMovie, - &options)) - return NULL; - _err = CreateMovieControl(theWindow, - &localRect, - theMovie, - options, - &returnedControl); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - PyMac_BuildRect, &localRect, - CtlObj_New, returnedControl); - return _res; -} - -static PyObject *Qt_DisposeMatte(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PixMapHandle theMatte; -#ifndef DisposeMatte - PyMac_PRECHECK(DisposeMatte); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theMatte)) - return NULL; - DisposeMatte(theMatte); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_NewMovie(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Movie _rv; - long flags; -#ifndef NewMovie - PyMac_PRECHECK(NewMovie); -#endif - if (!PyArg_ParseTuple(_args, "l", - &flags)) - return NULL; - _rv = NewMovie(flags); - _res = Py_BuildValue("O&", - MovieObj_New, _rv); - return _res; -} - -static PyObject *Qt_QTGetTimeUntilNextTask(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long duration; - long scale; -#ifndef QTGetTimeUntilNextTask - PyMac_PRECHECK(QTGetTimeUntilNextTask); -#endif - if (!PyArg_ParseTuple(_args, "l", - &scale)) - return NULL; - _err = QTGetTimeUntilNextTask(&duration, - scale); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - duration); - return _res; -} - -static PyObject *Qt_GetDataHandler(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Component _rv; - Handle dataRef; - OSType dataHandlerSubType; - long flags; -#ifndef GetDataHandler - PyMac_PRECHECK(GetDataHandler); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataHandlerSubType, - &flags)) - return NULL; - _rv = GetDataHandler(dataRef, - dataHandlerSubType, - flags); - _res = Py_BuildValue("O&", - CmpObj_New, _rv); - return _res; -} - -static PyObject *Qt_PasteHandleIntoMovie(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle h; - OSType handleType; - Movie theMovie; - long flags; - ComponentInstance userComp; -#ifndef PasteHandleIntoMovie - PyMac_PRECHECK(PasteHandleIntoMovie); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&lO&", - ResObj_Convert, &h, - PyMac_GetOSType, &handleType, - MovieObj_Convert, &theMovie, - &flags, - CmpInstObj_Convert, &userComp)) - return NULL; - _err = PasteHandleIntoMovie(h, - handleType, - theMovie, - flags, - userComp); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_GetMovieImporterForDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType dataRefType; - Handle dataRef; - long flags; - Component importer; -#ifndef GetMovieImporterForDataRef - PyMac_PRECHECK(GetMovieImporterForDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - PyMac_GetOSType, &dataRefType, - ResObj_Convert, &dataRef, - &flags)) - return NULL; - _err = GetMovieImporterForDataRef(dataRefType, - dataRef, - flags, - &importer); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CmpObj_New, importer); - return _res; -} - -static PyObject *Qt_QTGetMIMETypeInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - char* mimeStringStart; - short mimeStringLength; - OSType infoSelector; - void * infoDataPtr; - long infoDataSize; -#ifndef QTGetMIMETypeInfo - PyMac_PRECHECK(QTGetMIMETypeInfo); -#endif - if (!PyArg_ParseTuple(_args, "shO&s", - &mimeStringStart, - &mimeStringLength, - PyMac_GetOSType, &infoSelector, - &infoDataPtr)) - return NULL; - _err = QTGetMIMETypeInfo(mimeStringStart, - mimeStringLength, - infoSelector, - infoDataPtr, - &infoDataSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - infoDataSize); - return _res; -} - -static PyObject *Qt_TrackTimeToMediaTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeValue _rv; - TimeValue value; - Track theTrack; -#ifndef TrackTimeToMediaTime - PyMac_PRECHECK(TrackTimeToMediaTime); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &value, - TrackObj_Convert, &theTrack)) - return NULL; - _rv = TrackTimeToMediaTime(value, - theTrack); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_NewUserData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - UserData theUserData; -#ifndef NewUserData - PyMac_PRECHECK(NewUserData); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = NewUserData(&theUserData); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - UserDataObj_New, theUserData); - return _res; -} - -static PyObject *Qt_NewUserDataFromHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle h; - UserData theUserData; -#ifndef NewUserDataFromHandle - PyMac_PRECHECK(NewUserDataFromHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &h)) - return NULL; - _err = NewUserDataFromHandle(h, - &theUserData); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - UserDataObj_New, theUserData); - return _res; -} - -static PyObject *Qt_CreateMovieFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec fileSpec; - OSType creator; - ScriptCode scriptTag; - long createMovieFileFlags; - short resRefNum; - Movie newmovie; -#ifndef CreateMovieFile - PyMac_PRECHECK(CreateMovieFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hl", - PyMac_GetFSSpec, &fileSpec, - PyMac_GetOSType, &creator, - &scriptTag, - &createMovieFileFlags)) - return NULL; - _err = CreateMovieFile(&fileSpec, - creator, - scriptTag, - createMovieFileFlags, - &resRefNum, - &newmovie); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("hO&", - resRefNum, - MovieObj_New, newmovie); - return _res; -} - -static PyObject *Qt_OpenMovieFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec fileSpec; - short resRefNum; - SInt8 permission; -#ifndef OpenMovieFile - PyMac_PRECHECK(OpenMovieFile); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - PyMac_GetFSSpec, &fileSpec, - &permission)) - return NULL; - _err = OpenMovieFile(&fileSpec, - &resRefNum, - permission); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - resRefNum); - return _res; -} - -static PyObject *Qt_CloseMovieFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short resRefNum; -#ifndef CloseMovieFile - PyMac_PRECHECK(CloseMovieFile); -#endif - if (!PyArg_ParseTuple(_args, "h", - &resRefNum)) - return NULL; - _err = CloseMovieFile(resRefNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_DeleteMovieFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec fileSpec; -#ifndef DeleteMovieFile - PyMac_PRECHECK(DeleteMovieFile); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFSSpec, &fileSpec)) - return NULL; - _err = DeleteMovieFile(&fileSpec); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_NewMovieFromFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Movie theMovie; - short resRefNum; - short resId; - short newMovieFlags; - Boolean dataRefWasChanged; -#ifndef NewMovieFromFile - PyMac_PRECHECK(NewMovieFromFile); -#endif - if (!PyArg_ParseTuple(_args, "hhh", - &resRefNum, - &resId, - &newMovieFlags)) - return NULL; - _err = NewMovieFromFile(&theMovie, - resRefNum, - &resId, - (StringPtr)0, - newMovieFlags, - &dataRefWasChanged); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&hb", - MovieObj_New, theMovie, - resId, - dataRefWasChanged); - return _res; -} - -static PyObject *Qt_NewMovieFromHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Movie theMovie; - Handle h; - short newMovieFlags; - Boolean dataRefWasChanged; -#ifndef NewMovieFromHandle - PyMac_PRECHECK(NewMovieFromHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - ResObj_Convert, &h, - &newMovieFlags)) - return NULL; - _err = NewMovieFromHandle(&theMovie, - h, - newMovieFlags, - &dataRefWasChanged); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&b", - MovieObj_New, theMovie, - dataRefWasChanged); - return _res; -} - -static PyObject *Qt_NewMovieFromDataFork(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Movie theMovie; - short fRefNum; - long fileOffset; - short newMovieFlags; - Boolean dataRefWasChanged; -#ifndef NewMovieFromDataFork - PyMac_PRECHECK(NewMovieFromDataFork); -#endif - if (!PyArg_ParseTuple(_args, "hlh", - &fRefNum, - &fileOffset, - &newMovieFlags)) - return NULL; - _err = NewMovieFromDataFork(&theMovie, - fRefNum, - fileOffset, - newMovieFlags, - &dataRefWasChanged); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&b", - MovieObj_New, theMovie, - dataRefWasChanged); - return _res; -} - -static PyObject *Qt_NewMovieFromDataFork64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Movie theMovie; - long fRefNum; - wide fileOffset; - short newMovieFlags; - Boolean dataRefWasChanged; -#ifndef NewMovieFromDataFork64 - PyMac_PRECHECK(NewMovieFromDataFork64); -#endif - if (!PyArg_ParseTuple(_args, "lO&h", - &fRefNum, - PyMac_Getwide, &fileOffset, - &newMovieFlags)) - return NULL; - _err = NewMovieFromDataFork64(&theMovie, - fRefNum, - &fileOffset, - newMovieFlags, - &dataRefWasChanged); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&b", - MovieObj_New, theMovie, - dataRefWasChanged); - return _res; -} - -static PyObject *Qt_NewMovieFromDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Movie m; - short flags; - short id; - Handle dataRef; - OSType dtaRefType; -#ifndef NewMovieFromDataRef - PyMac_PRECHECK(NewMovieFromDataRef); -#endif - if (!PyArg_ParseTuple(_args, "hO&O&", - &flags, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dtaRefType)) - return NULL; - _err = NewMovieFromDataRef(&m, - flags, - &id, - dataRef, - dtaRefType); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&h", - MovieObj_New, m, - id); - return _res; -} - -static PyObject *Qt_NewMovieFromStorageOffset(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Movie theMovie; - DataHandler dh; - wide fileOffset; - short newMovieFlags; - Boolean dataRefWasCataRefType; -#ifndef NewMovieFromStorageOffset - PyMac_PRECHECK(NewMovieFromStorageOffset); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - CmpInstObj_Convert, &dh, - PyMac_Getwide, &fileOffset, - &newMovieFlags)) - return NULL; - _err = NewMovieFromStorageOffset(&theMovie, - dh, - &fileOffset, - newMovieFlags, - &dataRefWasCataRefType); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&b", - MovieObj_New, theMovie, - dataRefWasCataRefType); - return _res; -} - -static PyObject *Qt_NewMovieForDataRefFromHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Movie theMovie; - Handle h; - short newMovieFlags; - Boolean dataRefWasChanged; - Handle dataRef; - OSType dataRefType; -#ifndef NewMovieForDataRefFromHandle - PyMac_PRECHECK(NewMovieForDataRefFromHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&hO&O&", - ResObj_Convert, &h, - &newMovieFlags, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType)) - return NULL; - _err = NewMovieForDataRefFromHandle(&theMovie, - h, - newMovieFlags, - &dataRefWasChanged, - dataRef, - dataRefType); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&b", - MovieObj_New, theMovie, - dataRefWasChanged); - return _res; -} - -static PyObject *Qt_RemoveMovieResource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short resRefNum; - short resId; -#ifndef RemoveMovieResource - PyMac_PRECHECK(RemoveMovieResource); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &resRefNum, - &resId)) - return NULL; - _err = RemoveMovieResource(resRefNum, - resId); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_CreateMovieStorage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle dataRef; - OSType dataRefType; - OSType creator; - ScriptCode scriptTag; - long createMovieFileFlags; - DataHandler outDataHandler; - Movie newmovie; -#ifndef CreateMovieStorage - PyMac_PRECHECK(CreateMovieStorage); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&hl", - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType, - PyMac_GetOSType, &creator, - &scriptTag, - &createMovieFileFlags)) - return NULL; - _err = CreateMovieStorage(dataRef, - dataRefType, - creator, - scriptTag, - createMovieFileFlags, - &outDataHandler, - &newmovie); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - CmpInstObj_New, outDataHandler, - MovieObj_New, newmovie); - return _res; -} - -static PyObject *Qt_OpenMovieStorage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle dataRef; - OSType dataRefType; - long flags; - DataHandler outDataHandler; -#ifndef OpenMovieStorage - PyMac_PRECHECK(OpenMovieStorage); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType, - &flags)) - return NULL; - _err = OpenMovieStorage(dataRef, - dataRefType, - flags, - &outDataHandler); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CmpInstObj_New, outDataHandler); - return _res; -} - -static PyObject *Qt_CloseMovieStorage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - DataHandler dh; -#ifndef CloseMovieStorage - PyMac_PRECHECK(CloseMovieStorage); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _err = CloseMovieStorage(dh); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_DeleteMovieStorage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle dataRef; - OSType dataRefType; -#ifndef DeleteMovieStorage - PyMac_PRECHECK(DeleteMovieStorage); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType)) - return NULL; - _err = DeleteMovieStorage(dataRef, - dataRefType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_CreateShortcutMovieFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec fileSpec; - OSType creator; - ScriptCode scriptTag; - long createMovieFileFlags; - Handle targetDataRef; - OSType targetDataRefType; -#ifndef CreateShortcutMovieFile - PyMac_PRECHECK(CreateShortcutMovieFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hlO&O&", - PyMac_GetFSSpec, &fileSpec, - PyMac_GetOSType, &creator, - &scriptTag, - &createMovieFileFlags, - ResObj_Convert, &targetDataRef, - PyMac_GetOSType, &targetDataRefType)) - return NULL; - _err = CreateShortcutMovieFile(&fileSpec, - creator, - scriptTag, - createMovieFileFlags, - targetDataRef, - targetDataRefType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_CanQuickTimeOpenFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec fileSpec; - OSType fileType; - OSType fileNameExtension; - Boolean outCanOpenWithGraphicsImporter; - Boolean outCanOpenAsMovie; - Boolean outPreferGraphicsImporter; - UInt32 inFlags; -#ifndef CanQuickTimeOpenFile - PyMac_PRECHECK(CanQuickTimeOpenFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&l", - PyMac_GetFSSpec, &fileSpec, - PyMac_GetOSType, &fileType, - PyMac_GetOSType, &fileNameExtension, - &inFlags)) - return NULL; - _err = CanQuickTimeOpenFile(&fileSpec, - fileType, - fileNameExtension, - &outCanOpenWithGraphicsImporter, - &outCanOpenAsMovie, - &outPreferGraphicsImporter, - inFlags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("bbb", - outCanOpenWithGraphicsImporter, - outCanOpenAsMovie, - outPreferGraphicsImporter); - return _res; -} - -static PyObject *Qt_CanQuickTimeOpenDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle dataRef; - OSType dataRefType; - Boolean outCanOpenWithGraphicsImporter; - Boolean outCanOpenAsMovie; - Boolean outPreferGraphicsImporter; - UInt32 inFlags; -#ifndef CanQuickTimeOpenDataRef - PyMac_PRECHECK(CanQuickTimeOpenDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType, - &inFlags)) - return NULL; - _err = CanQuickTimeOpenDataRef(dataRef, - dataRefType, - &outCanOpenWithGraphicsImporter, - &outCanOpenAsMovie, - &outPreferGraphicsImporter, - inFlags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("bbb", - outCanOpenWithGraphicsImporter, - outCanOpenAsMovie, - outPreferGraphicsImporter); - return _res; -} - -static PyObject *Qt_NewMovieFromScrap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Movie _rv; - long newMovieFlags; -#ifndef NewMovieFromScrap - PyMac_PRECHECK(NewMovieFromScrap); -#endif - if (!PyArg_ParseTuple(_args, "l", - &newMovieFlags)) - return NULL; - _rv = NewMovieFromScrap(newMovieFlags); - _res = Py_BuildValue("O&", - MovieObj_New, _rv); - return _res; -} - -static PyObject *Qt_QTNewAlias(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec fss; - AliasHandle alias; - Boolean minimal; -#ifndef QTNewAlias - PyMac_PRECHECK(QTNewAlias); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - PyMac_GetFSSpec, &fss, - &minimal)) - return NULL; - _err = QTNewAlias(&fss, - &alias, - minimal); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, alias); - return _res; -} - -static PyObject *Qt_EndFullScreen(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Ptr fullState; - long flags; -#ifndef EndFullScreen - PyMac_PRECHECK(EndFullScreen); -#endif - if (!PyArg_ParseTuple(_args, "sl", - &fullState, - &flags)) - return NULL; - _err = EndFullScreen(fullState, - flags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_AddSoundDescriptionExtension(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SoundDescriptionHandle desc; - Handle extension; - OSType idType; -#ifndef AddSoundDescriptionExtension - PyMac_PRECHECK(AddSoundDescriptionExtension); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - ResObj_Convert, &desc, - ResObj_Convert, &extension, - PyMac_GetOSType, &idType)) - return NULL; - _err = AddSoundDescriptionExtension(desc, - extension, - idType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_GetSoundDescriptionExtension(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SoundDescriptionHandle desc; - Handle extension; - OSType idType; -#ifndef GetSoundDescriptionExtension - PyMac_PRECHECK(GetSoundDescriptionExtension); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &desc, - PyMac_GetOSType, &idType)) - return NULL; - _err = GetSoundDescriptionExtension(desc, - &extension, - idType); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, extension); - return _res; -} - -static PyObject *Qt_RemoveSoundDescriptionExtension(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SoundDescriptionHandle desc; - OSType idType; -#ifndef RemoveSoundDescriptionExtension - PyMac_PRECHECK(RemoveSoundDescriptionExtension); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &desc, - PyMac_GetOSType, &idType)) - return NULL; - _err = RemoveSoundDescriptionExtension(desc, - idType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_QTIsStandardParameterDialogEvent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - EventRecord pEvent; - QTParameterDialog createdDialog; -#ifndef QTIsStandardParameterDialogEvent - PyMac_PRECHECK(QTIsStandardParameterDialogEvent); -#endif - if (!PyArg_ParseTuple(_args, "l", - &createdDialog)) - return NULL; - _err = QTIsStandardParameterDialogEvent(&pEvent, - createdDialog); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildEventRecord, &pEvent); - return _res; -} - -static PyObject *Qt_QTDismissStandardParameterDialog(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - QTParameterDialog createdDialog; -#ifndef QTDismissStandardParameterDialog - PyMac_PRECHECK(QTDismissStandardParameterDialog); -#endif - if (!PyArg_ParseTuple(_args, "l", - &createdDialog)) - return NULL; - _err = QTDismissStandardParameterDialog(createdDialog); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_QTStandardParameterDialogDoAction(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - QTParameterDialog createdDialog; - long action; - void * params; -#ifndef QTStandardParameterDialogDoAction - PyMac_PRECHECK(QTStandardParameterDialogDoAction); -#endif - if (!PyArg_ParseTuple(_args, "lls", - &createdDialog, - &action, - ¶ms)) - return NULL; - _err = QTStandardParameterDialogDoAction(createdDialog, - action, - params); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_QTRegisterAccessKey(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Str255 accessKeyType; - long flags; - Handle accessKey; -#ifndef QTRegisterAccessKey - PyMac_PRECHECK(QTRegisterAccessKey); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - PyMac_GetStr255, accessKeyType, - &flags, - ResObj_Convert, &accessKey)) - return NULL; - _err = QTRegisterAccessKey(accessKeyType, - flags, - accessKey); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_QTUnregisterAccessKey(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Str255 accessKeyType; - long flags; - Handle accessKey; -#ifndef QTUnregisterAccessKey - PyMac_PRECHECK(QTUnregisterAccessKey); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - PyMac_GetStr255, accessKeyType, - &flags, - ResObj_Convert, &accessKey)) - return NULL; - _err = QTUnregisterAccessKey(accessKeyType, - flags, - accessKey); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_QTGetSupportedRestrictions(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType inRestrictionClass; - UInt32 outRestrictionIDs; -#ifndef QTGetSupportedRestrictions - PyMac_PRECHECK(QTGetSupportedRestrictions); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &inRestrictionClass)) - return NULL; - _err = QTGetSupportedRestrictions(inRestrictionClass, - &outRestrictionIDs); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outRestrictionIDs); - return _res; -} - -static PyObject *Qt_QTTextToNativeText(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle theText; - long encoding; - long flags; -#ifndef QTTextToNativeText - PyMac_PRECHECK(QTTextToNativeText); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - ResObj_Convert, &theText, - &encoding, - &flags)) - return NULL; - _err = QTTextToNativeText(theText, - encoding, - flags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_VideoMediaResetStatistics(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; -#ifndef VideoMediaResetStatistics - PyMac_PRECHECK(VideoMediaResetStatistics); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = VideoMediaResetStatistics(mh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VideoMediaGetStatistics(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; -#ifndef VideoMediaGetStatistics - PyMac_PRECHECK(VideoMediaGetStatistics); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = VideoMediaGetStatistics(mh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VideoMediaGetStallCount(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - unsigned long stalls; -#ifndef VideoMediaGetStallCount - PyMac_PRECHECK(VideoMediaGetStallCount); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = VideoMediaGetStallCount(mh, - &stalls); - _res = Py_BuildValue("ll", - _rv, - stalls); - return _res; -} - -static PyObject *Qt_VideoMediaSetCodecParameter(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - CodecType cType; - OSType parameterID; - long parameterChangeSeed; - void * dataPtr; - long dataSize; -#ifndef VideoMediaSetCodecParameter - PyMac_PRECHECK(VideoMediaSetCodecParameter); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&lsl", - CmpInstObj_Convert, &mh, - PyMac_GetOSType, &cType, - PyMac_GetOSType, ¶meterID, - ¶meterChangeSeed, - &dataPtr, - &dataSize)) - return NULL; - _rv = VideoMediaSetCodecParameter(mh, - cType, - parameterID, - parameterChangeSeed, - dataPtr, - dataSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VideoMediaGetCodecParameter(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - CodecType cType; - OSType parameterID; - Handle outParameterData; -#ifndef VideoMediaGetCodecParameter - PyMac_PRECHECK(VideoMediaGetCodecParameter); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - CmpInstObj_Convert, &mh, - PyMac_GetOSType, &cType, - PyMac_GetOSType, ¶meterID, - ResObj_Convert, &outParameterData)) - return NULL; - _rv = VideoMediaGetCodecParameter(mh, - cType, - parameterID, - outParameterData); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TextMediaAddTextSample(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Ptr text; - unsigned long size; - short fontNumber; - short fontSize; - Style textFace; - RGBColor textColor; - RGBColor backColor; - short textJustification; - Rect textBox; - long displayFlags; - TimeValue scrollDelay; - short hiliteStart; - short hiliteEnd; - RGBColor rgbHiliteColor; - TimeValue duration; - TimeValue sampleTime; -#ifndef TextMediaAddTextSample - PyMac_PRECHECK(TextMediaAddTextSample); -#endif - if (!PyArg_ParseTuple(_args, "O&slhhbhllhhl", - CmpInstObj_Convert, &mh, - &text, - &size, - &fontNumber, - &fontSize, - &textFace, - &textJustification, - &displayFlags, - &scrollDelay, - &hiliteStart, - &hiliteEnd, - &duration)) - return NULL; - _rv = TextMediaAddTextSample(mh, - text, - size, - fontNumber, - fontSize, - textFace, - &textColor, - &backColor, - textJustification, - &textBox, - displayFlags, - scrollDelay, - hiliteStart, - hiliteEnd, - &rgbHiliteColor, - duration, - &sampleTime); - _res = Py_BuildValue("lO&O&O&O&l", - _rv, - QdRGB_New, &textColor, - QdRGB_New, &backColor, - PyMac_BuildRect, &textBox, - QdRGB_New, &rgbHiliteColor, - sampleTime); - return _res; -} - -static PyObject *Qt_TextMediaAddTESample(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - TEHandle hTE; - RGBColor backColor; - short textJustification; - Rect textBox; - long displayFlags; - TimeValue scrollDelay; - short hiliteStart; - short hiliteEnd; - RGBColor rgbHiliteColor; - TimeValue duration; - TimeValue sampleTime; -#ifndef TextMediaAddTESample - PyMac_PRECHECK(TextMediaAddTESample); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hllhhl", - CmpInstObj_Convert, &mh, - ResObj_Convert, &hTE, - &textJustification, - &displayFlags, - &scrollDelay, - &hiliteStart, - &hiliteEnd, - &duration)) - return NULL; - _rv = TextMediaAddTESample(mh, - hTE, - &backColor, - textJustification, - &textBox, - displayFlags, - scrollDelay, - hiliteStart, - hiliteEnd, - &rgbHiliteColor, - duration, - &sampleTime); - _res = Py_BuildValue("lO&O&O&l", - _rv, - QdRGB_New, &backColor, - PyMac_BuildRect, &textBox, - QdRGB_New, &rgbHiliteColor, - sampleTime); - return _res; -} - -static PyObject *Qt_TextMediaAddHiliteSample(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short hiliteStart; - short hiliteEnd; - RGBColor rgbHiliteColor; - TimeValue duration; - TimeValue sampleTime; -#ifndef TextMediaAddHiliteSample - PyMac_PRECHECK(TextMediaAddHiliteSample); -#endif - if (!PyArg_ParseTuple(_args, "O&hhl", - CmpInstObj_Convert, &mh, - &hiliteStart, - &hiliteEnd, - &duration)) - return NULL; - _rv = TextMediaAddHiliteSample(mh, - hiliteStart, - hiliteEnd, - &rgbHiliteColor, - duration, - &sampleTime); - _res = Py_BuildValue("lO&l", - _rv, - QdRGB_New, &rgbHiliteColor, - sampleTime); - return _res; -} - -static PyObject *Qt_TextMediaDrawRaw(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - GWorldPtr gw; - GDHandle gd; - void * data; - long dataSize; - TextDescriptionHandle tdh; -#ifndef TextMediaDrawRaw - PyMac_PRECHECK(TextMediaDrawRaw); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&slO&", - CmpInstObj_Convert, &mh, - GWorldObj_Convert, &gw, - OptResObj_Convert, &gd, - &data, - &dataSize, - ResObj_Convert, &tdh)) - return NULL; - _rv = TextMediaDrawRaw(mh, - gw, - gd, - data, - dataSize, - tdh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TextMediaSetTextProperty(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - TimeValue atMediaTime; - long propertyType; - void * data; - long dataSize; -#ifndef TextMediaSetTextProperty - PyMac_PRECHECK(TextMediaSetTextProperty); -#endif - if (!PyArg_ParseTuple(_args, "O&llsl", - CmpInstObj_Convert, &mh, - &atMediaTime, - &propertyType, - &data, - &dataSize)) - return NULL; - _rv = TextMediaSetTextProperty(mh, - atMediaTime, - propertyType, - data, - dataSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TextMediaRawSetup(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - GWorldPtr gw; - GDHandle gd; - void * data; - long dataSize; - TextDescriptionHandle tdh; - TimeValue sampleDuration; -#ifndef TextMediaRawSetup - PyMac_PRECHECK(TextMediaRawSetup); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&slO&l", - CmpInstObj_Convert, &mh, - GWorldObj_Convert, &gw, - OptResObj_Convert, &gd, - &data, - &dataSize, - ResObj_Convert, &tdh, - &sampleDuration)) - return NULL; - _rv = TextMediaRawSetup(mh, - gw, - gd, - data, - dataSize, - tdh, - sampleDuration); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TextMediaRawIdle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - GWorldPtr gw; - GDHandle gd; - TimeValue sampleTime; - long flagsIn; - long flagsOut; -#ifndef TextMediaRawIdle - PyMac_PRECHECK(TextMediaRawIdle); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&ll", - CmpInstObj_Convert, &mh, - GWorldObj_Convert, &gw, - OptResObj_Convert, &gd, - &sampleTime, - &flagsIn)) - return NULL; - _rv = TextMediaRawIdle(mh, - gw, - gd, - sampleTime, - flagsIn, - &flagsOut); - _res = Py_BuildValue("ll", - _rv, - flagsOut); - return _res; -} - -static PyObject *Qt_TextMediaGetTextProperty(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - TimeValue atMediaTime; - long propertyType; - void * data; - long dataSize; -#ifndef TextMediaGetTextProperty - PyMac_PRECHECK(TextMediaGetTextProperty); -#endif - if (!PyArg_ParseTuple(_args, "O&llsl", - CmpInstObj_Convert, &mh, - &atMediaTime, - &propertyType, - &data, - &dataSize)) - return NULL; - _rv = TextMediaGetTextProperty(mh, - atMediaTime, - propertyType, - data, - dataSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TextMediaFindNextText(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Ptr text; - long size; - short findFlags; - TimeValue startTime; - TimeValue foundTime; - TimeValue foundDuration; - long offset; -#ifndef TextMediaFindNextText - PyMac_PRECHECK(TextMediaFindNextText); -#endif - if (!PyArg_ParseTuple(_args, "O&slhl", - CmpInstObj_Convert, &mh, - &text, - &size, - &findFlags, - &startTime)) - return NULL; - _rv = TextMediaFindNextText(mh, - text, - size, - findFlags, - startTime, - &foundTime, - &foundDuration, - &offset); - _res = Py_BuildValue("llll", - _rv, - foundTime, - foundDuration, - offset); - return _res; -} - -static PyObject *Qt_TextMediaHiliteTextSample(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - TimeValue sampleTime; - short hiliteStart; - short hiliteEnd; - RGBColor rgbHiliteColor; -#ifndef TextMediaHiliteTextSample - PyMac_PRECHECK(TextMediaHiliteTextSample); -#endif - if (!PyArg_ParseTuple(_args, "O&lhh", - CmpInstObj_Convert, &mh, - &sampleTime, - &hiliteStart, - &hiliteEnd)) - return NULL; - _rv = TextMediaHiliteTextSample(mh, - sampleTime, - hiliteStart, - hiliteEnd, - &rgbHiliteColor); - _res = Py_BuildValue("lO&", - _rv, - QdRGB_New, &rgbHiliteColor); - return _res; -} - -static PyObject *Qt_TextMediaSetTextSampleData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - void * data; - OSType dataType; -#ifndef TextMediaSetTextSampleData - PyMac_PRECHECK(TextMediaSetTextSampleData); -#endif - if (!PyArg_ParseTuple(_args, "O&sO&", - CmpInstObj_Convert, &mh, - &data, - PyMac_GetOSType, &dataType)) - return NULL; - _rv = TextMediaSetTextSampleData(mh, - data, - dataType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SpriteMediaSetProperty(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short spriteIndex; - long propertyType; - void * propertyValue; -#ifndef SpriteMediaSetProperty - PyMac_PRECHECK(SpriteMediaSetProperty); -#endif - if (!PyArg_ParseTuple(_args, "O&hls", - CmpInstObj_Convert, &mh, - &spriteIndex, - &propertyType, - &propertyValue)) - return NULL; - _rv = SpriteMediaSetProperty(mh, - spriteIndex, - propertyType, - propertyValue); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SpriteMediaGetProperty(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short spriteIndex; - long propertyType; - void * propertyValue; -#ifndef SpriteMediaGetProperty - PyMac_PRECHECK(SpriteMediaGetProperty); -#endif - if (!PyArg_ParseTuple(_args, "O&hls", - CmpInstObj_Convert, &mh, - &spriteIndex, - &propertyType, - &propertyValue)) - return NULL; - _rv = SpriteMediaGetProperty(mh, - spriteIndex, - propertyType, - propertyValue); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SpriteMediaHitTestSprites(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long flags; - Point loc; - short spriteHitIndex; -#ifndef SpriteMediaHitTestSprites - PyMac_PRECHECK(SpriteMediaHitTestSprites); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - CmpInstObj_Convert, &mh, - &flags, - PyMac_GetPoint, &loc)) - return NULL; - _rv = SpriteMediaHitTestSprites(mh, - flags, - loc, - &spriteHitIndex); - _res = Py_BuildValue("lh", - _rv, - spriteHitIndex); - return _res; -} - -static PyObject *Qt_SpriteMediaCountSprites(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short numSprites; -#ifndef SpriteMediaCountSprites - PyMac_PRECHECK(SpriteMediaCountSprites); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = SpriteMediaCountSprites(mh, - &numSprites); - _res = Py_BuildValue("lh", - _rv, - numSprites); - return _res; -} - -static PyObject *Qt_SpriteMediaCountImages(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short numImages; -#ifndef SpriteMediaCountImages - PyMac_PRECHECK(SpriteMediaCountImages); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = SpriteMediaCountImages(mh, - &numImages); - _res = Py_BuildValue("lh", - _rv, - numImages); - return _res; -} - -static PyObject *Qt_SpriteMediaGetIndImageDescription(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short imageIndex; - ImageDescriptionHandle imageDescription; -#ifndef SpriteMediaGetIndImageDescription - PyMac_PRECHECK(SpriteMediaGetIndImageDescription); -#endif - if (!PyArg_ParseTuple(_args, "O&hO&", - CmpInstObj_Convert, &mh, - &imageIndex, - ResObj_Convert, &imageDescription)) - return NULL; - _rv = SpriteMediaGetIndImageDescription(mh, - imageIndex, - imageDescription); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SpriteMediaGetDisplayedSampleNumber(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long sampleNum; -#ifndef SpriteMediaGetDisplayedSampleNumber - PyMac_PRECHECK(SpriteMediaGetDisplayedSampleNumber); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = SpriteMediaGetDisplayedSampleNumber(mh, - &sampleNum); - _res = Py_BuildValue("ll", - _rv, - sampleNum); - return _res; -} - -static PyObject *Qt_SpriteMediaGetSpriteName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - QTAtomID spriteID; - Str255 spriteName; -#ifndef SpriteMediaGetSpriteName - PyMac_PRECHECK(SpriteMediaGetSpriteName); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - CmpInstObj_Convert, &mh, - &spriteID, - PyMac_GetStr255, spriteName)) - return NULL; - _rv = SpriteMediaGetSpriteName(mh, - spriteID, - spriteName); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SpriteMediaGetImageName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short imageIndex; - Str255 imageName; -#ifndef SpriteMediaGetImageName - PyMac_PRECHECK(SpriteMediaGetImageName); -#endif - if (!PyArg_ParseTuple(_args, "O&hO&", - CmpInstObj_Convert, &mh, - &imageIndex, - PyMac_GetStr255, imageName)) - return NULL; - _rv = SpriteMediaGetImageName(mh, - imageIndex, - imageName); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SpriteMediaSetSpriteProperty(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - QTAtomID spriteID; - long propertyType; - void * propertyValue; -#ifndef SpriteMediaSetSpriteProperty - PyMac_PRECHECK(SpriteMediaSetSpriteProperty); -#endif - if (!PyArg_ParseTuple(_args, "O&lls", - CmpInstObj_Convert, &mh, - &spriteID, - &propertyType, - &propertyValue)) - return NULL; - _rv = SpriteMediaSetSpriteProperty(mh, - spriteID, - propertyType, - propertyValue); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SpriteMediaGetSpriteProperty(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - QTAtomID spriteID; - long propertyType; - void * propertyValue; -#ifndef SpriteMediaGetSpriteProperty - PyMac_PRECHECK(SpriteMediaGetSpriteProperty); -#endif - if (!PyArg_ParseTuple(_args, "O&lls", - CmpInstObj_Convert, &mh, - &spriteID, - &propertyType, - &propertyValue)) - return NULL; - _rv = SpriteMediaGetSpriteProperty(mh, - spriteID, - propertyType, - propertyValue); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SpriteMediaHitTestAllSprites(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long flags; - Point loc; - QTAtomID spriteHitID; -#ifndef SpriteMediaHitTestAllSprites - PyMac_PRECHECK(SpriteMediaHitTestAllSprites); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - CmpInstObj_Convert, &mh, - &flags, - PyMac_GetPoint, &loc)) - return NULL; - _rv = SpriteMediaHitTestAllSprites(mh, - flags, - loc, - &spriteHitID); - _res = Py_BuildValue("ll", - _rv, - spriteHitID); - return _res; -} - -static PyObject *Qt_SpriteMediaHitTestOneSprite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - QTAtomID spriteID; - long flags; - Point loc; - Boolean wasHit; -#ifndef SpriteMediaHitTestOneSprite - PyMac_PRECHECK(SpriteMediaHitTestOneSprite); -#endif - if (!PyArg_ParseTuple(_args, "O&llO&", - CmpInstObj_Convert, &mh, - &spriteID, - &flags, - PyMac_GetPoint, &loc)) - return NULL; - _rv = SpriteMediaHitTestOneSprite(mh, - spriteID, - flags, - loc, - &wasHit); - _res = Py_BuildValue("lb", - _rv, - wasHit); - return _res; -} - -static PyObject *Qt_SpriteMediaSpriteIndexToID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short spriteIndex; - QTAtomID spriteID; -#ifndef SpriteMediaSpriteIndexToID - PyMac_PRECHECK(SpriteMediaSpriteIndexToID); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &mh, - &spriteIndex)) - return NULL; - _rv = SpriteMediaSpriteIndexToID(mh, - spriteIndex, - &spriteID); - _res = Py_BuildValue("ll", - _rv, - spriteID); - return _res; -} - -static PyObject *Qt_SpriteMediaSpriteIDToIndex(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - QTAtomID spriteID; - short spriteIndex; -#ifndef SpriteMediaSpriteIDToIndex - PyMac_PRECHECK(SpriteMediaSpriteIDToIndex); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &spriteID)) - return NULL; - _rv = SpriteMediaSpriteIDToIndex(mh, - spriteID, - &spriteIndex); - _res = Py_BuildValue("lh", - _rv, - spriteIndex); - return _res; -} - -static PyObject *Qt_SpriteMediaSetActionVariable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - QTAtomID variableID; - float value; -#ifndef SpriteMediaSetActionVariable - PyMac_PRECHECK(SpriteMediaSetActionVariable); -#endif - if (!PyArg_ParseTuple(_args, "O&lf", - CmpInstObj_Convert, &mh, - &variableID, - &value)) - return NULL; - _rv = SpriteMediaSetActionVariable(mh, - variableID, - &value); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SpriteMediaGetActionVariable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - QTAtomID variableID; - float value; -#ifndef SpriteMediaGetActionVariable - PyMac_PRECHECK(SpriteMediaGetActionVariable); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &variableID)) - return NULL; - _rv = SpriteMediaGetActionVariable(mh, - variableID, - &value); - _res = Py_BuildValue("lf", - _rv, - value); - return _res; -} - -static PyObject *Qt_SpriteMediaDisposeSprite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - QTAtomID spriteID; -#ifndef SpriteMediaDisposeSprite - PyMac_PRECHECK(SpriteMediaDisposeSprite); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &spriteID)) - return NULL; - _rv = SpriteMediaDisposeSprite(mh, - spriteID); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SpriteMediaSetActionVariableToString(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - QTAtomID variableID; - Ptr theCString; -#ifndef SpriteMediaSetActionVariableToString - PyMac_PRECHECK(SpriteMediaSetActionVariableToString); -#endif - if (!PyArg_ParseTuple(_args, "O&ls", - CmpInstObj_Convert, &mh, - &variableID, - &theCString)) - return NULL; - _rv = SpriteMediaSetActionVariableToString(mh, - variableID, - theCString); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SpriteMediaGetActionVariableAsString(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - QTAtomID variableID; - Handle theCString; -#ifndef SpriteMediaGetActionVariableAsString - PyMac_PRECHECK(SpriteMediaGetActionVariableAsString); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &variableID)) - return NULL; - _rv = SpriteMediaGetActionVariableAsString(mh, - variableID, - &theCString); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, theCString); - return _res; -} - -static PyObject *Qt_SpriteMediaNewImage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Handle dataRef; - OSType dataRefType; - QTAtomID desiredID; -#ifndef SpriteMediaNewImage - PyMac_PRECHECK(SpriteMediaNewImage); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&l", - CmpInstObj_Convert, &mh, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType, - &desiredID)) - return NULL; - _rv = SpriteMediaNewImage(mh, - dataRef, - dataRefType, - desiredID); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SpriteMediaDisposeImage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short imageIndex; -#ifndef SpriteMediaDisposeImage - PyMac_PRECHECK(SpriteMediaDisposeImage); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &mh, - &imageIndex)) - return NULL; - _rv = SpriteMediaDisposeImage(mh, - imageIndex); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SpriteMediaImageIndexToID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short imageIndex; - QTAtomID imageID; -#ifndef SpriteMediaImageIndexToID - PyMac_PRECHECK(SpriteMediaImageIndexToID); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &mh, - &imageIndex)) - return NULL; - _rv = SpriteMediaImageIndexToID(mh, - imageIndex, - &imageID); - _res = Py_BuildValue("ll", - _rv, - imageID); - return _res; -} - -static PyObject *Qt_SpriteMediaImageIDToIndex(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - QTAtomID imageID; - short imageIndex; -#ifndef SpriteMediaImageIDToIndex - PyMac_PRECHECK(SpriteMediaImageIDToIndex); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &imageID)) - return NULL; - _rv = SpriteMediaImageIDToIndex(mh, - imageID, - &imageIndex); - _res = Py_BuildValue("lh", - _rv, - imageIndex); - return _res; -} - -static PyObject *Qt_FlashMediaSetPan(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short xPercent; - short yPercent; -#ifndef FlashMediaSetPan - PyMac_PRECHECK(FlashMediaSetPan); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - CmpInstObj_Convert, &mh, - &xPercent, - &yPercent)) - return NULL; - _rv = FlashMediaSetPan(mh, - xPercent, - yPercent); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_FlashMediaSetZoom(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short factor; -#ifndef FlashMediaSetZoom - PyMac_PRECHECK(FlashMediaSetZoom); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &mh, - &factor)) - return NULL; - _rv = FlashMediaSetZoom(mh, - factor); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_FlashMediaSetZoomRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long left; - long top; - long right; - long bottom; -#ifndef FlashMediaSetZoomRect - PyMac_PRECHECK(FlashMediaSetZoomRect); -#endif - if (!PyArg_ParseTuple(_args, "O&llll", - CmpInstObj_Convert, &mh, - &left, - &top, - &right, - &bottom)) - return NULL; - _rv = FlashMediaSetZoomRect(mh, - left, - top, - right, - bottom); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_FlashMediaGetRefConBounds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long refCon; - long left; - long top; - long right; - long bottom; -#ifndef FlashMediaGetRefConBounds - PyMac_PRECHECK(FlashMediaGetRefConBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &refCon)) - return NULL; - _rv = FlashMediaGetRefConBounds(mh, - refCon, - &left, - &top, - &right, - &bottom); - _res = Py_BuildValue("lllll", - _rv, - left, - top, - right, - bottom); - return _res; -} - -static PyObject *Qt_FlashMediaGetRefConID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long refCon; - long refConID; -#ifndef FlashMediaGetRefConID - PyMac_PRECHECK(FlashMediaGetRefConID); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &refCon)) - return NULL; - _rv = FlashMediaGetRefConID(mh, - refCon, - &refConID); - _res = Py_BuildValue("ll", - _rv, - refConID); - return _res; -} - -static PyObject *Qt_FlashMediaIDToRefCon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long refConID; - long refCon; -#ifndef FlashMediaIDToRefCon - PyMac_PRECHECK(FlashMediaIDToRefCon); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &refConID)) - return NULL; - _rv = FlashMediaIDToRefCon(mh, - refConID, - &refCon); - _res = Py_BuildValue("ll", - _rv, - refCon); - return _res; -} - -static PyObject *Qt_FlashMediaGetDisplayedFrameNumber(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long flashFrameNumber; -#ifndef FlashMediaGetDisplayedFrameNumber - PyMac_PRECHECK(FlashMediaGetDisplayedFrameNumber); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = FlashMediaGetDisplayedFrameNumber(mh, - &flashFrameNumber); - _res = Py_BuildValue("ll", - _rv, - flashFrameNumber); - return _res; -} - -static PyObject *Qt_FlashMediaFrameNumberToMovieTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long flashFrameNumber; - TimeValue movieTime; -#ifndef FlashMediaFrameNumberToMovieTime - PyMac_PRECHECK(FlashMediaFrameNumberToMovieTime); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &flashFrameNumber)) - return NULL; - _rv = FlashMediaFrameNumberToMovieTime(mh, - flashFrameNumber, - &movieTime); - _res = Py_BuildValue("ll", - _rv, - movieTime); - return _res; -} - -static PyObject *Qt_FlashMediaFrameLabelToMovieTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Ptr theLabel; - TimeValue movieTime; -#ifndef FlashMediaFrameLabelToMovieTime - PyMac_PRECHECK(FlashMediaFrameLabelToMovieTime); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &mh, - &theLabel)) - return NULL; - _rv = FlashMediaFrameLabelToMovieTime(mh, - theLabel, - &movieTime); - _res = Py_BuildValue("ll", - _rv, - movieTime); - return _res; -} - -static PyObject *Qt_FlashMediaGetFlashVariable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - char path; - char name; - Handle theVariableCStringOut; -#ifndef FlashMediaGetFlashVariable - PyMac_PRECHECK(FlashMediaGetFlashVariable); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = FlashMediaGetFlashVariable(mh, - &path, - &name, - &theVariableCStringOut); - _res = Py_BuildValue("lccO&", - _rv, - path, - name, - ResObj_New, theVariableCStringOut); - return _res; -} - -static PyObject *Qt_FlashMediaSetFlashVariable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - char path; - char name; - char value; - Boolean updateFocus; -#ifndef FlashMediaSetFlashVariable - PyMac_PRECHECK(FlashMediaSetFlashVariable); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - CmpInstObj_Convert, &mh, - &updateFocus)) - return NULL; - _rv = FlashMediaSetFlashVariable(mh, - &path, - &name, - &value, - updateFocus); - _res = Py_BuildValue("lccc", - _rv, - path, - name, - value); - return _res; -} - -static PyObject *Qt_FlashMediaDoButtonActions(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - char path; - long buttonID; - long transition; -#ifndef FlashMediaDoButtonActions - PyMac_PRECHECK(FlashMediaDoButtonActions); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mh, - &buttonID, - &transition)) - return NULL; - _rv = FlashMediaDoButtonActions(mh, - &path, - buttonID, - transition); - _res = Py_BuildValue("lc", - _rv, - path); - return _res; -} - -static PyObject *Qt_FlashMediaGetSupportedSwfVersion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - UInt8 swfVersion; -#ifndef FlashMediaGetSupportedSwfVersion - PyMac_PRECHECK(FlashMediaGetSupportedSwfVersion); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = FlashMediaGetSupportedSwfVersion(mh, - &swfVersion); - _res = Py_BuildValue("lb", - _rv, - swfVersion); - return _res; -} - -static PyObject *Qt_Media3DGetCurrentGroup(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - void * group; -#ifndef Media3DGetCurrentGroup - PyMac_PRECHECK(Media3DGetCurrentGroup); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &mh, - &group)) - return NULL; - _rv = Media3DGetCurrentGroup(mh, - group); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_Media3DTranslateNamedObjectTo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - char objectName; - Fixed x; - Fixed y; - Fixed z; -#ifndef Media3DTranslateNamedObjectTo - PyMac_PRECHECK(Media3DTranslateNamedObjectTo); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - CmpInstObj_Convert, &mh, - PyMac_GetFixed, &x, - PyMac_GetFixed, &y, - PyMac_GetFixed, &z)) - return NULL; - _rv = Media3DTranslateNamedObjectTo(mh, - &objectName, - x, - y, - z); - _res = Py_BuildValue("lc", - _rv, - objectName); - return _res; -} - -static PyObject *Qt_Media3DScaleNamedObjectTo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - char objectName; - Fixed xScale; - Fixed yScale; - Fixed zScale; -#ifndef Media3DScaleNamedObjectTo - PyMac_PRECHECK(Media3DScaleNamedObjectTo); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - CmpInstObj_Convert, &mh, - PyMac_GetFixed, &xScale, - PyMac_GetFixed, &yScale, - PyMac_GetFixed, &zScale)) - return NULL; - _rv = Media3DScaleNamedObjectTo(mh, - &objectName, - xScale, - yScale, - zScale); - _res = Py_BuildValue("lc", - _rv, - objectName); - return _res; -} - -static PyObject *Qt_Media3DRotateNamedObjectTo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - char objectName; - Fixed xDegrees; - Fixed yDegrees; - Fixed zDegrees; -#ifndef Media3DRotateNamedObjectTo - PyMac_PRECHECK(Media3DRotateNamedObjectTo); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - CmpInstObj_Convert, &mh, - PyMac_GetFixed, &xDegrees, - PyMac_GetFixed, &yDegrees, - PyMac_GetFixed, &zDegrees)) - return NULL; - _rv = Media3DRotateNamedObjectTo(mh, - &objectName, - xDegrees, - yDegrees, - zDegrees); - _res = Py_BuildValue("lc", - _rv, - objectName); - return _res; -} - -static PyObject *Qt_Media3DSetCameraData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - void * cameraData; -#ifndef Media3DSetCameraData - PyMac_PRECHECK(Media3DSetCameraData); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &mh, - &cameraData)) - return NULL; - _rv = Media3DSetCameraData(mh, - cameraData); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_Media3DGetCameraData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - void * cameraData; -#ifndef Media3DGetCameraData - PyMac_PRECHECK(Media3DGetCameraData); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &mh, - &cameraData)) - return NULL; - _rv = Media3DGetCameraData(mh, - cameraData); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_Media3DSetCameraAngleAspect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - QTFloatSingle fov; - QTFloatSingle aspectRatioXToY; -#ifndef Media3DSetCameraAngleAspect - PyMac_PRECHECK(Media3DSetCameraAngleAspect); -#endif - if (!PyArg_ParseTuple(_args, "O&ff", - CmpInstObj_Convert, &mh, - &fov, - &aspectRatioXToY)) - return NULL; - _rv = Media3DSetCameraAngleAspect(mh, - fov, - aspectRatioXToY); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_Media3DGetCameraAngleAspect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - QTFloatSingle fov; - QTFloatSingle aspectRatioXToY; -#ifndef Media3DGetCameraAngleAspect - PyMac_PRECHECK(Media3DGetCameraAngleAspect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = Media3DGetCameraAngleAspect(mh, - &fov, - &aspectRatioXToY); - _res = Py_BuildValue("lff", - _rv, - fov, - aspectRatioXToY); - return _res; -} - -static PyObject *Qt_Media3DSetCameraRange(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - void * tQ3CameraRange; -#ifndef Media3DSetCameraRange - PyMac_PRECHECK(Media3DSetCameraRange); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &mh, - &tQ3CameraRange)) - return NULL; - _rv = Media3DSetCameraRange(mh, - tQ3CameraRange); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_Media3DGetCameraRange(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - void * tQ3CameraRange; -#ifndef Media3DGetCameraRange - PyMac_PRECHECK(Media3DGetCameraRange); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &mh, - &tQ3CameraRange)) - return NULL; - _rv = Media3DGetCameraRange(mh, - tQ3CameraRange); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_NewTimeBase(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeBase _rv; -#ifndef NewTimeBase - PyMac_PRECHECK(NewTimeBase); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = NewTimeBase(); - _res = Py_BuildValue("O&", - TimeBaseObj_New, _rv); - return _res; -} - -static PyObject *Qt_ConvertTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeRecord theTime; - TimeBase newBase; -#ifndef ConvertTime - PyMac_PRECHECK(ConvertTime); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - QtTimeRecord_Convert, &theTime, - TimeBaseObj_Convert, &newBase)) - return NULL; - ConvertTime(&theTime, - newBase); - _res = Py_BuildValue("O&", - QtTimeRecord_New, &theTime); - return _res; -} - -static PyObject *Qt_ConvertTimeScale(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeRecord theTime; - TimeScale newScale; -#ifndef ConvertTimeScale - PyMac_PRECHECK(ConvertTimeScale); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - QtTimeRecord_Convert, &theTime, - &newScale)) - return NULL; - ConvertTimeScale(&theTime, - newScale); - _res = Py_BuildValue("O&", - QtTimeRecord_New, &theTime); - return _res; -} - -static PyObject *Qt_AddTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeRecord dst; - TimeRecord src; -#ifndef AddTime - PyMac_PRECHECK(AddTime); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - QtTimeRecord_Convert, &dst, - QtTimeRecord_Convert, &src)) - return NULL; - AddTime(&dst, - &src); - _res = Py_BuildValue("O&", - QtTimeRecord_New, &dst); - return _res; -} - -static PyObject *Qt_SubtractTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TimeRecord dst; - TimeRecord src; -#ifndef SubtractTime - PyMac_PRECHECK(SubtractTime); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - QtTimeRecord_Convert, &dst, - QtTimeRecord_Convert, &src)) - return NULL; - SubtractTime(&dst, - &src); - _res = Py_BuildValue("O&", - QtTimeRecord_New, &dst); - return _res; -} - -static PyObject *Qt_MusicMediaGetIndexedTunePlayer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ti; - long sampleDescIndex; - ComponentInstance tp; -#ifndef MusicMediaGetIndexedTunePlayer - PyMac_PRECHECK(MusicMediaGetIndexedTunePlayer); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ti, - &sampleDescIndex)) - return NULL; - _rv = MusicMediaGetIndexedTunePlayer(ti, - sampleDescIndex, - &tp); - _res = Py_BuildValue("lO&", - _rv, - CmpInstObj_New, tp); - return _res; -} - -static PyObject *Qt_CodecManagerVersion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long version; -#ifndef CodecManagerVersion - PyMac_PRECHECK(CodecManagerVersion); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = CodecManagerVersion(&version); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - version); - return _res; -} - -static PyObject *Qt_GetMaxCompressionSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - PixMapHandle src; - Rect srcRect; - short colorDepth; - CodecQ quality; - CodecType cType; - CompressorComponent codec; - long size; -#ifndef GetMaxCompressionSize - PyMac_PRECHECK(GetMaxCompressionSize); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hlO&O&", - ResObj_Convert, &src, - PyMac_GetRect, &srcRect, - &colorDepth, - &quality, - PyMac_GetOSType, &cType, - CmpObj_Convert, &codec)) - return NULL; - _err = GetMaxCompressionSize(src, - &srcRect, - colorDepth, - quality, - cType, - codec, - &size); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - size); - return _res; -} - -static PyObject *Qt_GetCompressionTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - PixMapHandle src; - Rect srcRect; - short colorDepth; - CodecType cType; - CompressorComponent codec; - CodecQ spatialQuality; - CodecQ temporalQuality; - unsigned long compressTime; -#ifndef GetCompressionTime - PyMac_PRECHECK(GetCompressionTime); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hO&O&", - ResObj_Convert, &src, - PyMac_GetRect, &srcRect, - &colorDepth, - PyMac_GetOSType, &cType, - CmpObj_Convert, &codec)) - return NULL; - _err = GetCompressionTime(src, - &srcRect, - colorDepth, - cType, - codec, - &spatialQuality, - &temporalQuality, - &compressTime); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("lll", - spatialQuality, - temporalQuality, - compressTime); - return _res; -} - -static PyObject *Qt_CompressImage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - PixMapHandle src; - Rect srcRect; - CodecQ quality; - CodecType cType; - ImageDescriptionHandle desc; - Ptr data; -#ifndef CompressImage - PyMac_PRECHECK(CompressImage); -#endif - if (!PyArg_ParseTuple(_args, "O&O&lO&O&s", - ResObj_Convert, &src, - PyMac_GetRect, &srcRect, - &quality, - PyMac_GetOSType, &cType, - ResObj_Convert, &desc, - &data)) - return NULL; - _err = CompressImage(src, - &srcRect, - quality, - cType, - desc, - data); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_DecompressImage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Ptr data; - ImageDescriptionHandle desc; - PixMapHandle dst; - Rect srcRect; - Rect dstRect; - short mode; - RgnHandle mask; -#ifndef DecompressImage - PyMac_PRECHECK(DecompressImage); -#endif - if (!PyArg_ParseTuple(_args, "sO&O&O&O&hO&", - &data, - ResObj_Convert, &desc, - ResObj_Convert, &dst, - PyMac_GetRect, &srcRect, - PyMac_GetRect, &dstRect, - &mode, - ResObj_Convert, &mask)) - return NULL; - _err = DecompressImage(data, - desc, - dst, - &srcRect, - &dstRect, - mode, - mask); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_GetSimilarity(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - PixMapHandle src; - Rect srcRect; - ImageDescriptionHandle desc; - Ptr data; - Fixed similarity; -#ifndef GetSimilarity - PyMac_PRECHECK(GetSimilarity); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&s", - ResObj_Convert, &src, - PyMac_GetRect, &srcRect, - ResObj_Convert, &desc, - &data)) - return NULL; - _err = GetSimilarity(src, - &srcRect, - desc, - data, - &similarity); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, similarity); - return _res; -} - -static PyObject *Qt_GetImageDescriptionCTable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ImageDescriptionHandle desc; - CTabHandle ctable; -#ifndef GetImageDescriptionCTable - PyMac_PRECHECK(GetImageDescriptionCTable); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &desc)) - return NULL; - _err = GetImageDescriptionCTable(desc, - &ctable); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, ctable); - return _res; -} - -static PyObject *Qt_SetImageDescriptionCTable(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ImageDescriptionHandle desc; - CTabHandle ctable; -#ifndef SetImageDescriptionCTable - PyMac_PRECHECK(SetImageDescriptionCTable); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &desc, - ResObj_Convert, &ctable)) - return NULL; - _err = SetImageDescriptionCTable(desc, - ctable); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_GetImageDescriptionExtension(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ImageDescriptionHandle desc; - Handle extension; - long idType; - long index; -#ifndef GetImageDescriptionExtension - PyMac_PRECHECK(GetImageDescriptionExtension); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - ResObj_Convert, &desc, - &idType, - &index)) - return NULL; - _err = GetImageDescriptionExtension(desc, - &extension, - idType, - index); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, extension); - return _res; -} - -static PyObject *Qt_AddImageDescriptionExtension(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ImageDescriptionHandle desc; - Handle extension; - long idType; -#ifndef AddImageDescriptionExtension - PyMac_PRECHECK(AddImageDescriptionExtension); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - ResObj_Convert, &desc, - ResObj_Convert, &extension, - &idType)) - return NULL; - _err = AddImageDescriptionExtension(desc, - extension, - idType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_RemoveImageDescriptionExtension(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ImageDescriptionHandle desc; - long idType; - long index; -#ifndef RemoveImageDescriptionExtension - PyMac_PRECHECK(RemoveImageDescriptionExtension); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - ResObj_Convert, &desc, - &idType, - &index)) - return NULL; - _err = RemoveImageDescriptionExtension(desc, - idType, - index); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_CountImageDescriptionExtensionType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ImageDescriptionHandle desc; - long idType; - long count; -#ifndef CountImageDescriptionExtensionType - PyMac_PRECHECK(CountImageDescriptionExtensionType); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - ResObj_Convert, &desc, - &idType)) - return NULL; - _err = CountImageDescriptionExtensionType(desc, - idType, - &count); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - count); - return _res; -} - -static PyObject *Qt_GetNextImageDescriptionExtensionType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ImageDescriptionHandle desc; - long idType; -#ifndef GetNextImageDescriptionExtensionType - PyMac_PRECHECK(GetNextImageDescriptionExtensionType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &desc)) - return NULL; - _err = GetNextImageDescriptionExtensionType(desc, - &idType); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - idType); - return _res; -} - -static PyObject *Qt_FindCodec(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - CodecType cType; - CodecComponent specCodec; - CompressorComponent compressor; - DecompressorComponent decompressor; -#ifndef FindCodec - PyMac_PRECHECK(FindCodec); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &cType, - CmpObj_Convert, &specCodec)) - return NULL; - _err = FindCodec(cType, - specCodec, - &compressor, - &decompressor); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - CmpObj_New, compressor, - CmpObj_New, decompressor); - return _res; -} - -static PyObject *Qt_CompressPicture(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - PicHandle srcPicture; - PicHandle dstPicture; - CodecQ quality; - CodecType cType; -#ifndef CompressPicture - PyMac_PRECHECK(CompressPicture); -#endif - if (!PyArg_ParseTuple(_args, "O&O&lO&", - ResObj_Convert, &srcPicture, - ResObj_Convert, &dstPicture, - &quality, - PyMac_GetOSType, &cType)) - return NULL; - _err = CompressPicture(srcPicture, - dstPicture, - quality, - cType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_CompressPictureFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short srcRefNum; - short dstRefNum; - CodecQ quality; - CodecType cType; -#ifndef CompressPictureFile - PyMac_PRECHECK(CompressPictureFile); -#endif - if (!PyArg_ParseTuple(_args, "hhlO&", - &srcRefNum, - &dstRefNum, - &quality, - PyMac_GetOSType, &cType)) - return NULL; - _err = CompressPictureFile(srcRefNum, - dstRefNum, - quality, - cType); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_ConvertImage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - ImageDescriptionHandle srcDD; - Ptr srcData; - short colorDepth; - CTabHandle ctable; - CodecQ accuracy; - CodecQ quality; - CodecType cType; - CodecComponent codec; - ImageDescriptionHandle dstDD; - Ptr dstData; -#ifndef ConvertImage - PyMac_PRECHECK(ConvertImage); -#endif - if (!PyArg_ParseTuple(_args, "O&shO&llO&O&O&s", - ResObj_Convert, &srcDD, - &srcData, - &colorDepth, - ResObj_Convert, &ctable, - &accuracy, - &quality, - PyMac_GetOSType, &cType, - CmpObj_Convert, &codec, - ResObj_Convert, &dstDD, - &dstData)) - return NULL; - _err = ConvertImage(srcDD, - srcData, - colorDepth, - ctable, - accuracy, - quality, - cType, - codec, - dstDD, - dstData); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_AddFilePreview(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short resRefNum; - OSType previewType; - Handle previewData; -#ifndef AddFilePreview - PyMac_PRECHECK(AddFilePreview); -#endif - if (!PyArg_ParseTuple(_args, "hO&O&", - &resRefNum, - PyMac_GetOSType, &previewType, - ResObj_Convert, &previewData)) - return NULL; - _err = AddFilePreview(resRefNum, - previewType, - previewData); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_GetBestDeviceRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - GDHandle gdh; - Rect rp; -#ifndef GetBestDeviceRect - PyMac_PRECHECK(GetBestDeviceRect); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetBestDeviceRect(&gdh, - &rp); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - OptResObj_New, gdh, - PyMac_BuildRect, &rp); - return _res; -} - -static PyObject *Qt_GDHasScale(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - GDHandle gdh; - short depth; - Fixed scale; -#ifndef GDHasScale - PyMac_PRECHECK(GDHasScale); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - OptResObj_Convert, &gdh, - &depth)) - return NULL; - _err = GDHasScale(gdh, - depth, - &scale); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, scale); - return _res; -} - -static PyObject *Qt_GDGetScale(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - GDHandle gdh; - Fixed scale; - short flags; -#ifndef GDGetScale - PyMac_PRECHECK(GDGetScale); -#endif - if (!PyArg_ParseTuple(_args, "O&", - OptResObj_Convert, &gdh)) - return NULL; - _err = GDGetScale(gdh, - &scale, - &flags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&h", - PyMac_BuildFixed, scale, - flags); - return _res; -} - -static PyObject *Qt_GDSetScale(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - GDHandle gdh; - Fixed scale; - short flags; -#ifndef GDSetScale - PyMac_PRECHECK(GDSetScale); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - OptResObj_Convert, &gdh, - PyMac_GetFixed, &scale, - &flags)) - return NULL; - _err = GDSetScale(gdh, - scale, - flags); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_GetGraphicsImporterForFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec theFile; - ComponentInstance gi; -#ifndef GetGraphicsImporterForFile - PyMac_PRECHECK(GetGraphicsImporterForFile); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFSSpec, &theFile)) - return NULL; - _err = GetGraphicsImporterForFile(&theFile, - &gi); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CmpInstObj_New, gi); - return _res; -} - -static PyObject *Qt_GetGraphicsImporterForDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle dataRef; - OSType dataRefType; - ComponentInstance gi; -#ifndef GetGraphicsImporterForDataRef - PyMac_PRECHECK(GetGraphicsImporterForDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType)) - return NULL; - _err = GetGraphicsImporterForDataRef(dataRef, - dataRefType, - &gi); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CmpInstObj_New, gi); - return _res; -} - -static PyObject *Qt_GetGraphicsImporterForFileWithFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec theFile; - ComponentInstance gi; - long flags; -#ifndef GetGraphicsImporterForFileWithFlags - PyMac_PRECHECK(GetGraphicsImporterForFileWithFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetFSSpec, &theFile, - &flags)) - return NULL; - _err = GetGraphicsImporterForFileWithFlags(&theFile, - &gi, - flags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CmpInstObj_New, gi); - return _res; -} - -static PyObject *Qt_GetGraphicsImporterForDataRefWithFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Handle dataRef; - OSType dataRefType; - ComponentInstance gi; - long flags; -#ifndef GetGraphicsImporterForDataRefWithFlags - PyMac_PRECHECK(GetGraphicsImporterForDataRefWithFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType, - &flags)) - return NULL; - _err = GetGraphicsImporterForDataRefWithFlags(dataRef, - dataRefType, - &gi, - flags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CmpInstObj_New, gi); - return _res; -} - -static PyObject *Qt_MakeImageDescriptionForPixMap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - PixMapHandle pixmap; - ImageDescriptionHandle idh; -#ifndef MakeImageDescriptionForPixMap - PyMac_PRECHECK(MakeImageDescriptionForPixMap); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pixmap)) - return NULL; - _err = MakeImageDescriptionForPixMap(pixmap, - &idh); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, idh); - return _res; -} - -static PyObject *Qt_MakeImageDescriptionForEffect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType effectType; - ImageDescriptionHandle idh; -#ifndef MakeImageDescriptionForEffect - PyMac_PRECHECK(MakeImageDescriptionForEffect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &effectType)) - return NULL; - _err = MakeImageDescriptionForEffect(effectType, - &idh); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, idh); - return _res; -} - -static PyObject *Qt_QTGetPixelSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - OSType PixelFormat; -#ifndef QTGetPixelSize - PyMac_PRECHECK(QTGetPixelSize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &PixelFormat)) - return NULL; - _rv = QTGetPixelSize(PixelFormat); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Qt_QTGetPixelFormatDepthForImageDescription(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - OSType PixelFormat; -#ifndef QTGetPixelFormatDepthForImageDescription - PyMac_PRECHECK(QTGetPixelFormatDepthForImageDescription); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &PixelFormat)) - return NULL; - _rv = QTGetPixelFormatDepthForImageDescription(PixelFormat); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Qt_QTGetPixMapHandleRowBytes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - PixMapHandle pm; -#ifndef QTGetPixMapHandleRowBytes - PyMac_PRECHECK(QTGetPixMapHandleRowBytes); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pm)) - return NULL; - _rv = QTGetPixMapHandleRowBytes(pm); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_QTSetPixMapHandleRowBytes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - PixMapHandle pm; - long rowBytes; -#ifndef QTSetPixMapHandleRowBytes - PyMac_PRECHECK(QTSetPixMapHandleRowBytes); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - ResObj_Convert, &pm, - &rowBytes)) - return NULL; - _err = QTSetPixMapHandleRowBytes(pm, - rowBytes); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_QTGetPixMapHandleGammaLevel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; - PixMapHandle pm; -#ifndef QTGetPixMapHandleGammaLevel - PyMac_PRECHECK(QTGetPixMapHandleGammaLevel); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pm)) - return NULL; - _rv = QTGetPixMapHandleGammaLevel(pm); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *Qt_QTSetPixMapHandleGammaLevel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - PixMapHandle pm; - Fixed gammaLevel; -#ifndef QTSetPixMapHandleGammaLevel - PyMac_PRECHECK(QTSetPixMapHandleGammaLevel); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &pm, - PyMac_GetFixed, &gammaLevel)) - return NULL; - _err = QTSetPixMapHandleGammaLevel(pm, - gammaLevel); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_QTGetPixMapHandleRequestedGammaLevel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; - PixMapHandle pm; -#ifndef QTGetPixMapHandleRequestedGammaLevel - PyMac_PRECHECK(QTGetPixMapHandleRequestedGammaLevel); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pm)) - return NULL; - _rv = QTGetPixMapHandleRequestedGammaLevel(pm); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *Qt_QTSetPixMapHandleRequestedGammaLevel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - PixMapHandle pm; - Fixed requestedGammaLevel; -#ifndef QTSetPixMapHandleRequestedGammaLevel - PyMac_PRECHECK(QTSetPixMapHandleRequestedGammaLevel); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - ResObj_Convert, &pm, - PyMac_GetFixed, &requestedGammaLevel)) - return NULL; - _err = QTSetPixMapHandleRequestedGammaLevel(pm, - requestedGammaLevel); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_CompAdd(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - wide src; - wide dst; -#ifndef CompAdd - PyMac_PRECHECK(CompAdd); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CompAdd(&src, - &dst); - _res = Py_BuildValue("O&O&", - PyMac_Buildwide, src, - PyMac_Buildwide, dst); - return _res; -} - -static PyObject *Qt_CompSub(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - wide src; - wide dst; -#ifndef CompSub - PyMac_PRECHECK(CompSub); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CompSub(&src, - &dst); - _res = Py_BuildValue("O&O&", - PyMac_Buildwide, src, - PyMac_Buildwide, dst); - return _res; -} - -static PyObject *Qt_CompNeg(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - wide dst; -#ifndef CompNeg - PyMac_PRECHECK(CompNeg); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CompNeg(&dst); - _res = Py_BuildValue("O&", - PyMac_Buildwide, dst); - return _res; -} - -static PyObject *Qt_CompShift(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - wide src; - short shift; -#ifndef CompShift - PyMac_PRECHECK(CompShift); -#endif - if (!PyArg_ParseTuple(_args, "h", - &shift)) - return NULL; - CompShift(&src, - shift); - _res = Py_BuildValue("O&", - PyMac_Buildwide, src); - return _res; -} - -static PyObject *Qt_CompMul(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long src1; - long src2; - wide dst; -#ifndef CompMul - PyMac_PRECHECK(CompMul); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &src1, - &src2)) - return NULL; - CompMul(src1, - src2, - &dst); - _res = Py_BuildValue("O&", - PyMac_Buildwide, dst); - return _res; -} - -static PyObject *Qt_CompDiv(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - wide numerator; - long denominator; - long remainder; -#ifndef CompDiv - PyMac_PRECHECK(CompDiv); -#endif - if (!PyArg_ParseTuple(_args, "l", - &denominator)) - return NULL; - _rv = CompDiv(&numerator, - denominator, - &remainder); - _res = Py_BuildValue("lO&l", - _rv, - PyMac_Buildwide, numerator, - remainder); - return _res; -} - -static PyObject *Qt_CompFixMul(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - wide compSrc; - Fixed fixSrc; - wide compDst; -#ifndef CompFixMul - PyMac_PRECHECK(CompFixMul); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFixed, &fixSrc)) - return NULL; - CompFixMul(&compSrc, - fixSrc, - &compDst); - _res = Py_BuildValue("O&O&", - PyMac_Buildwide, compSrc, - PyMac_Buildwide, compDst); - return _res; -} - -static PyObject *Qt_CompMulDiv(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - wide co; - long mul; - long divisor; -#ifndef CompMulDiv - PyMac_PRECHECK(CompMulDiv); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &mul, - &divisor)) - return NULL; - CompMulDiv(&co, - mul, - divisor); - _res = Py_BuildValue("O&", - PyMac_Buildwide, co); - return _res; -} - -static PyObject *Qt_CompMulDivTrunc(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - wide co; - long mul; - long divisor; - long remainder; -#ifndef CompMulDivTrunc - PyMac_PRECHECK(CompMulDivTrunc); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &mul, - &divisor)) - return NULL; - CompMulDivTrunc(&co, - mul, - divisor, - &remainder); - _res = Py_BuildValue("O&l", - PyMac_Buildwide, co, - remainder); - return _res; -} - -static PyObject *Qt_CompCompare(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - wide a; - wide minusb; -#ifndef CompCompare - PyMac_PRECHECK(CompCompare); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_Getwide, &a, - PyMac_Getwide, &minusb)) - return NULL; - _rv = CompCompare(&a, - &minusb); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_CompSquareRoot(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - unsigned long _rv; - wide src; -#ifndef CompSquareRoot - PyMac_PRECHECK(CompSquareRoot); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_Getwide, &src)) - return NULL; - _rv = CompSquareRoot(&src); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_FixMulDiv(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; - Fixed src; - Fixed mul; - Fixed divisor; -#ifndef FixMulDiv - PyMac_PRECHECK(FixMulDiv); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - PyMac_GetFixed, &src, - PyMac_GetFixed, &mul, - PyMac_GetFixed, &divisor)) - return NULL; - _rv = FixMulDiv(src, - mul, - divisor); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *Qt_UnsignedFixMulDiv(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; - Fixed src; - Fixed mul; - Fixed divisor; -#ifndef UnsignedFixMulDiv - PyMac_PRECHECK(UnsignedFixMulDiv); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - PyMac_GetFixed, &src, - PyMac_GetFixed, &mul, - PyMac_GetFixed, &divisor)) - return NULL; - _rv = UnsignedFixMulDiv(src, - mul, - divisor); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *Qt_FixExp2(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; - Fixed src; -#ifndef FixExp2 - PyMac_PRECHECK(FixExp2); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFixed, &src)) - return NULL; - _rv = FixExp2(src); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *Qt_FixLog2(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; - Fixed src; -#ifndef FixLog2 - PyMac_PRECHECK(FixLog2); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFixed, &src)) - return NULL; - _rv = FixLog2(src); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *Qt_FixPow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; - Fixed base; - Fixed exp; -#ifndef FixPow - PyMac_PRECHECK(FixPow); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetFixed, &base, - PyMac_GetFixed, &exp)) - return NULL; - _rv = FixPow(base, - exp); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportSetDataReference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Handle dataRef; - OSType dataReType; -#ifndef GraphicsImportSetDataReference - PyMac_PRECHECK(GraphicsImportSetDataReference); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataReType)) - return NULL; - _rv = GraphicsImportSetDataReference(ci, - dataRef, - dataReType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetDataReference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Handle dataRef; - OSType dataReType; -#ifndef GraphicsImportGetDataReference - PyMac_PRECHECK(GraphicsImportGetDataReference); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetDataReference(ci, - &dataRef, - &dataReType); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, dataRef, - PyMac_BuildOSType, dataReType); - return _res; -} - -static PyObject *Qt_GraphicsImportSetDataFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - FSSpec theFile; -#ifndef GraphicsImportSetDataFile - PyMac_PRECHECK(GraphicsImportSetDataFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetFSSpec, &theFile)) - return NULL; - _rv = GraphicsImportSetDataFile(ci, - &theFile); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetDataFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - FSSpec theFile; -#ifndef GraphicsImportGetDataFile - PyMac_PRECHECK(GraphicsImportGetDataFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetFSSpec, &theFile)) - return NULL; - _rv = GraphicsImportGetDataFile(ci, - &theFile); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportSetDataHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Handle h; -#ifndef GraphicsImportSetDataHandle - PyMac_PRECHECK(GraphicsImportSetDataHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &h)) - return NULL; - _rv = GraphicsImportSetDataHandle(ci, - h); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetDataHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Handle h; -#ifndef GraphicsImportGetDataHandle - PyMac_PRECHECK(GraphicsImportGetDataHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetDataHandle(ci, - &h); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, h); - return _res; -} - -static PyObject *Qt_GraphicsImportGetImageDescription(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - ImageDescriptionHandle desc; -#ifndef GraphicsImportGetImageDescription - PyMac_PRECHECK(GraphicsImportGetImageDescription); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetImageDescription(ci, - &desc); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, desc); - return _res; -} - -static PyObject *Qt_GraphicsImportGetDataOffsetAndSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - unsigned long offset; - unsigned long size; -#ifndef GraphicsImportGetDataOffsetAndSize - PyMac_PRECHECK(GraphicsImportGetDataOffsetAndSize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetDataOffsetAndSize(ci, - &offset, - &size); - _res = Py_BuildValue("lll", - _rv, - offset, - size); - return _res; -} - -static PyObject *Qt_GraphicsImportReadData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - void * dataPtr; - unsigned long dataOffset; - unsigned long dataSize; -#ifndef GraphicsImportReadData - PyMac_PRECHECK(GraphicsImportReadData); -#endif - if (!PyArg_ParseTuple(_args, "O&sll", - CmpInstObj_Convert, &ci, - &dataPtr, - &dataOffset, - &dataSize)) - return NULL; - _rv = GraphicsImportReadData(ci, - dataPtr, - dataOffset, - dataSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportSetClip(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - RgnHandle clipRgn; -#ifndef GraphicsImportSetClip - PyMac_PRECHECK(GraphicsImportSetClip); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &clipRgn)) - return NULL; - _rv = GraphicsImportSetClip(ci, - clipRgn); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetClip(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - RgnHandle clipRgn; -#ifndef GraphicsImportGetClip - PyMac_PRECHECK(GraphicsImportGetClip); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetClip(ci, - &clipRgn); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, clipRgn); - return _res; -} - -static PyObject *Qt_GraphicsImportSetSourceRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Rect sourceRect; -#ifndef GraphicsImportSetSourceRect - PyMac_PRECHECK(GraphicsImportSetSourceRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetRect, &sourceRect)) - return NULL; - _rv = GraphicsImportSetSourceRect(ci, - &sourceRect); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetSourceRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Rect sourceRect; -#ifndef GraphicsImportGetSourceRect - PyMac_PRECHECK(GraphicsImportGetSourceRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetSourceRect(ci, - &sourceRect); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &sourceRect); - return _res; -} - -static PyObject *Qt_GraphicsImportGetNaturalBounds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Rect naturalBounds; -#ifndef GraphicsImportGetNaturalBounds - PyMac_PRECHECK(GraphicsImportGetNaturalBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetNaturalBounds(ci, - &naturalBounds); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &naturalBounds); - return _res; -} - -static PyObject *Qt_GraphicsImportDraw(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; -#ifndef GraphicsImportDraw - PyMac_PRECHECK(GraphicsImportDraw); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportDraw(ci); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportSetGWorld(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - CGrafPtr port; - GDHandle gd; -#ifndef GraphicsImportSetGWorld - PyMac_PRECHECK(GraphicsImportSetGWorld); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - GrafObj_Convert, &port, - OptResObj_Convert, &gd)) - return NULL; - _rv = GraphicsImportSetGWorld(ci, - port, - gd); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetGWorld(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - CGrafPtr port; - GDHandle gd; -#ifndef GraphicsImportGetGWorld - PyMac_PRECHECK(GraphicsImportGetGWorld); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetGWorld(ci, - &port, - &gd); - _res = Py_BuildValue("lO&O&", - _rv, - GrafObj_New, port, - OptResObj_New, gd); - return _res; -} - -static PyObject *Qt_GraphicsImportSetBoundsRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Rect bounds; -#ifndef GraphicsImportSetBoundsRect - PyMac_PRECHECK(GraphicsImportSetBoundsRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetRect, &bounds)) - return NULL; - _rv = GraphicsImportSetBoundsRect(ci, - &bounds); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetBoundsRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Rect bounds; -#ifndef GraphicsImportGetBoundsRect - PyMac_PRECHECK(GraphicsImportGetBoundsRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetBoundsRect(ci, - &bounds); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &bounds); - return _res; -} - -static PyObject *Qt_GraphicsImportSaveAsPicture(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - FSSpec fss; - ScriptCode scriptTag; -#ifndef GraphicsImportSaveAsPicture - PyMac_PRECHECK(GraphicsImportSaveAsPicture); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - CmpInstObj_Convert, &ci, - PyMac_GetFSSpec, &fss, - &scriptTag)) - return NULL; - _rv = GraphicsImportSaveAsPicture(ci, - &fss, - scriptTag); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportSetGraphicsMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - long graphicsMode; - RGBColor opColor; -#ifndef GraphicsImportSetGraphicsMode - PyMac_PRECHECK(GraphicsImportSetGraphicsMode); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - CmpInstObj_Convert, &ci, - &graphicsMode, - QdRGB_Convert, &opColor)) - return NULL; - _rv = GraphicsImportSetGraphicsMode(ci, - graphicsMode, - &opColor); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetGraphicsMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - long graphicsMode; - RGBColor opColor; -#ifndef GraphicsImportGetGraphicsMode - PyMac_PRECHECK(GraphicsImportGetGraphicsMode); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetGraphicsMode(ci, - &graphicsMode, - &opColor); - _res = Py_BuildValue("llO&", - _rv, - graphicsMode, - QdRGB_New, &opColor); - return _res; -} - -static PyObject *Qt_GraphicsImportSetQuality(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - CodecQ quality; -#ifndef GraphicsImportSetQuality - PyMac_PRECHECK(GraphicsImportSetQuality); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &quality)) - return NULL; - _rv = GraphicsImportSetQuality(ci, - quality); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetQuality(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - CodecQ quality; -#ifndef GraphicsImportGetQuality - PyMac_PRECHECK(GraphicsImportGetQuality); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetQuality(ci, - &quality); - _res = Py_BuildValue("ll", - _rv, - quality); - return _res; -} - -static PyObject *Qt_GraphicsImportSaveAsQuickTimeImageFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - FSSpec fss; - ScriptCode scriptTag; -#ifndef GraphicsImportSaveAsQuickTimeImageFile - PyMac_PRECHECK(GraphicsImportSaveAsQuickTimeImageFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - CmpInstObj_Convert, &ci, - PyMac_GetFSSpec, &fss, - &scriptTag)) - return NULL; - _rv = GraphicsImportSaveAsQuickTimeImageFile(ci, - &fss, - scriptTag); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportSetDataReferenceOffsetAndLimit(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - unsigned long offset; - unsigned long limit; -#ifndef GraphicsImportSetDataReferenceOffsetAndLimit - PyMac_PRECHECK(GraphicsImportSetDataReferenceOffsetAndLimit); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &ci, - &offset, - &limit)) - return NULL; - _rv = GraphicsImportSetDataReferenceOffsetAndLimit(ci, - offset, - limit); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetDataReferenceOffsetAndLimit(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - unsigned long offset; - unsigned long limit; -#ifndef GraphicsImportGetDataReferenceOffsetAndLimit - PyMac_PRECHECK(GraphicsImportGetDataReferenceOffsetAndLimit); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetDataReferenceOffsetAndLimit(ci, - &offset, - &limit); - _res = Py_BuildValue("lll", - _rv, - offset, - limit); - return _res; -} - -static PyObject *Qt_GraphicsImportGetAliasedDataReference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Handle dataRef; - OSType dataRefType; -#ifndef GraphicsImportGetAliasedDataReference - PyMac_PRECHECK(GraphicsImportGetAliasedDataReference); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetAliasedDataReference(ci, - &dataRef, - &dataRefType); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, dataRef, - PyMac_BuildOSType, dataRefType); - return _res; -} - -static PyObject *Qt_GraphicsImportValidate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Boolean valid; -#ifndef GraphicsImportValidate - PyMac_PRECHECK(GraphicsImportValidate); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportValidate(ci, - &valid); - _res = Py_BuildValue("lb", - _rv, - valid); - return _res; -} - -static PyObject *Qt_GraphicsImportGetMetaData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - void * userData; -#ifndef GraphicsImportGetMetaData - PyMac_PRECHECK(GraphicsImportGetMetaData); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &ci, - &userData)) - return NULL; - _rv = GraphicsImportGetMetaData(ci, - userData); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetMIMETypeList(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - void * qtAtomContainerPtr; -#ifndef GraphicsImportGetMIMETypeList - PyMac_PRECHECK(GraphicsImportGetMIMETypeList); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &ci, - &qtAtomContainerPtr)) - return NULL; - _rv = GraphicsImportGetMIMETypeList(ci, - qtAtomContainerPtr); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportDoesDrawAllPixels(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - short drawsAllPixels; -#ifndef GraphicsImportDoesDrawAllPixels - PyMac_PRECHECK(GraphicsImportDoesDrawAllPixels); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportDoesDrawAllPixels(ci, - &drawsAllPixels); - _res = Py_BuildValue("lh", - _rv, - drawsAllPixels); - return _res; -} - -static PyObject *Qt_GraphicsImportGetAsPicture(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - PicHandle picture; -#ifndef GraphicsImportGetAsPicture - PyMac_PRECHECK(GraphicsImportGetAsPicture); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetAsPicture(ci, - &picture); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, picture); - return _res; -} - -static PyObject *Qt_GraphicsImportExportImageFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - OSType fileType; - OSType fileCreator; - FSSpec fss; - ScriptCode scriptTag; -#ifndef GraphicsImportExportImageFile - PyMac_PRECHECK(GraphicsImportExportImageFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&h", - CmpInstObj_Convert, &ci, - PyMac_GetOSType, &fileType, - PyMac_GetOSType, &fileCreator, - PyMac_GetFSSpec, &fss, - &scriptTag)) - return NULL; - _rv = GraphicsImportExportImageFile(ci, - fileType, - fileCreator, - &fss, - scriptTag); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetExportImageTypeList(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - void * qtAtomContainerPtr; -#ifndef GraphicsImportGetExportImageTypeList - PyMac_PRECHECK(GraphicsImportGetExportImageTypeList); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &ci, - &qtAtomContainerPtr)) - return NULL; - _rv = GraphicsImportGetExportImageTypeList(ci, - qtAtomContainerPtr); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetExportSettingsAsAtomContainer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - void * qtAtomContainerPtr; -#ifndef GraphicsImportGetExportSettingsAsAtomContainer - PyMac_PRECHECK(GraphicsImportGetExportSettingsAsAtomContainer); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &ci, - &qtAtomContainerPtr)) - return NULL; - _rv = GraphicsImportGetExportSettingsAsAtomContainer(ci, - qtAtomContainerPtr); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportSetExportSettingsFromAtomContainer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - void * qtAtomContainer; -#ifndef GraphicsImportSetExportSettingsFromAtomContainer - PyMac_PRECHECK(GraphicsImportSetExportSettingsFromAtomContainer); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &ci, - &qtAtomContainer)) - return NULL; - _rv = GraphicsImportSetExportSettingsFromAtomContainer(ci, - qtAtomContainer); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetImageCount(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - unsigned long imageCount; -#ifndef GraphicsImportGetImageCount - PyMac_PRECHECK(GraphicsImportGetImageCount); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetImageCount(ci, - &imageCount); - _res = Py_BuildValue("ll", - _rv, - imageCount); - return _res; -} - -static PyObject *Qt_GraphicsImportSetImageIndex(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - unsigned long imageIndex; -#ifndef GraphicsImportSetImageIndex - PyMac_PRECHECK(GraphicsImportSetImageIndex); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &imageIndex)) - return NULL; - _rv = GraphicsImportSetImageIndex(ci, - imageIndex); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetImageIndex(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - unsigned long imageIndex; -#ifndef GraphicsImportGetImageIndex - PyMac_PRECHECK(GraphicsImportGetImageIndex); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetImageIndex(ci, - &imageIndex); - _res = Py_BuildValue("ll", - _rv, - imageIndex); - return _res; -} - -static PyObject *Qt_GraphicsImportGetDataOffsetAndSize64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - wide offset; - wide size; -#ifndef GraphicsImportGetDataOffsetAndSize64 - PyMac_PRECHECK(GraphicsImportGetDataOffsetAndSize64); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetDataOffsetAndSize64(ci, - &offset, - &size); - _res = Py_BuildValue("lO&O&", - _rv, - PyMac_Buildwide, offset, - PyMac_Buildwide, size); - return _res; -} - -static PyObject *Qt_GraphicsImportReadData64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - void * dataPtr; - wide dataOffset; - unsigned long dataSize; -#ifndef GraphicsImportReadData64 - PyMac_PRECHECK(GraphicsImportReadData64); -#endif - if (!PyArg_ParseTuple(_args, "O&sO&l", - CmpInstObj_Convert, &ci, - &dataPtr, - PyMac_Getwide, &dataOffset, - &dataSize)) - return NULL; - _rv = GraphicsImportReadData64(ci, - dataPtr, - &dataOffset, - dataSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportSetDataReferenceOffsetAndLimit64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - wide offset; - wide limit; -#ifndef GraphicsImportSetDataReferenceOffsetAndLimit64 - PyMac_PRECHECK(GraphicsImportSetDataReferenceOffsetAndLimit64); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - PyMac_Getwide, &offset, - PyMac_Getwide, &limit)) - return NULL; - _rv = GraphicsImportSetDataReferenceOffsetAndLimit64(ci, - &offset, - &limit); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetDataReferenceOffsetAndLimit64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - wide offset; - wide limit; -#ifndef GraphicsImportGetDataReferenceOffsetAndLimit64 - PyMac_PRECHECK(GraphicsImportGetDataReferenceOffsetAndLimit64); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetDataReferenceOffsetAndLimit64(ci, - &offset, - &limit); - _res = Py_BuildValue("lO&O&", - _rv, - PyMac_Buildwide, offset, - PyMac_Buildwide, limit); - return _res; -} - -static PyObject *Qt_GraphicsImportGetDefaultClip(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - RgnHandle defaultRgn; -#ifndef GraphicsImportGetDefaultClip - PyMac_PRECHECK(GraphicsImportGetDefaultClip); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetDefaultClip(ci, - &defaultRgn); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, defaultRgn); - return _res; -} - -static PyObject *Qt_GraphicsImportGetDefaultGraphicsMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - long defaultGraphicsMode; - RGBColor defaultOpColor; -#ifndef GraphicsImportGetDefaultGraphicsMode - PyMac_PRECHECK(GraphicsImportGetDefaultGraphicsMode); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetDefaultGraphicsMode(ci, - &defaultGraphicsMode, - &defaultOpColor); - _res = Py_BuildValue("llO&", - _rv, - defaultGraphicsMode, - QdRGB_New, &defaultOpColor); - return _res; -} - -static PyObject *Qt_GraphicsImportGetDefaultSourceRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Rect defaultSourceRect; -#ifndef GraphicsImportGetDefaultSourceRect - PyMac_PRECHECK(GraphicsImportGetDefaultSourceRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetDefaultSourceRect(ci, - &defaultSourceRect); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &defaultSourceRect); - return _res; -} - -static PyObject *Qt_GraphicsImportGetColorSyncProfile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Handle profile; -#ifndef GraphicsImportGetColorSyncProfile - PyMac_PRECHECK(GraphicsImportGetColorSyncProfile); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetColorSyncProfile(ci, - &profile); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, profile); - return _res; -} - -static PyObject *Qt_GraphicsImportSetDestRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Rect destRect; -#ifndef GraphicsImportSetDestRect - PyMac_PRECHECK(GraphicsImportSetDestRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetRect, &destRect)) - return NULL; - _rv = GraphicsImportSetDestRect(ci, - &destRect); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetDestRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - Rect destRect; -#ifndef GraphicsImportGetDestRect - PyMac_PRECHECK(GraphicsImportGetDestRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetDestRect(ci, - &destRect); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &destRect); - return _res; -} - -static PyObject *Qt_GraphicsImportSetFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - long flags; -#ifndef GraphicsImportSetFlags - PyMac_PRECHECK(GraphicsImportSetFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &flags)) - return NULL; - _rv = GraphicsImportSetFlags(ci, - flags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImportGetFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - long flags; -#ifndef GraphicsImportGetFlags - PyMac_PRECHECK(GraphicsImportGetFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetFlags(ci, - &flags); - _res = Py_BuildValue("ll", - _rv, - flags); - return _res; -} - -static PyObject *Qt_GraphicsImportGetBaseDataOffsetAndSize64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; - wide offset; - wide size; -#ifndef GraphicsImportGetBaseDataOffsetAndSize64 - PyMac_PRECHECK(GraphicsImportGetBaseDataOffsetAndSize64); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportGetBaseDataOffsetAndSize64(ci, - &offset, - &size); - _res = Py_BuildValue("lO&O&", - _rv, - PyMac_Buildwide, offset, - PyMac_Buildwide, size); - return _res; -} - -static PyObject *Qt_GraphicsImportSetImageIndexToThumbnail(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsImportComponent ci; -#ifndef GraphicsImportSetImageIndexToThumbnail - PyMac_PRECHECK(GraphicsImportSetImageIndexToThumbnail); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImportSetImageIndexToThumbnail(ci); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportDoExport(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - unsigned long actualSizeWritten; -#ifndef GraphicsExportDoExport - PyMac_PRECHECK(GraphicsExportDoExport); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportDoExport(ci, - &actualSizeWritten); - _res = Py_BuildValue("ll", - _rv, - actualSizeWritten); - return _res; -} - -static PyObject *Qt_GraphicsExportCanTranscode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Boolean canTranscode; -#ifndef GraphicsExportCanTranscode - PyMac_PRECHECK(GraphicsExportCanTranscode); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportCanTranscode(ci, - &canTranscode); - _res = Py_BuildValue("lb", - _rv, - canTranscode); - return _res; -} - -static PyObject *Qt_GraphicsExportDoTranscode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; -#ifndef GraphicsExportDoTranscode - PyMac_PRECHECK(GraphicsExportDoTranscode); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportDoTranscode(ci); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportCanUseCompressor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Boolean canUseCompressor; - void * codecSettingsAtomContainerPtr; -#ifndef GraphicsExportCanUseCompressor - PyMac_PRECHECK(GraphicsExportCanUseCompressor); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &ci, - &codecSettingsAtomContainerPtr)) - return NULL; - _rv = GraphicsExportCanUseCompressor(ci, - &canUseCompressor, - codecSettingsAtomContainerPtr); - _res = Py_BuildValue("lb", - _rv, - canUseCompressor); - return _res; -} - -static PyObject *Qt_GraphicsExportDoUseCompressor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - void * codecSettingsAtomContainer; - ImageDescriptionHandle outDesc; -#ifndef GraphicsExportDoUseCompressor - PyMac_PRECHECK(GraphicsExportDoUseCompressor); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &ci, - &codecSettingsAtomContainer)) - return NULL; - _rv = GraphicsExportDoUseCompressor(ci, - codecSettingsAtomContainer, - &outDesc); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, outDesc); - return _res; -} - -static PyObject *Qt_GraphicsExportDoStandaloneExport(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; -#ifndef GraphicsExportDoStandaloneExport - PyMac_PRECHECK(GraphicsExportDoStandaloneExport); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportDoStandaloneExport(ci); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetDefaultFileTypeAndCreator(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - OSType fileType; - OSType fileCreator; -#ifndef GraphicsExportGetDefaultFileTypeAndCreator - PyMac_PRECHECK(GraphicsExportGetDefaultFileTypeAndCreator); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetDefaultFileTypeAndCreator(ci, - &fileType, - &fileCreator); - _res = Py_BuildValue("lO&O&", - _rv, - PyMac_BuildOSType, fileType, - PyMac_BuildOSType, fileCreator); - return _res; -} - -static PyObject *Qt_GraphicsExportGetDefaultFileNameExtension(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - OSType fileNameExtension; -#ifndef GraphicsExportGetDefaultFileNameExtension - PyMac_PRECHECK(GraphicsExportGetDefaultFileNameExtension); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetDefaultFileNameExtension(ci, - &fileNameExtension); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildOSType, fileNameExtension); - return _res; -} - -static PyObject *Qt_GraphicsExportGetMIMETypeList(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - void * qtAtomContainerPtr; -#ifndef GraphicsExportGetMIMETypeList - PyMac_PRECHECK(GraphicsExportGetMIMETypeList); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &ci, - &qtAtomContainerPtr)) - return NULL; - _rv = GraphicsExportGetMIMETypeList(ci, - qtAtomContainerPtr); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportSetSettingsFromAtomContainer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - void * qtAtomContainer; -#ifndef GraphicsExportSetSettingsFromAtomContainer - PyMac_PRECHECK(GraphicsExportSetSettingsFromAtomContainer); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &ci, - &qtAtomContainer)) - return NULL; - _rv = GraphicsExportSetSettingsFromAtomContainer(ci, - qtAtomContainer); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetSettingsAsAtomContainer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - void * qtAtomContainerPtr; -#ifndef GraphicsExportGetSettingsAsAtomContainer - PyMac_PRECHECK(GraphicsExportGetSettingsAsAtomContainer); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &ci, - &qtAtomContainerPtr)) - return NULL; - _rv = GraphicsExportGetSettingsAsAtomContainer(ci, - qtAtomContainerPtr); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetSettingsAsText(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Handle theText; -#ifndef GraphicsExportGetSettingsAsText - PyMac_PRECHECK(GraphicsExportGetSettingsAsText); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetSettingsAsText(ci, - &theText); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, theText); - return _res; -} - -static PyObject *Qt_GraphicsExportSetDontRecompress(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Boolean dontRecompress; -#ifndef GraphicsExportSetDontRecompress - PyMac_PRECHECK(GraphicsExportSetDontRecompress); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - CmpInstObj_Convert, &ci, - &dontRecompress)) - return NULL; - _rv = GraphicsExportSetDontRecompress(ci, - dontRecompress); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetDontRecompress(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Boolean dontRecompress; -#ifndef GraphicsExportGetDontRecompress - PyMac_PRECHECK(GraphicsExportGetDontRecompress); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetDontRecompress(ci, - &dontRecompress); - _res = Py_BuildValue("lb", - _rv, - dontRecompress); - return _res; -} - -static PyObject *Qt_GraphicsExportSetInterlaceStyle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - unsigned long interlaceStyle; -#ifndef GraphicsExportSetInterlaceStyle - PyMac_PRECHECK(GraphicsExportSetInterlaceStyle); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &interlaceStyle)) - return NULL; - _rv = GraphicsExportSetInterlaceStyle(ci, - interlaceStyle); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetInterlaceStyle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - unsigned long interlaceStyle; -#ifndef GraphicsExportGetInterlaceStyle - PyMac_PRECHECK(GraphicsExportGetInterlaceStyle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetInterlaceStyle(ci, - &interlaceStyle); - _res = Py_BuildValue("ll", - _rv, - interlaceStyle); - return _res; -} - -static PyObject *Qt_GraphicsExportSetMetaData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - void * userData; -#ifndef GraphicsExportSetMetaData - PyMac_PRECHECK(GraphicsExportSetMetaData); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &ci, - &userData)) - return NULL; - _rv = GraphicsExportSetMetaData(ci, - userData); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetMetaData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - void * userData; -#ifndef GraphicsExportGetMetaData - PyMac_PRECHECK(GraphicsExportGetMetaData); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &ci, - &userData)) - return NULL; - _rv = GraphicsExportGetMetaData(ci, - userData); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportSetTargetDataSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - unsigned long targetDataSize; -#ifndef GraphicsExportSetTargetDataSize - PyMac_PRECHECK(GraphicsExportSetTargetDataSize); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &targetDataSize)) - return NULL; - _rv = GraphicsExportSetTargetDataSize(ci, - targetDataSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetTargetDataSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - unsigned long targetDataSize; -#ifndef GraphicsExportGetTargetDataSize - PyMac_PRECHECK(GraphicsExportGetTargetDataSize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetTargetDataSize(ci, - &targetDataSize); - _res = Py_BuildValue("ll", - _rv, - targetDataSize); - return _res; -} - -static PyObject *Qt_GraphicsExportSetCompressionMethod(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - long compressionMethod; -#ifndef GraphicsExportSetCompressionMethod - PyMac_PRECHECK(GraphicsExportSetCompressionMethod); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &compressionMethod)) - return NULL; - _rv = GraphicsExportSetCompressionMethod(ci, - compressionMethod); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetCompressionMethod(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - long compressionMethod; -#ifndef GraphicsExportGetCompressionMethod - PyMac_PRECHECK(GraphicsExportGetCompressionMethod); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetCompressionMethod(ci, - &compressionMethod); - _res = Py_BuildValue("ll", - _rv, - compressionMethod); - return _res; -} - -static PyObject *Qt_GraphicsExportSetCompressionQuality(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - CodecQ spatialQuality; -#ifndef GraphicsExportSetCompressionQuality - PyMac_PRECHECK(GraphicsExportSetCompressionQuality); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &spatialQuality)) - return NULL; - _rv = GraphicsExportSetCompressionQuality(ci, - spatialQuality); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetCompressionQuality(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - CodecQ spatialQuality; -#ifndef GraphicsExportGetCompressionQuality - PyMac_PRECHECK(GraphicsExportGetCompressionQuality); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetCompressionQuality(ci, - &spatialQuality); - _res = Py_BuildValue("ll", - _rv, - spatialQuality); - return _res; -} - -static PyObject *Qt_GraphicsExportSetResolution(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Fixed horizontalResolution; - Fixed verticalResolution; -#ifndef GraphicsExportSetResolution - PyMac_PRECHECK(GraphicsExportSetResolution); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetFixed, &horizontalResolution, - PyMac_GetFixed, &verticalResolution)) - return NULL; - _rv = GraphicsExportSetResolution(ci, - horizontalResolution, - verticalResolution); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetResolution(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Fixed horizontalResolution; - Fixed verticalResolution; -#ifndef GraphicsExportGetResolution - PyMac_PRECHECK(GraphicsExportGetResolution); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetResolution(ci, - &horizontalResolution, - &verticalResolution); - _res = Py_BuildValue("lO&O&", - _rv, - PyMac_BuildFixed, horizontalResolution, - PyMac_BuildFixed, verticalResolution); - return _res; -} - -static PyObject *Qt_GraphicsExportSetDepth(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - long depth; -#ifndef GraphicsExportSetDepth - PyMac_PRECHECK(GraphicsExportSetDepth); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &depth)) - return NULL; - _rv = GraphicsExportSetDepth(ci, - depth); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetDepth(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - long depth; -#ifndef GraphicsExportGetDepth - PyMac_PRECHECK(GraphicsExportGetDepth); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetDepth(ci, - &depth); - _res = Py_BuildValue("ll", - _rv, - depth); - return _res; -} - -static PyObject *Qt_GraphicsExportSetColorSyncProfile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Handle colorSyncProfile; -#ifndef GraphicsExportSetColorSyncProfile - PyMac_PRECHECK(GraphicsExportSetColorSyncProfile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &colorSyncProfile)) - return NULL; - _rv = GraphicsExportSetColorSyncProfile(ci, - colorSyncProfile); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetColorSyncProfile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Handle colorSyncProfile; -#ifndef GraphicsExportGetColorSyncProfile - PyMac_PRECHECK(GraphicsExportGetColorSyncProfile); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetColorSyncProfile(ci, - &colorSyncProfile); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, colorSyncProfile); - return _res; -} - -static PyObject *Qt_GraphicsExportSetInputDataReference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Handle dataRef; - OSType dataRefType; - ImageDescriptionHandle desc; -#ifndef GraphicsExportSetInputDataReference - PyMac_PRECHECK(GraphicsExportSetInputDataReference); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType, - ResObj_Convert, &desc)) - return NULL; - _rv = GraphicsExportSetInputDataReference(ci, - dataRef, - dataRefType, - desc); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetInputDataReference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Handle dataRef; - OSType dataRefType; -#ifndef GraphicsExportGetInputDataReference - PyMac_PRECHECK(GraphicsExportGetInputDataReference); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetInputDataReference(ci, - &dataRef, - &dataRefType); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, dataRef, - PyMac_BuildOSType, dataRefType); - return _res; -} - -static PyObject *Qt_GraphicsExportSetInputFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - FSSpec theFile; - ImageDescriptionHandle desc; -#ifndef GraphicsExportSetInputFile - PyMac_PRECHECK(GraphicsExportSetInputFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetFSSpec, &theFile, - ResObj_Convert, &desc)) - return NULL; - _rv = GraphicsExportSetInputFile(ci, - &theFile, - desc); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetInputFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - FSSpec theFile; -#ifndef GraphicsExportGetInputFile - PyMac_PRECHECK(GraphicsExportGetInputFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetFSSpec, &theFile)) - return NULL; - _rv = GraphicsExportGetInputFile(ci, - &theFile); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportSetInputHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Handle h; - ImageDescriptionHandle desc; -#ifndef GraphicsExportSetInputHandle - PyMac_PRECHECK(GraphicsExportSetInputHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &h, - ResObj_Convert, &desc)) - return NULL; - _rv = GraphicsExportSetInputHandle(ci, - h, - desc); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetInputHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Handle h; -#ifndef GraphicsExportGetInputHandle - PyMac_PRECHECK(GraphicsExportGetInputHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetInputHandle(ci, - &h); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, h); - return _res; -} - -static PyObject *Qt_GraphicsExportSetInputPtr(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Ptr p; - unsigned long size; - ImageDescriptionHandle desc; -#ifndef GraphicsExportSetInputPtr - PyMac_PRECHECK(GraphicsExportSetInputPtr); -#endif - if (!PyArg_ParseTuple(_args, "O&slO&", - CmpInstObj_Convert, &ci, - &p, - &size, - ResObj_Convert, &desc)) - return NULL; - _rv = GraphicsExportSetInputPtr(ci, - p, - size, - desc); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportSetInputGraphicsImporter(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - GraphicsImportComponent grip; -#ifndef GraphicsExportSetInputGraphicsImporter - PyMac_PRECHECK(GraphicsExportSetInputGraphicsImporter); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - CmpInstObj_Convert, &grip)) - return NULL; - _rv = GraphicsExportSetInputGraphicsImporter(ci, - grip); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetInputGraphicsImporter(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - GraphicsImportComponent grip; -#ifndef GraphicsExportGetInputGraphicsImporter - PyMac_PRECHECK(GraphicsExportGetInputGraphicsImporter); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetInputGraphicsImporter(ci, - &grip); - _res = Py_BuildValue("lO&", - _rv, - CmpInstObj_New, grip); - return _res; -} - -static PyObject *Qt_GraphicsExportSetInputPicture(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - PicHandle picture; -#ifndef GraphicsExportSetInputPicture - PyMac_PRECHECK(GraphicsExportSetInputPicture); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &picture)) - return NULL; - _rv = GraphicsExportSetInputPicture(ci, - picture); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetInputPicture(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - PicHandle picture; -#ifndef GraphicsExportGetInputPicture - PyMac_PRECHECK(GraphicsExportGetInputPicture); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetInputPicture(ci, - &picture); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, picture); - return _res; -} - -static PyObject *Qt_GraphicsExportSetInputGWorld(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - GWorldPtr gworld; -#ifndef GraphicsExportSetInputGWorld - PyMac_PRECHECK(GraphicsExportSetInputGWorld); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - GWorldObj_Convert, &gworld)) - return NULL; - _rv = GraphicsExportSetInputGWorld(ci, - gworld); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetInputGWorld(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - GWorldPtr gworld; -#ifndef GraphicsExportGetInputGWorld - PyMac_PRECHECK(GraphicsExportGetInputGWorld); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetInputGWorld(ci, - &gworld); - _res = Py_BuildValue("lO&", - _rv, - GWorldObj_New, gworld); - return _res; -} - -static PyObject *Qt_GraphicsExportSetInputPixmap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - PixMapHandle pixmap; -#ifndef GraphicsExportSetInputPixmap - PyMac_PRECHECK(GraphicsExportSetInputPixmap); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &pixmap)) - return NULL; - _rv = GraphicsExportSetInputPixmap(ci, - pixmap); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetInputPixmap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - PixMapHandle pixmap; -#ifndef GraphicsExportGetInputPixmap - PyMac_PRECHECK(GraphicsExportGetInputPixmap); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetInputPixmap(ci, - &pixmap); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, pixmap); - return _res; -} - -static PyObject *Qt_GraphicsExportSetInputOffsetAndLimit(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - unsigned long offset; - unsigned long limit; -#ifndef GraphicsExportSetInputOffsetAndLimit - PyMac_PRECHECK(GraphicsExportSetInputOffsetAndLimit); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &ci, - &offset, - &limit)) - return NULL; - _rv = GraphicsExportSetInputOffsetAndLimit(ci, - offset, - limit); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetInputOffsetAndLimit(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - unsigned long offset; - unsigned long limit; -#ifndef GraphicsExportGetInputOffsetAndLimit - PyMac_PRECHECK(GraphicsExportGetInputOffsetAndLimit); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetInputOffsetAndLimit(ci, - &offset, - &limit); - _res = Py_BuildValue("lll", - _rv, - offset, - limit); - return _res; -} - -static PyObject *Qt_GraphicsExportMayExporterReadInputData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Boolean mayReadInputData; -#ifndef GraphicsExportMayExporterReadInputData - PyMac_PRECHECK(GraphicsExportMayExporterReadInputData); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportMayExporterReadInputData(ci, - &mayReadInputData); - _res = Py_BuildValue("lb", - _rv, - mayReadInputData); - return _res; -} - -static PyObject *Qt_GraphicsExportGetInputDataSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - unsigned long size; -#ifndef GraphicsExportGetInputDataSize - PyMac_PRECHECK(GraphicsExportGetInputDataSize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetInputDataSize(ci, - &size); - _res = Py_BuildValue("ll", - _rv, - size); - return _res; -} - -static PyObject *Qt_GraphicsExportReadInputData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - void * dataPtr; - unsigned long dataOffset; - unsigned long dataSize; -#ifndef GraphicsExportReadInputData - PyMac_PRECHECK(GraphicsExportReadInputData); -#endif - if (!PyArg_ParseTuple(_args, "O&sll", - CmpInstObj_Convert, &ci, - &dataPtr, - &dataOffset, - &dataSize)) - return NULL; - _rv = GraphicsExportReadInputData(ci, - dataPtr, - dataOffset, - dataSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetInputImageDescription(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - ImageDescriptionHandle desc; -#ifndef GraphicsExportGetInputImageDescription - PyMac_PRECHECK(GraphicsExportGetInputImageDescription); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetInputImageDescription(ci, - &desc); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, desc); - return _res; -} - -static PyObject *Qt_GraphicsExportGetInputImageDimensions(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Rect dimensions; -#ifndef GraphicsExportGetInputImageDimensions - PyMac_PRECHECK(GraphicsExportGetInputImageDimensions); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetInputImageDimensions(ci, - &dimensions); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &dimensions); - return _res; -} - -static PyObject *Qt_GraphicsExportGetInputImageDepth(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - long inputDepth; -#ifndef GraphicsExportGetInputImageDepth - PyMac_PRECHECK(GraphicsExportGetInputImageDepth); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetInputImageDepth(ci, - &inputDepth); - _res = Py_BuildValue("ll", - _rv, - inputDepth); - return _res; -} - -static PyObject *Qt_GraphicsExportDrawInputImage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - CGrafPtr gw; - GDHandle gd; - Rect srcRect; - Rect dstRect; -#ifndef GraphicsExportDrawInputImage - PyMac_PRECHECK(GraphicsExportDrawInputImage); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&O&", - CmpInstObj_Convert, &ci, - GrafObj_Convert, &gw, - OptResObj_Convert, &gd, - PyMac_GetRect, &srcRect, - PyMac_GetRect, &dstRect)) - return NULL; - _rv = GraphicsExportDrawInputImage(ci, - gw, - gd, - &srcRect, - &dstRect); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportSetOutputDataReference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Handle dataRef; - OSType dataRefType; -#ifndef GraphicsExportSetOutputDataReference - PyMac_PRECHECK(GraphicsExportSetOutputDataReference); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType)) - return NULL; - _rv = GraphicsExportSetOutputDataReference(ci, - dataRef, - dataRefType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetOutputDataReference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Handle dataRef; - OSType dataRefType; -#ifndef GraphicsExportGetOutputDataReference - PyMac_PRECHECK(GraphicsExportGetOutputDataReference); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetOutputDataReference(ci, - &dataRef, - &dataRefType); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, dataRef, - PyMac_BuildOSType, dataRefType); - return _res; -} - -static PyObject *Qt_GraphicsExportSetOutputFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - FSSpec theFile; -#ifndef GraphicsExportSetOutputFile - PyMac_PRECHECK(GraphicsExportSetOutputFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetFSSpec, &theFile)) - return NULL; - _rv = GraphicsExportSetOutputFile(ci, - &theFile); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetOutputFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - FSSpec theFile; -#ifndef GraphicsExportGetOutputFile - PyMac_PRECHECK(GraphicsExportGetOutputFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetFSSpec, &theFile)) - return NULL; - _rv = GraphicsExportGetOutputFile(ci, - &theFile); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportSetOutputHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Handle h; -#ifndef GraphicsExportSetOutputHandle - PyMac_PRECHECK(GraphicsExportSetOutputHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &h)) - return NULL; - _rv = GraphicsExportSetOutputHandle(ci, - h); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetOutputHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Handle h; -#ifndef GraphicsExportGetOutputHandle - PyMac_PRECHECK(GraphicsExportGetOutputHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetOutputHandle(ci, - &h); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, h); - return _res; -} - -static PyObject *Qt_GraphicsExportSetOutputOffsetAndMaxSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - unsigned long offset; - unsigned long maxSize; - Boolean truncateFile; -#ifndef GraphicsExportSetOutputOffsetAndMaxSize - PyMac_PRECHECK(GraphicsExportSetOutputOffsetAndMaxSize); -#endif - if (!PyArg_ParseTuple(_args, "O&llb", - CmpInstObj_Convert, &ci, - &offset, - &maxSize, - &truncateFile)) - return NULL; - _rv = GraphicsExportSetOutputOffsetAndMaxSize(ci, - offset, - maxSize, - truncateFile); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetOutputOffsetAndMaxSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - unsigned long offset; - unsigned long maxSize; - Boolean truncateFile; -#ifndef GraphicsExportGetOutputOffsetAndMaxSize - PyMac_PRECHECK(GraphicsExportGetOutputOffsetAndMaxSize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetOutputOffsetAndMaxSize(ci, - &offset, - &maxSize, - &truncateFile); - _res = Py_BuildValue("lllb", - _rv, - offset, - maxSize, - truncateFile); - return _res; -} - -static PyObject *Qt_GraphicsExportSetOutputFileTypeAndCreator(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - OSType fileType; - OSType fileCreator; -#ifndef GraphicsExportSetOutputFileTypeAndCreator - PyMac_PRECHECK(GraphicsExportSetOutputFileTypeAndCreator); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetOSType, &fileType, - PyMac_GetOSType, &fileCreator)) - return NULL; - _rv = GraphicsExportSetOutputFileTypeAndCreator(ci, - fileType, - fileCreator); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetOutputFileTypeAndCreator(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - OSType fileType; - OSType fileCreator; -#ifndef GraphicsExportGetOutputFileTypeAndCreator - PyMac_PRECHECK(GraphicsExportGetOutputFileTypeAndCreator); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetOutputFileTypeAndCreator(ci, - &fileType, - &fileCreator); - _res = Py_BuildValue("lO&O&", - _rv, - PyMac_BuildOSType, fileType, - PyMac_BuildOSType, fileCreator); - return _res; -} - -static PyObject *Qt_GraphicsExportSetOutputMark(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - unsigned long mark; -#ifndef GraphicsExportSetOutputMark - PyMac_PRECHECK(GraphicsExportSetOutputMark); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &mark)) - return NULL; - _rv = GraphicsExportSetOutputMark(ci, - mark); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetOutputMark(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - unsigned long mark; -#ifndef GraphicsExportGetOutputMark - PyMac_PRECHECK(GraphicsExportGetOutputMark); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetOutputMark(ci, - &mark); - _res = Py_BuildValue("ll", - _rv, - mark); - return _res; -} - -static PyObject *Qt_GraphicsExportReadOutputData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - void * dataPtr; - unsigned long dataOffset; - unsigned long dataSize; -#ifndef GraphicsExportReadOutputData - PyMac_PRECHECK(GraphicsExportReadOutputData); -#endif - if (!PyArg_ParseTuple(_args, "O&sll", - CmpInstObj_Convert, &ci, - &dataPtr, - &dataOffset, - &dataSize)) - return NULL; - _rv = GraphicsExportReadOutputData(ci, - dataPtr, - dataOffset, - dataSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportSetThumbnailEnabled(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Boolean enableThumbnail; - long maxThumbnailWidth; - long maxThumbnailHeight; -#ifndef GraphicsExportSetThumbnailEnabled - PyMac_PRECHECK(GraphicsExportSetThumbnailEnabled); -#endif - if (!PyArg_ParseTuple(_args, "O&bll", - CmpInstObj_Convert, &ci, - &enableThumbnail, - &maxThumbnailWidth, - &maxThumbnailHeight)) - return NULL; - _rv = GraphicsExportSetThumbnailEnabled(ci, - enableThumbnail, - maxThumbnailWidth, - maxThumbnailHeight); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetThumbnailEnabled(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Boolean thumbnailEnabled; - long maxThumbnailWidth; - long maxThumbnailHeight; -#ifndef GraphicsExportGetThumbnailEnabled - PyMac_PRECHECK(GraphicsExportGetThumbnailEnabled); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetThumbnailEnabled(ci, - &thumbnailEnabled, - &maxThumbnailWidth, - &maxThumbnailHeight); - _res = Py_BuildValue("lbll", - _rv, - thumbnailEnabled, - maxThumbnailWidth, - maxThumbnailHeight); - return _res; -} - -static PyObject *Qt_GraphicsExportSetExifEnabled(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Boolean enableExif; -#ifndef GraphicsExportSetExifEnabled - PyMac_PRECHECK(GraphicsExportSetExifEnabled); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - CmpInstObj_Convert, &ci, - &enableExif)) - return NULL; - _rv = GraphicsExportSetExifEnabled(ci, - enableExif); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsExportGetExifEnabled(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicsExportComponent ci; - Boolean exifEnabled; -#ifndef GraphicsExportGetExifEnabled - PyMac_PRECHECK(GraphicsExportGetExifEnabled); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsExportGetExifEnabled(ci, - &exifEnabled); - _res = Py_BuildValue("lb", - _rv, - exifEnabled); - return _res; -} - -static PyObject *Qt_ImageTranscoderBeginSequence(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ImageTranscoderComponent itc; - ImageDescriptionHandle srcDesc; - ImageDescriptionHandle dstDesc; - void * data; - long dataSize; -#ifndef ImageTranscoderBeginSequence - PyMac_PRECHECK(ImageTranscoderBeginSequence); -#endif - if (!PyArg_ParseTuple(_args, "O&O&sl", - CmpInstObj_Convert, &itc, - ResObj_Convert, &srcDesc, - &data, - &dataSize)) - return NULL; - _rv = ImageTranscoderBeginSequence(itc, - srcDesc, - &dstDesc, - data, - dataSize); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, dstDesc); - return _res; -} - -static PyObject *Qt_ImageTranscoderDisposeData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ImageTranscoderComponent itc; - void * dstData; -#ifndef ImageTranscoderDisposeData - PyMac_PRECHECK(ImageTranscoderDisposeData); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &itc, - &dstData)) - return NULL; - _rv = ImageTranscoderDisposeData(itc, - dstData); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_ImageTranscoderEndSequence(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ImageTranscoderComponent itc; -#ifndef ImageTranscoderEndSequence - PyMac_PRECHECK(ImageTranscoderEndSequence); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &itc)) - return NULL; - _rv = ImageTranscoderEndSequence(itc); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_ClockGetTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance aClock; - TimeRecord out; -#ifndef ClockGetTime - PyMac_PRECHECK(ClockGetTime); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &aClock)) - return NULL; - _rv = ClockGetTime(aClock, - &out); - _res = Py_BuildValue("lO&", - _rv, - QtTimeRecord_New, &out); - return _res; -} - -static PyObject *Qt_ClockSetTimeBase(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance aClock; - TimeBase tb; -#ifndef ClockSetTimeBase - PyMac_PRECHECK(ClockSetTimeBase); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &aClock, - TimeBaseObj_Convert, &tb)) - return NULL; - _rv = ClockSetTimeBase(aClock, - tb); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_ClockGetRate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance aClock; - Fixed rate; -#ifndef ClockGetRate - PyMac_PRECHECK(ClockGetRate); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &aClock)) - return NULL; - _rv = ClockGetRate(aClock, - &rate); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildFixed, rate); - return _res; -} - -static PyObject *Qt_SCPositionRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - Rect rp; - Point where; -#ifndef SCPositionRect - PyMac_PRECHECK(SCPositionRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = SCPositionRect(ci, - &rp, - &where); - _res = Py_BuildValue("lO&O&", - _rv, - PyMac_BuildRect, &rp, - PyMac_BuildPoint, where); - return _res; -} - -static PyObject *Qt_SCPositionDialog(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - short id; - Point where; -#ifndef SCPositionDialog - PyMac_PRECHECK(SCPositionDialog); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &id)) - return NULL; - _rv = SCPositionDialog(ci, - id, - &where); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildPoint, where); - return _res; -} - -static PyObject *Qt_SCSetTestImagePictHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - PicHandle testPict; - Rect testRect; - short testFlags; -#ifndef SCSetTestImagePictHandle - PyMac_PRECHECK(SCSetTestImagePictHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - CmpInstObj_Convert, &ci, - ResObj_Convert, &testPict, - &testFlags)) - return NULL; - _rv = SCSetTestImagePictHandle(ci, - testPict, - &testRect, - testFlags); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &testRect); - return _res; -} - -static PyObject *Qt_SCSetTestImagePictFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - short testFileRef; - Rect testRect; - short testFlags; -#ifndef SCSetTestImagePictFile - PyMac_PRECHECK(SCSetTestImagePictFile); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - CmpInstObj_Convert, &ci, - &testFileRef, - &testFlags)) - return NULL; - _rv = SCSetTestImagePictFile(ci, - testFileRef, - &testRect, - testFlags); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &testRect); - return _res; -} - -static PyObject *Qt_SCSetTestImagePixMap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - PixMapHandle testPixMap; - Rect testRect; - short testFlags; -#ifndef SCSetTestImagePixMap - PyMac_PRECHECK(SCSetTestImagePixMap); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - CmpInstObj_Convert, &ci, - ResObj_Convert, &testPixMap, - &testFlags)) - return NULL; - _rv = SCSetTestImagePixMap(ci, - testPixMap, - &testRect, - testFlags); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &testRect); - return _res; -} - -static PyObject *Qt_SCGetBestDeviceRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - Rect r; -#ifndef SCGetBestDeviceRect - PyMac_PRECHECK(SCGetBestDeviceRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = SCGetBestDeviceRect(ci, - &r); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &r); - return _res; -} - -static PyObject *Qt_SCRequestImageSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; -#ifndef SCRequestImageSettings - PyMac_PRECHECK(SCRequestImageSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = SCRequestImageSettings(ci); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SCCompressImage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - PixMapHandle src; - Rect srcRect; - ImageDescriptionHandle desc; - Handle data; -#ifndef SCCompressImage - PyMac_PRECHECK(SCCompressImage); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &src, - PyMac_GetRect, &srcRect)) - return NULL; - _rv = SCCompressImage(ci, - src, - &srcRect, - &desc, - &data); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, desc, - ResObj_New, data); - return _res; -} - -static PyObject *Qt_SCCompressPicture(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - PicHandle srcPicture; - PicHandle dstPicture; -#ifndef SCCompressPicture - PyMac_PRECHECK(SCCompressPicture); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &srcPicture, - ResObj_Convert, &dstPicture)) - return NULL; - _rv = SCCompressPicture(ci, - srcPicture, - dstPicture); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SCCompressPictureFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - short srcRefNum; - short dstRefNum; -#ifndef SCCompressPictureFile - PyMac_PRECHECK(SCCompressPictureFile); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - CmpInstObj_Convert, &ci, - &srcRefNum, - &dstRefNum)) - return NULL; - _rv = SCCompressPictureFile(ci, - srcRefNum, - dstRefNum); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SCRequestSequenceSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; -#ifndef SCRequestSequenceSettings - PyMac_PRECHECK(SCRequestSequenceSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = SCRequestSequenceSettings(ci); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SCCompressSequenceBegin(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - PixMapHandle src; - Rect srcRect; - ImageDescriptionHandle desc; -#ifndef SCCompressSequenceBegin - PyMac_PRECHECK(SCCompressSequenceBegin); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &src, - PyMac_GetRect, &srcRect)) - return NULL; - _rv = SCCompressSequenceBegin(ci, - src, - &srcRect, - &desc); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, desc); - return _res; -} - -static PyObject *Qt_SCCompressSequenceFrame(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - PixMapHandle src; - Rect srcRect; - Handle data; - long dataSize; - short notSyncFlag; -#ifndef SCCompressSequenceFrame - PyMac_PRECHECK(SCCompressSequenceFrame); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &src, - PyMac_GetRect, &srcRect)) - return NULL; - _rv = SCCompressSequenceFrame(ci, - src, - &srcRect, - &data, - &dataSize, - ¬SyncFlag); - _res = Py_BuildValue("lO&lh", - _rv, - ResObj_New, data, - dataSize, - notSyncFlag); - return _res; -} - -static PyObject *Qt_SCCompressSequenceEnd(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; -#ifndef SCCompressSequenceEnd - PyMac_PRECHECK(SCCompressSequenceEnd); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = SCCompressSequenceEnd(ci); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SCDefaultPictHandleSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - PicHandle srcPicture; - short motion; -#ifndef SCDefaultPictHandleSettings - PyMac_PRECHECK(SCDefaultPictHandleSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - CmpInstObj_Convert, &ci, - ResObj_Convert, &srcPicture, - &motion)) - return NULL; - _rv = SCDefaultPictHandleSettings(ci, - srcPicture, - motion); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SCDefaultPictFileSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - short srcRef; - short motion; -#ifndef SCDefaultPictFileSettings - PyMac_PRECHECK(SCDefaultPictFileSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - CmpInstObj_Convert, &ci, - &srcRef, - &motion)) - return NULL; - _rv = SCDefaultPictFileSettings(ci, - srcRef, - motion); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SCDefaultPixMapSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - PixMapHandle src; - short motion; -#ifndef SCDefaultPixMapSettings - PyMac_PRECHECK(SCDefaultPixMapSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - CmpInstObj_Convert, &ci, - ResObj_Convert, &src, - &motion)) - return NULL; - _rv = SCDefaultPixMapSettings(ci, - src, - motion); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SCGetInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - OSType infoType; - void * info; -#ifndef SCGetInfo - PyMac_PRECHECK(SCGetInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&O&s", - CmpInstObj_Convert, &ci, - PyMac_GetOSType, &infoType, - &info)) - return NULL; - _rv = SCGetInfo(ci, - infoType, - info); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SCSetInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - OSType infoType; - void * info; -#ifndef SCSetInfo - PyMac_PRECHECK(SCSetInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&O&s", - CmpInstObj_Convert, &ci, - PyMac_GetOSType, &infoType, - &info)) - return NULL; - _rv = SCSetInfo(ci, - infoType, - info); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SCSetCompressFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - long flags; -#ifndef SCSetCompressFlags - PyMac_PRECHECK(SCSetCompressFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &flags)) - return NULL; - _rv = SCSetCompressFlags(ci, - flags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SCGetCompressFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - long flags; -#ifndef SCGetCompressFlags - PyMac_PRECHECK(SCGetCompressFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = SCGetCompressFlags(ci, - &flags); - _res = Py_BuildValue("ll", - _rv, - flags); - return _res; -} - -static PyObject *Qt_SCGetSettingsAsText(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; - Handle text; -#ifndef SCGetSettingsAsText - PyMac_PRECHECK(SCGetSettingsAsText); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = SCGetSettingsAsText(ci, - &text); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, text); - return _res; -} - -static PyObject *Qt_SCAsyncIdle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance ci; -#ifndef SCAsyncIdle - PyMac_PRECHECK(SCAsyncIdle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = SCAsyncIdle(ci); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TweenerReset(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TweenerComponent tc; -#ifndef TweenerReset - PyMac_PRECHECK(TweenerReset); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &tc)) - return NULL; - _rv = TweenerReset(tc); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TCGetSourceRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - HandlerError _rv; - MediaHandler mh; - TimeCodeDescriptionHandle tcdH; - UserData srefH; -#ifndef TCGetSourceRef - PyMac_PRECHECK(TCGetSourceRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - ResObj_Convert, &tcdH)) - return NULL; - _rv = TCGetSourceRef(mh, - tcdH, - &srefH); - _res = Py_BuildValue("lO&", - _rv, - UserDataObj_New, srefH); - return _res; -} - -static PyObject *Qt_TCSetSourceRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - HandlerError _rv; - MediaHandler mh; - TimeCodeDescriptionHandle tcdH; - UserData srefH; -#ifndef TCSetSourceRef - PyMac_PRECHECK(TCSetSourceRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &mh, - ResObj_Convert, &tcdH, - UserDataObj_Convert, &srefH)) - return NULL; - _rv = TCSetSourceRef(mh, - tcdH, - srefH); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TCSetTimeCodeFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - HandlerError _rv; - MediaHandler mh; - long flags; - long flagsMask; -#ifndef TCSetTimeCodeFlags - PyMac_PRECHECK(TCSetTimeCodeFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mh, - &flags, - &flagsMask)) - return NULL; - _rv = TCSetTimeCodeFlags(mh, - flags, - flagsMask); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TCGetTimeCodeFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - HandlerError _rv; - MediaHandler mh; - long flags; -#ifndef TCGetTimeCodeFlags - PyMac_PRECHECK(TCGetTimeCodeFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = TCGetTimeCodeFlags(mh, - &flags); - _res = Py_BuildValue("ll", - _rv, - flags); - return _res; -} - -static PyObject *Qt_MovieImportHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - Handle dataH; - Movie theMovie; - Track targetTrack; - Track usedTrack; - TimeValue atTime; - TimeValue addedDuration; - long inFlags; - long outFlags; -#ifndef MovieImportHandle - PyMac_PRECHECK(MovieImportHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&ll", - CmpInstObj_Convert, &ci, - ResObj_Convert, &dataH, - MovieObj_Convert, &theMovie, - TrackObj_Convert, &targetTrack, - &atTime, - &inFlags)) - return NULL; - _rv = MovieImportHandle(ci, - dataH, - theMovie, - targetTrack, - &usedTrack, - atTime, - &addedDuration, - inFlags, - &outFlags); - _res = Py_BuildValue("lO&ll", - _rv, - TrackObj_New, usedTrack, - addedDuration, - outFlags); - return _res; -} - -static PyObject *Qt_MovieImportFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - FSSpec theFile; - Movie theMovie; - Track targetTrack; - Track usedTrack; - TimeValue atTime; - TimeValue addedDuration; - long inFlags; - long outFlags; -#ifndef MovieImportFile - PyMac_PRECHECK(MovieImportFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&ll", - CmpInstObj_Convert, &ci, - PyMac_GetFSSpec, &theFile, - MovieObj_Convert, &theMovie, - TrackObj_Convert, &targetTrack, - &atTime, - &inFlags)) - return NULL; - _rv = MovieImportFile(ci, - &theFile, - theMovie, - targetTrack, - &usedTrack, - atTime, - &addedDuration, - inFlags, - &outFlags); - _res = Py_BuildValue("lO&ll", - _rv, - TrackObj_New, usedTrack, - addedDuration, - outFlags); - return _res; -} - -static PyObject *Qt_MovieImportSetSampleDuration(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - TimeValue duration; - TimeScale scale; -#ifndef MovieImportSetSampleDuration - PyMac_PRECHECK(MovieImportSetSampleDuration); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &ci, - &duration, - &scale)) - return NULL; - _rv = MovieImportSetSampleDuration(ci, - duration, - scale); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieImportSetSampleDescription(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - SampleDescriptionHandle desc; - OSType mediaType; -#ifndef MovieImportSetSampleDescription - PyMac_PRECHECK(MovieImportSetSampleDescription); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &desc, - PyMac_GetOSType, &mediaType)) - return NULL; - _rv = MovieImportSetSampleDescription(ci, - desc, - mediaType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieImportSetMediaFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - AliasHandle alias; -#ifndef MovieImportSetMediaFile - PyMac_PRECHECK(MovieImportSetMediaFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &alias)) - return NULL; - _rv = MovieImportSetMediaFile(ci, - alias); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieImportSetDimensions(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - Fixed width; - Fixed height; -#ifndef MovieImportSetDimensions - PyMac_PRECHECK(MovieImportSetDimensions); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetFixed, &width, - PyMac_GetFixed, &height)) - return NULL; - _rv = MovieImportSetDimensions(ci, - width, - height); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieImportSetChunkSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - long chunkSize; -#ifndef MovieImportSetChunkSize - PyMac_PRECHECK(MovieImportSetChunkSize); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &chunkSize)) - return NULL; - _rv = MovieImportSetChunkSize(ci, - chunkSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieImportSetAuxiliaryData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - Handle data; - OSType handleType; -#ifndef MovieImportSetAuxiliaryData - PyMac_PRECHECK(MovieImportSetAuxiliaryData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &data, - PyMac_GetOSType, &handleType)) - return NULL; - _rv = MovieImportSetAuxiliaryData(ci, - data, - handleType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieImportSetFromScrap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - Boolean fromScrap; -#ifndef MovieImportSetFromScrap - PyMac_PRECHECK(MovieImportSetFromScrap); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - CmpInstObj_Convert, &ci, - &fromScrap)) - return NULL; - _rv = MovieImportSetFromScrap(ci, - fromScrap); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieImportDoUserDialog(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - FSSpec theFile; - Handle theData; - Boolean canceled; -#ifndef MovieImportDoUserDialog - PyMac_PRECHECK(MovieImportDoUserDialog); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetFSSpec, &theFile, - ResObj_Convert, &theData)) - return NULL; - _rv = MovieImportDoUserDialog(ci, - &theFile, - theData, - &canceled); - _res = Py_BuildValue("lb", - _rv, - canceled); - return _res; -} - -static PyObject *Qt_MovieImportSetDuration(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - TimeValue duration; -#ifndef MovieImportSetDuration - PyMac_PRECHECK(MovieImportSetDuration); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &duration)) - return NULL; - _rv = MovieImportSetDuration(ci, - duration); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieImportGetAuxiliaryDataType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - OSType auxType; -#ifndef MovieImportGetAuxiliaryDataType - PyMac_PRECHECK(MovieImportGetAuxiliaryDataType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = MovieImportGetAuxiliaryDataType(ci, - &auxType); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildOSType, auxType); - return _res; -} - -static PyObject *Qt_MovieImportValidate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - FSSpec theFile; - Handle theData; - Boolean valid; -#ifndef MovieImportValidate - PyMac_PRECHECK(MovieImportValidate); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetFSSpec, &theFile, - ResObj_Convert, &theData)) - return NULL; - _rv = MovieImportValidate(ci, - &theFile, - theData, - &valid); - _res = Py_BuildValue("lb", - _rv, - valid); - return _res; -} - -static PyObject *Qt_MovieImportGetFileType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - OSType fileType; -#ifndef MovieImportGetFileType - PyMac_PRECHECK(MovieImportGetFileType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = MovieImportGetFileType(ci, - &fileType); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildOSType, fileType); - return _res; -} - -static PyObject *Qt_MovieImportDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - Handle dataRef; - OSType dataRefType; - Movie theMovie; - Track targetTrack; - Track usedTrack; - TimeValue atTime; - TimeValue addedDuration; - long inFlags; - long outFlags; -#ifndef MovieImportDataRef - PyMac_PRECHECK(MovieImportDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&O&ll", - CmpInstObj_Convert, &ci, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType, - MovieObj_Convert, &theMovie, - TrackObj_Convert, &targetTrack, - &atTime, - &inFlags)) - return NULL; - _rv = MovieImportDataRef(ci, - dataRef, - dataRefType, - theMovie, - targetTrack, - &usedTrack, - atTime, - &addedDuration, - inFlags, - &outFlags); - _res = Py_BuildValue("lO&ll", - _rv, - TrackObj_New, usedTrack, - addedDuration, - outFlags); - return _res; -} - -static PyObject *Qt_MovieImportGetSampleDescription(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - SampleDescriptionHandle desc; - OSType mediaType; -#ifndef MovieImportGetSampleDescription - PyMac_PRECHECK(MovieImportGetSampleDescription); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = MovieImportGetSampleDescription(ci, - &desc, - &mediaType); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, desc, - PyMac_BuildOSType, mediaType); - return _res; -} - -static PyObject *Qt_MovieImportSetOffsetAndLimit(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - unsigned long offset; - unsigned long limit; -#ifndef MovieImportSetOffsetAndLimit - PyMac_PRECHECK(MovieImportSetOffsetAndLimit); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &ci, - &offset, - &limit)) - return NULL; - _rv = MovieImportSetOffsetAndLimit(ci, - offset, - limit); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieImportSetOffsetAndLimit64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - wide offset; - wide limit; -#ifndef MovieImportSetOffsetAndLimit64 - PyMac_PRECHECK(MovieImportSetOffsetAndLimit64); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - PyMac_Getwide, &offset, - PyMac_Getwide, &limit)) - return NULL; - _rv = MovieImportSetOffsetAndLimit64(ci, - &offset, - &limit); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieImportIdle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - long inFlags; - long outFlags; -#ifndef MovieImportIdle - PyMac_PRECHECK(MovieImportIdle); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &inFlags)) - return NULL; - _rv = MovieImportIdle(ci, - inFlags, - &outFlags); - _res = Py_BuildValue("ll", - _rv, - outFlags); - return _res; -} - -static PyObject *Qt_MovieImportValidateDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - Handle dataRef; - OSType dataRefType; - UInt8 valid; -#ifndef MovieImportValidateDataRef - PyMac_PRECHECK(MovieImportValidateDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType)) - return NULL; - _rv = MovieImportValidateDataRef(ci, - dataRef, - dataRefType, - &valid); - _res = Py_BuildValue("lb", - _rv, - valid); - return _res; -} - -static PyObject *Qt_MovieImportGetLoadState(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - long importerLoadState; -#ifndef MovieImportGetLoadState - PyMac_PRECHECK(MovieImportGetLoadState); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = MovieImportGetLoadState(ci, - &importerLoadState); - _res = Py_BuildValue("ll", - _rv, - importerLoadState); - return _res; -} - -static PyObject *Qt_MovieImportGetMaxLoadedTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - TimeValue time; -#ifndef MovieImportGetMaxLoadedTime - PyMac_PRECHECK(MovieImportGetMaxLoadedTime); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = MovieImportGetMaxLoadedTime(ci, - &time); - _res = Py_BuildValue("ll", - _rv, - time); - return _res; -} - -static PyObject *Qt_MovieImportEstimateCompletionTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - TimeRecord time; -#ifndef MovieImportEstimateCompletionTime - PyMac_PRECHECK(MovieImportEstimateCompletionTime); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = MovieImportEstimateCompletionTime(ci, - &time); - _res = Py_BuildValue("lO&", - _rv, - QtTimeRecord_New, &time); - return _res; -} - -static PyObject *Qt_MovieImportSetDontBlock(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - Boolean dontBlock; -#ifndef MovieImportSetDontBlock - PyMac_PRECHECK(MovieImportSetDontBlock); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - CmpInstObj_Convert, &ci, - &dontBlock)) - return NULL; - _rv = MovieImportSetDontBlock(ci, - dontBlock); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieImportGetDontBlock(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - Boolean willBlock; -#ifndef MovieImportGetDontBlock - PyMac_PRECHECK(MovieImportGetDontBlock); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = MovieImportGetDontBlock(ci, - &willBlock); - _res = Py_BuildValue("lb", - _rv, - willBlock); - return _res; -} - -static PyObject *Qt_MovieImportSetIdleManager(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - IdleManager im; -#ifndef MovieImportSetIdleManager - PyMac_PRECHECK(MovieImportSetIdleManager); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - IdleManagerObj_Convert, &im)) - return NULL; - _rv = MovieImportSetIdleManager(ci, - im); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieImportSetNewMovieFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - long newMovieFlags; -#ifndef MovieImportSetNewMovieFlags - PyMac_PRECHECK(MovieImportSetNewMovieFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &newMovieFlags)) - return NULL; - _rv = MovieImportSetNewMovieFlags(ci, - newMovieFlags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieImportGetDestinationMediaType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieImportComponent ci; - OSType mediaType; -#ifndef MovieImportGetDestinationMediaType - PyMac_PRECHECK(MovieImportGetDestinationMediaType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = MovieImportGetDestinationMediaType(ci, - &mediaType); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildOSType, mediaType); - return _res; -} - -static PyObject *Qt_MovieExportToHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieExportComponent ci; - Handle dataH; - Movie theMovie; - Track onlyThisTrack; - TimeValue startTime; - TimeValue duration; -#ifndef MovieExportToHandle - PyMac_PRECHECK(MovieExportToHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&ll", - CmpInstObj_Convert, &ci, - ResObj_Convert, &dataH, - MovieObj_Convert, &theMovie, - TrackObj_Convert, &onlyThisTrack, - &startTime, - &duration)) - return NULL; - _rv = MovieExportToHandle(ci, - dataH, - theMovie, - onlyThisTrack, - startTime, - duration); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieExportToFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieExportComponent ci; - FSSpec theFile; - Movie theMovie; - Track onlyThisTrack; - TimeValue startTime; - TimeValue duration; -#ifndef MovieExportToFile - PyMac_PRECHECK(MovieExportToFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&ll", - CmpInstObj_Convert, &ci, - PyMac_GetFSSpec, &theFile, - MovieObj_Convert, &theMovie, - TrackObj_Convert, &onlyThisTrack, - &startTime, - &duration)) - return NULL; - _rv = MovieExportToFile(ci, - &theFile, - theMovie, - onlyThisTrack, - startTime, - duration); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieExportGetAuxiliaryData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieExportComponent ci; - Handle dataH; - OSType handleType; -#ifndef MovieExportGetAuxiliaryData - PyMac_PRECHECK(MovieExportGetAuxiliaryData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &dataH)) - return NULL; - _rv = MovieExportGetAuxiliaryData(ci, - dataH, - &handleType); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildOSType, handleType); - return _res; -} - -static PyObject *Qt_MovieExportSetSampleDescription(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieExportComponent ci; - SampleDescriptionHandle desc; - OSType mediaType; -#ifndef MovieExportSetSampleDescription - PyMac_PRECHECK(MovieExportSetSampleDescription); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &desc, - PyMac_GetOSType, &mediaType)) - return NULL; - _rv = MovieExportSetSampleDescription(ci, - desc, - mediaType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieExportDoUserDialog(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieExportComponent ci; - Movie theMovie; - Track onlyThisTrack; - TimeValue startTime; - TimeValue duration; - Boolean canceled; -#ifndef MovieExportDoUserDialog - PyMac_PRECHECK(MovieExportDoUserDialog); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&ll", - CmpInstObj_Convert, &ci, - MovieObj_Convert, &theMovie, - TrackObj_Convert, &onlyThisTrack, - &startTime, - &duration)) - return NULL; - _rv = MovieExportDoUserDialog(ci, - theMovie, - onlyThisTrack, - startTime, - duration, - &canceled); - _res = Py_BuildValue("lb", - _rv, - canceled); - return _res; -} - -static PyObject *Qt_MovieExportGetCreatorType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieExportComponent ci; - OSType creator; -#ifndef MovieExportGetCreatorType - PyMac_PRECHECK(MovieExportGetCreatorType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = MovieExportGetCreatorType(ci, - &creator); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildOSType, creator); - return _res; -} - -static PyObject *Qt_MovieExportToDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieExportComponent ci; - Handle dataRef; - OSType dataRefType; - Movie theMovie; - Track onlyThisTrack; - TimeValue startTime; - TimeValue duration; -#ifndef MovieExportToDataRef - PyMac_PRECHECK(MovieExportToDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&O&ll", - CmpInstObj_Convert, &ci, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType, - MovieObj_Convert, &theMovie, - TrackObj_Convert, &onlyThisTrack, - &startTime, - &duration)) - return NULL; - _rv = MovieExportToDataRef(ci, - dataRef, - dataRefType, - theMovie, - onlyThisTrack, - startTime, - duration); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieExportFromProceduresToDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieExportComponent ci; - Handle dataRef; - OSType dataRefType; -#ifndef MovieExportFromProceduresToDataRef - PyMac_PRECHECK(MovieExportFromProceduresToDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType)) - return NULL; - _rv = MovieExportFromProceduresToDataRef(ci, - dataRef, - dataRefType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieExportValidate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieExportComponent ci; - Movie theMovie; - Track onlyThisTrack; - Boolean valid; -#ifndef MovieExportValidate - PyMac_PRECHECK(MovieExportValidate); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &ci, - MovieObj_Convert, &theMovie, - TrackObj_Convert, &onlyThisTrack)) - return NULL; - _rv = MovieExportValidate(ci, - theMovie, - onlyThisTrack, - &valid); - _res = Py_BuildValue("lb", - _rv, - valid); - return _res; -} - -static PyObject *Qt_MovieExportGetFileNameExtension(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieExportComponent ci; - OSType extension; -#ifndef MovieExportGetFileNameExtension - PyMac_PRECHECK(MovieExportGetFileNameExtension); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = MovieExportGetFileNameExtension(ci, - &extension); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildOSType, extension); - return _res; -} - -static PyObject *Qt_MovieExportGetShortFileTypeString(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieExportComponent ci; - Str255 typeString; -#ifndef MovieExportGetShortFileTypeString - PyMac_PRECHECK(MovieExportGetShortFileTypeString); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetStr255, typeString)) - return NULL; - _rv = MovieExportGetShortFileTypeString(ci, - typeString); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MovieExportGetSourceMediaType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MovieExportComponent ci; - OSType mediaType; -#ifndef MovieExportGetSourceMediaType - PyMac_PRECHECK(MovieExportGetSourceMediaType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = MovieExportGetSourceMediaType(ci, - &mediaType); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildOSType, mediaType); - return _res; -} - -static PyObject *Qt_TextExportGetTimeFraction(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TextExportComponent ci; - long movieTimeFraction; -#ifndef TextExportGetTimeFraction - PyMac_PRECHECK(TextExportGetTimeFraction); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = TextExportGetTimeFraction(ci, - &movieTimeFraction); - _res = Py_BuildValue("ll", - _rv, - movieTimeFraction); - return _res; -} - -static PyObject *Qt_TextExportSetTimeFraction(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TextExportComponent ci; - long movieTimeFraction; -#ifndef TextExportSetTimeFraction - PyMac_PRECHECK(TextExportSetTimeFraction); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &movieTimeFraction)) - return NULL; - _rv = TextExportSetTimeFraction(ci, - movieTimeFraction); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TextExportGetSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TextExportComponent ci; - long setting; -#ifndef TextExportGetSettings - PyMac_PRECHECK(TextExportGetSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = TextExportGetSettings(ci, - &setting); - _res = Py_BuildValue("ll", - _rv, - setting); - return _res; -} - -static PyObject *Qt_TextExportSetSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TextExportComponent ci; - long setting; -#ifndef TextExportSetSettings - PyMac_PRECHECK(TextExportSetSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &setting)) - return NULL; - _rv = TextExportSetSettings(ci, - setting); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MIDIImportGetSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TextExportComponent ci; - long setting; -#ifndef MIDIImportGetSettings - PyMac_PRECHECK(MIDIImportGetSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = MIDIImportGetSettings(ci, - &setting); - _res = Py_BuildValue("ll", - _rv, - setting); - return _res; -} - -static PyObject *Qt_MIDIImportSetSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TextExportComponent ci; - long setting; -#ifndef MIDIImportSetSettings - PyMac_PRECHECK(MIDIImportSetSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &setting)) - return NULL; - _rv = MIDIImportSetSettings(ci, - setting); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImageImportSetSequenceEnabled(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicImageMovieImportComponent ci; - Boolean enable; -#ifndef GraphicsImageImportSetSequenceEnabled - PyMac_PRECHECK(GraphicsImageImportSetSequenceEnabled); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - CmpInstObj_Convert, &ci, - &enable)) - return NULL; - _rv = GraphicsImageImportSetSequenceEnabled(ci, - enable); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_GraphicsImageImportGetSequenceEnabled(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - GraphicImageMovieImportComponent ci; - Boolean enable; -#ifndef GraphicsImageImportGetSequenceEnabled - PyMac_PRECHECK(GraphicsImageImportGetSequenceEnabled); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = GraphicsImageImportGetSequenceEnabled(ci, - &enable); - _res = Py_BuildValue("lb", - _rv, - enable); - return _res; -} - -static PyObject *Qt_PreviewShowData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - pnotComponent p; - OSType dataType; - Handle data; - Rect inHere; -#ifndef PreviewShowData - PyMac_PRECHECK(PreviewShowData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - CmpInstObj_Convert, &p, - PyMac_GetOSType, &dataType, - ResObj_Convert, &data, - PyMac_GetRect, &inHere)) - return NULL; - _rv = PreviewShowData(p, - dataType, - data, - &inHere); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_PreviewMakePreviewReference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - pnotComponent p; - OSType previewType; - short resID; - FSSpec sourceFile; -#ifndef PreviewMakePreviewReference - PyMac_PRECHECK(PreviewMakePreviewReference); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &p, - PyMac_GetFSSpec, &sourceFile)) - return NULL; - _rv = PreviewMakePreviewReference(p, - &previewType, - &resID, - &sourceFile); - _res = Py_BuildValue("lO&h", - _rv, - PyMac_BuildOSType, previewType, - resID); - return _res; -} - -static PyObject *Qt_PreviewEvent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - pnotComponent p; - EventRecord e; - Boolean handledEvent; -#ifndef PreviewEvent - PyMac_PRECHECK(PreviewEvent); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &p)) - return NULL; - _rv = PreviewEvent(p, - &e, - &handledEvent); - _res = Py_BuildValue("lO&b", - _rv, - PyMac_BuildEventRecord, &e, - handledEvent); - return _res; -} - -static PyObject *Qt_DataCodecDecompress(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataCodecComponent dc; - void * srcData; - UInt32 srcSize; - void * dstData; - UInt32 dstBufferSize; -#ifndef DataCodecDecompress - PyMac_PRECHECK(DataCodecDecompress); -#endif - if (!PyArg_ParseTuple(_args, "O&slsl", - CmpInstObj_Convert, &dc, - &srcData, - &srcSize, - &dstData, - &dstBufferSize)) - return NULL; - _rv = DataCodecDecompress(dc, - srcData, - srcSize, - dstData, - dstBufferSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataCodecGetCompressBufferSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataCodecComponent dc; - UInt32 srcSize; - UInt32 dstSize; -#ifndef DataCodecGetCompressBufferSize - PyMac_PRECHECK(DataCodecGetCompressBufferSize); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &dc, - &srcSize)) - return NULL; - _rv = DataCodecGetCompressBufferSize(dc, - srcSize, - &dstSize); - _res = Py_BuildValue("ll", - _rv, - dstSize); - return _res; -} - -static PyObject *Qt_DataCodecCompress(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataCodecComponent dc; - void * srcData; - UInt32 srcSize; - void * dstData; - UInt32 dstBufferSize; - UInt32 actualDstSize; - UInt32 decompressSlop; -#ifndef DataCodecCompress - PyMac_PRECHECK(DataCodecCompress); -#endif - if (!PyArg_ParseTuple(_args, "O&slsl", - CmpInstObj_Convert, &dc, - &srcData, - &srcSize, - &dstData, - &dstBufferSize)) - return NULL; - _rv = DataCodecCompress(dc, - srcData, - srcSize, - dstData, - dstBufferSize, - &actualDstSize, - &decompressSlop); - _res = Py_BuildValue("lll", - _rv, - actualDstSize, - decompressSlop); - return _res; -} - -static PyObject *Qt_DataCodecBeginInterruptSafe(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataCodecComponent dc; - unsigned long maxSrcSize; -#ifndef DataCodecBeginInterruptSafe - PyMac_PRECHECK(DataCodecBeginInterruptSafe); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &dc, - &maxSrcSize)) - return NULL; - _rv = DataCodecBeginInterruptSafe(dc, - maxSrcSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataCodecEndInterruptSafe(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataCodecComponent dc; -#ifndef DataCodecEndInterruptSafe - PyMac_PRECHECK(DataCodecEndInterruptSafe); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dc)) - return NULL; - _rv = DataCodecEndInterruptSafe(dc); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHGetData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Handle h; - long hOffset; - long offset; - long size; -#ifndef DataHGetData - PyMac_PRECHECK(DataHGetData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&lll", - CmpInstObj_Convert, &dh, - ResObj_Convert, &h, - &hOffset, - &offset, - &size)) - return NULL; - _rv = DataHGetData(dh, - h, - hOffset, - offset, - size); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHPutData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Handle h; - long hOffset; - long offset; - long size; -#ifndef DataHPutData - PyMac_PRECHECK(DataHPutData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&ll", - CmpInstObj_Convert, &dh, - ResObj_Convert, &h, - &hOffset, - &size)) - return NULL; - _rv = DataHPutData(dh, - h, - hOffset, - &offset, - size); - _res = Py_BuildValue("ll", - _rv, - offset); - return _res; -} - -static PyObject *Qt_DataHFlushData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; -#ifndef DataHFlushData - PyMac_PRECHECK(DataHFlushData); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHFlushData(dh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHOpenForWrite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; -#ifndef DataHOpenForWrite - PyMac_PRECHECK(DataHOpenForWrite); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHOpenForWrite(dh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHCloseForWrite(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; -#ifndef DataHCloseForWrite - PyMac_PRECHECK(DataHCloseForWrite); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHCloseForWrite(dh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHOpenForRead(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; -#ifndef DataHOpenForRead - PyMac_PRECHECK(DataHOpenForRead); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHOpenForRead(dh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHCloseForRead(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; -#ifndef DataHCloseForRead - PyMac_PRECHECK(DataHCloseForRead); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHCloseForRead(dh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHSetDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Handle dataRef; -#ifndef DataHSetDataRef - PyMac_PRECHECK(DataHSetDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - ResObj_Convert, &dataRef)) - return NULL; - _rv = DataHSetDataRef(dh, - dataRef); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHGetDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Handle dataRef; -#ifndef DataHGetDataRef - PyMac_PRECHECK(DataHGetDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetDataRef(dh, - &dataRef); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, dataRef); - return _res; -} - -static PyObject *Qt_DataHCompareDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Handle dataRef; - Boolean equal; -#ifndef DataHCompareDataRef - PyMac_PRECHECK(DataHCompareDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - ResObj_Convert, &dataRef)) - return NULL; - _rv = DataHCompareDataRef(dh, - dataRef, - &equal); - _res = Py_BuildValue("lb", - _rv, - equal); - return _res; -} - -static PyObject *Qt_DataHTask(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; -#ifndef DataHTask - PyMac_PRECHECK(DataHTask); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHTask(dh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHFinishData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Ptr PlaceToPutDataPtr; - Boolean Cancel; -#ifndef DataHFinishData - PyMac_PRECHECK(DataHFinishData); -#endif - if (!PyArg_ParseTuple(_args, "O&sb", - CmpInstObj_Convert, &dh, - &PlaceToPutDataPtr, - &Cancel)) - return NULL; - _rv = DataHFinishData(dh, - PlaceToPutDataPtr, - Cancel); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHFlushCache(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; -#ifndef DataHFlushCache - PyMac_PRECHECK(DataHFlushCache); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHFlushCache(dh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHResolveDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Handle theDataRef; - Boolean wasChanged; - Boolean userInterfaceAllowed; -#ifndef DataHResolveDataRef - PyMac_PRECHECK(DataHResolveDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&b", - CmpInstObj_Convert, &dh, - ResObj_Convert, &theDataRef, - &userInterfaceAllowed)) - return NULL; - _rv = DataHResolveDataRef(dh, - theDataRef, - &wasChanged, - userInterfaceAllowed); - _res = Py_BuildValue("lb", - _rv, - wasChanged); - return _res; -} - -static PyObject *Qt_DataHGetFileSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long fileSize; -#ifndef DataHGetFileSize - PyMac_PRECHECK(DataHGetFileSize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetFileSize(dh, - &fileSize); - _res = Py_BuildValue("ll", - _rv, - fileSize); - return _res; -} - -static PyObject *Qt_DataHCanUseDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Handle dataRef; - long useFlags; -#ifndef DataHCanUseDataRef - PyMac_PRECHECK(DataHCanUseDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - ResObj_Convert, &dataRef)) - return NULL; - _rv = DataHCanUseDataRef(dh, - dataRef, - &useFlags); - _res = Py_BuildValue("ll", - _rv, - useFlags); - return _res; -} - -static PyObject *Qt_DataHPreextend(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - unsigned long maxToAdd; - unsigned long spaceAdded; -#ifndef DataHPreextend - PyMac_PRECHECK(DataHPreextend); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &dh, - &maxToAdd)) - return NULL; - _rv = DataHPreextend(dh, - maxToAdd, - &spaceAdded); - _res = Py_BuildValue("ll", - _rv, - spaceAdded); - return _res; -} - -static PyObject *Qt_DataHSetFileSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long fileSize; -#ifndef DataHSetFileSize - PyMac_PRECHECK(DataHSetFileSize); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &dh, - &fileSize)) - return NULL; - _rv = DataHSetFileSize(dh, - fileSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHGetFreeSpace(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - unsigned long freeSize; -#ifndef DataHGetFreeSpace - PyMac_PRECHECK(DataHGetFreeSpace); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetFreeSpace(dh, - &freeSize); - _res = Py_BuildValue("ll", - _rv, - freeSize); - return _res; -} - -static PyObject *Qt_DataHCreateFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - OSType creator; - Boolean deleteExisting; -#ifndef DataHCreateFile - PyMac_PRECHECK(DataHCreateFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&b", - CmpInstObj_Convert, &dh, - PyMac_GetOSType, &creator, - &deleteExisting)) - return NULL; - _rv = DataHCreateFile(dh, - creator, - deleteExisting); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHGetPreferredBlockSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long blockSize; -#ifndef DataHGetPreferredBlockSize - PyMac_PRECHECK(DataHGetPreferredBlockSize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetPreferredBlockSize(dh, - &blockSize); - _res = Py_BuildValue("ll", - _rv, - blockSize); - return _res; -} - -static PyObject *Qt_DataHGetDeviceIndex(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long deviceIndex; -#ifndef DataHGetDeviceIndex - PyMac_PRECHECK(DataHGetDeviceIndex); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetDeviceIndex(dh, - &deviceIndex); - _res = Py_BuildValue("ll", - _rv, - deviceIndex); - return _res; -} - -static PyObject *Qt_DataHIsStreamingDataHandler(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Boolean yes; -#ifndef DataHIsStreamingDataHandler - PyMac_PRECHECK(DataHIsStreamingDataHandler); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHIsStreamingDataHandler(dh, - &yes); - _res = Py_BuildValue("lb", - _rv, - yes); - return _res; -} - -static PyObject *Qt_DataHGetDataInBuffer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long startOffset; - long size; -#ifndef DataHGetDataInBuffer - PyMac_PRECHECK(DataHGetDataInBuffer); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &dh, - &startOffset)) - return NULL; - _rv = DataHGetDataInBuffer(dh, - startOffset, - &size); - _res = Py_BuildValue("ll", - _rv, - size); - return _res; -} - -static PyObject *Qt_DataHGetScheduleAheadTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long millisecs; -#ifndef DataHGetScheduleAheadTime - PyMac_PRECHECK(DataHGetScheduleAheadTime); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetScheduleAheadTime(dh, - &millisecs); - _res = Py_BuildValue("ll", - _rv, - millisecs); - return _res; -} - -static PyObject *Qt_DataHSetCacheSizeLimit(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Size cacheSizeLimit; -#ifndef DataHSetCacheSizeLimit - PyMac_PRECHECK(DataHSetCacheSizeLimit); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &dh, - &cacheSizeLimit)) - return NULL; - _rv = DataHSetCacheSizeLimit(dh, - cacheSizeLimit); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHGetCacheSizeLimit(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Size cacheSizeLimit; -#ifndef DataHGetCacheSizeLimit - PyMac_PRECHECK(DataHGetCacheSizeLimit); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetCacheSizeLimit(dh, - &cacheSizeLimit); - _res = Py_BuildValue("ll", - _rv, - cacheSizeLimit); - return _res; -} - -static PyObject *Qt_DataHGetMovie(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Movie theMovie; - short id; -#ifndef DataHGetMovie - PyMac_PRECHECK(DataHGetMovie); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetMovie(dh, - &theMovie, - &id); - _res = Py_BuildValue("lO&h", - _rv, - MovieObj_New, theMovie, - id); - return _res; -} - -static PyObject *Qt_DataHAddMovie(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Movie theMovie; - short id; -#ifndef DataHAddMovie - PyMac_PRECHECK(DataHAddMovie); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - MovieObj_Convert, &theMovie)) - return NULL; - _rv = DataHAddMovie(dh, - theMovie, - &id); - _res = Py_BuildValue("lh", - _rv, - id); - return _res; -} - -static PyObject *Qt_DataHUpdateMovie(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Movie theMovie; - short id; -#ifndef DataHUpdateMovie - PyMac_PRECHECK(DataHUpdateMovie); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - CmpInstObj_Convert, &dh, - MovieObj_Convert, &theMovie, - &id)) - return NULL; - _rv = DataHUpdateMovie(dh, - theMovie, - id); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHDoesBuffer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Boolean buffersReads; - Boolean buffersWrites; -#ifndef DataHDoesBuffer - PyMac_PRECHECK(DataHDoesBuffer); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHDoesBuffer(dh, - &buffersReads, - &buffersWrites); - _res = Py_BuildValue("lbb", - _rv, - buffersReads, - buffersWrites); - return _res; -} - -static PyObject *Qt_DataHGetFileName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Str255 str; -#ifndef DataHGetFileName - PyMac_PRECHECK(DataHGetFileName); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - PyMac_GetStr255, str)) - return NULL; - _rv = DataHGetFileName(dh, - str); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHGetAvailableFileSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long fileSize; -#ifndef DataHGetAvailableFileSize - PyMac_PRECHECK(DataHGetAvailableFileSize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetAvailableFileSize(dh, - &fileSize); - _res = Py_BuildValue("ll", - _rv, - fileSize); - return _res; -} - -static PyObject *Qt_DataHGetMacOSFileType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - OSType fileType; -#ifndef DataHGetMacOSFileType - PyMac_PRECHECK(DataHGetMacOSFileType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetMacOSFileType(dh, - &fileType); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildOSType, fileType); - return _res; -} - -static PyObject *Qt_DataHGetMIMEType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Str255 mimeType; -#ifndef DataHGetMIMEType - PyMac_PRECHECK(DataHGetMIMEType); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - PyMac_GetStr255, mimeType)) - return NULL; - _rv = DataHGetMIMEType(dh, - mimeType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHSetDataRefWithAnchor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Handle anchorDataRef; - OSType dataRefType; - Handle dataRef; -#ifndef DataHSetDataRefWithAnchor - PyMac_PRECHECK(DataHSetDataRefWithAnchor); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - CmpInstObj_Convert, &dh, - ResObj_Convert, &anchorDataRef, - PyMac_GetOSType, &dataRefType, - ResObj_Convert, &dataRef)) - return NULL; - _rv = DataHSetDataRefWithAnchor(dh, - anchorDataRef, - dataRefType, - dataRef); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHGetDataRefWithAnchor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Handle anchorDataRef; - OSType dataRefType; - Handle dataRef; -#ifndef DataHGetDataRefWithAnchor - PyMac_PRECHECK(DataHGetDataRefWithAnchor); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &dh, - ResObj_Convert, &anchorDataRef, - PyMac_GetOSType, &dataRefType)) - return NULL; - _rv = DataHGetDataRefWithAnchor(dh, - anchorDataRef, - dataRefType, - &dataRef); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, dataRef); - return _res; -} - -static PyObject *Qt_DataHSetMacOSFileType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - OSType fileType; -#ifndef DataHSetMacOSFileType - PyMac_PRECHECK(DataHSetMacOSFileType); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - PyMac_GetOSType, &fileType)) - return NULL; - _rv = DataHSetMacOSFileType(dh, - fileType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHSetTimeBase(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - TimeBase tb; -#ifndef DataHSetTimeBase - PyMac_PRECHECK(DataHSetTimeBase); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - TimeBaseObj_Convert, &tb)) - return NULL; - _rv = DataHSetTimeBase(dh, - tb); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHGetInfoFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - UInt32 flags; -#ifndef DataHGetInfoFlags - PyMac_PRECHECK(DataHGetInfoFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetInfoFlags(dh, - &flags); - _res = Py_BuildValue("ll", - _rv, - flags); - return _res; -} - -static PyObject *Qt_DataHGetFileSize64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - wide fileSize; -#ifndef DataHGetFileSize64 - PyMac_PRECHECK(DataHGetFileSize64); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetFileSize64(dh, - &fileSize); - _res = Py_BuildValue("lO&", - _rv, - PyMac_Buildwide, fileSize); - return _res; -} - -static PyObject *Qt_DataHPreextend64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - wide maxToAdd; - wide spaceAdded; -#ifndef DataHPreextend64 - PyMac_PRECHECK(DataHPreextend64); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - PyMac_Getwide, &maxToAdd)) - return NULL; - _rv = DataHPreextend64(dh, - &maxToAdd, - &spaceAdded); - _res = Py_BuildValue("lO&", - _rv, - PyMac_Buildwide, spaceAdded); - return _res; -} - -static PyObject *Qt_DataHSetFileSize64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - wide fileSize; -#ifndef DataHSetFileSize64 - PyMac_PRECHECK(DataHSetFileSize64); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - PyMac_Getwide, &fileSize)) - return NULL; - _rv = DataHSetFileSize64(dh, - &fileSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHGetFreeSpace64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - wide freeSize; -#ifndef DataHGetFreeSpace64 - PyMac_PRECHECK(DataHGetFreeSpace64); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetFreeSpace64(dh, - &freeSize); - _res = Py_BuildValue("lO&", - _rv, - PyMac_Buildwide, freeSize); - return _res; -} - -static PyObject *Qt_DataHAppend64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - void * data; - wide fileOffset; - unsigned long size; -#ifndef DataHAppend64 - PyMac_PRECHECK(DataHAppend64); -#endif - if (!PyArg_ParseTuple(_args, "O&sl", - CmpInstObj_Convert, &dh, - &data, - &size)) - return NULL; - _rv = DataHAppend64(dh, - data, - &fileOffset, - size); - _res = Py_BuildValue("lO&", - _rv, - PyMac_Buildwide, fileOffset); - return _res; -} - -static PyObject *Qt_DataHPollRead(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - void * dataPtr; - UInt32 dataSizeSoFar; -#ifndef DataHPollRead - PyMac_PRECHECK(DataHPollRead); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &dh, - &dataPtr)) - return NULL; - _rv = DataHPollRead(dh, - dataPtr, - &dataSizeSoFar); - _res = Py_BuildValue("ll", - _rv, - dataSizeSoFar); - return _res; -} - -static PyObject *Qt_DataHGetDataAvailability(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long offset; - long len; - long missing_offset; - long missing_len; -#ifndef DataHGetDataAvailability - PyMac_PRECHECK(DataHGetDataAvailability); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &dh, - &offset, - &len)) - return NULL; - _rv = DataHGetDataAvailability(dh, - offset, - len, - &missing_offset, - &missing_len); - _res = Py_BuildValue("lll", - _rv, - missing_offset, - missing_len); - return _res; -} - -static PyObject *Qt_DataHGetDataRefAsType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - OSType requestedType; - Handle dataRef; -#ifndef DataHGetDataRefAsType - PyMac_PRECHECK(DataHGetDataRefAsType); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - PyMac_GetOSType, &requestedType)) - return NULL; - _rv = DataHGetDataRefAsType(dh, - requestedType, - &dataRef); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, dataRef); - return _res; -} - -static PyObject *Qt_DataHSetDataRefExtension(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Handle extension; - OSType idType; -#ifndef DataHSetDataRefExtension - PyMac_PRECHECK(DataHSetDataRefExtension); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &dh, - ResObj_Convert, &extension, - PyMac_GetOSType, &idType)) - return NULL; - _rv = DataHSetDataRefExtension(dh, - extension, - idType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHGetDataRefExtension(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Handle extension; - OSType idType; -#ifndef DataHGetDataRefExtension - PyMac_PRECHECK(DataHGetDataRefExtension); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - PyMac_GetOSType, &idType)) - return NULL; - _rv = DataHGetDataRefExtension(dh, - &extension, - idType); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, extension); - return _res; -} - -static PyObject *Qt_DataHGetMovieWithFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Movie theMovie; - short id; - short flags; -#ifndef DataHGetMovieWithFlags - PyMac_PRECHECK(DataHGetMovieWithFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &dh, - &flags)) - return NULL; - _rv = DataHGetMovieWithFlags(dh, - &theMovie, - &id, - flags); - _res = Py_BuildValue("lO&h", - _rv, - MovieObj_New, theMovie, - id); - return _res; -} - -static PyObject *Qt_DataHGetFileTypeOrdering(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - DataHFileTypeOrderingHandle orderingListHandle; -#ifndef DataHGetFileTypeOrdering - PyMac_PRECHECK(DataHGetFileTypeOrdering); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetFileTypeOrdering(dh, - &orderingListHandle); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, orderingListHandle); - return _res; -} - -static PyObject *Qt_DataHCreateFileWithFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - OSType creator; - Boolean deleteExisting; - UInt32 flags; -#ifndef DataHCreateFileWithFlags - PyMac_PRECHECK(DataHCreateFileWithFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&O&bl", - CmpInstObj_Convert, &dh, - PyMac_GetOSType, &creator, - &deleteExisting, - &flags)) - return NULL; - _rv = DataHCreateFileWithFlags(dh, - creator, - deleteExisting, - flags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHGetInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - OSType what; - void * info; -#ifndef DataHGetInfo - PyMac_PRECHECK(DataHGetInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&O&s", - CmpInstObj_Convert, &dh, - PyMac_GetOSType, &what, - &info)) - return NULL; - _rv = DataHGetInfo(dh, - what, - info); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHSetIdleManager(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - IdleManager im; -#ifndef DataHSetIdleManager - PyMac_PRECHECK(DataHSetIdleManager); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - IdleManagerObj_Convert, &im)) - return NULL; - _rv = DataHSetIdleManager(dh, - im); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHDeleteFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; -#ifndef DataHDeleteFile - PyMac_PRECHECK(DataHDeleteFile); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHDeleteFile(dh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHSetMovieUsageFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long flags; -#ifndef DataHSetMovieUsageFlags - PyMac_PRECHECK(DataHSetMovieUsageFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &dh, - &flags)) - return NULL; - _rv = DataHSetMovieUsageFlags(dh, - flags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHUseTemporaryDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long inFlags; -#ifndef DataHUseTemporaryDataRef - PyMac_PRECHECK(DataHUseTemporaryDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &dh, - &inFlags)) - return NULL; - _rv = DataHUseTemporaryDataRef(dh, - inFlags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHGetTemporaryDataRefCapabilities(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long outUnderstoodFlags; -#ifndef DataHGetTemporaryDataRefCapabilities - PyMac_PRECHECK(DataHGetTemporaryDataRefCapabilities); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &dh)) - return NULL; - _rv = DataHGetTemporaryDataRefCapabilities(dh, - &outUnderstoodFlags); - _res = Py_BuildValue("ll", - _rv, - outUnderstoodFlags); - return _res; -} - -static PyObject *Qt_DataHRenameFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - Handle newDataRef; -#ifndef DataHRenameFile - PyMac_PRECHECK(DataHRenameFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &dh, - ResObj_Convert, &newDataRef)) - return NULL; - _rv = DataHRenameFile(dh, - newDataRef); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHPlaybackHints(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long flags; - unsigned long minFileOffset; - unsigned long maxFileOffset; - long bytesPerSecond; -#ifndef DataHPlaybackHints - PyMac_PRECHECK(DataHPlaybackHints); -#endif - if (!PyArg_ParseTuple(_args, "O&llll", - CmpInstObj_Convert, &dh, - &flags, - &minFileOffset, - &maxFileOffset, - &bytesPerSecond)) - return NULL; - _rv = DataHPlaybackHints(dh, - flags, - minFileOffset, - maxFileOffset, - bytesPerSecond); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHPlaybackHints64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long flags; - wide minFileOffset; - wide maxFileOffset; - long bytesPerSecond; -#ifndef DataHPlaybackHints64 - PyMac_PRECHECK(DataHPlaybackHints64); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&O&l", - CmpInstObj_Convert, &dh, - &flags, - PyMac_Getwide, &minFileOffset, - PyMac_Getwide, &maxFileOffset, - &bytesPerSecond)) - return NULL; - _rv = DataHPlaybackHints64(dh, - flags, - &minFileOffset, - &maxFileOffset, - bytesPerSecond); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_DataHGetDataRate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long flags; - long bytesPerSecond; -#ifndef DataHGetDataRate - PyMac_PRECHECK(DataHGetDataRate); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &dh, - &flags)) - return NULL; - _rv = DataHGetDataRate(dh, - flags, - &bytesPerSecond); - _res = Py_BuildValue("ll", - _rv, - bytesPerSecond); - return _res; -} - -static PyObject *Qt_DataHSetTimeHints(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - DataHandler dh; - long flags; - long bandwidthPriority; - TimeScale scale; - TimeValue minTime; - TimeValue maxTime; -#ifndef DataHSetTimeHints - PyMac_PRECHECK(DataHSetTimeHints); -#endif - if (!PyArg_ParseTuple(_args, "O&lllll", - CmpInstObj_Convert, &dh, - &flags, - &bandwidthPriority, - &scale, - &minTime, - &maxTime)) - return NULL; - _rv = DataHSetTimeHints(dh, - flags, - bandwidthPriority, - scale, - minTime, - maxTime); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetMaxSrcRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short inputStd; - Rect maxSrcRect; -#ifndef VDGetMaxSrcRect - PyMac_PRECHECK(VDGetMaxSrcRect); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &inputStd)) - return NULL; - _rv = VDGetMaxSrcRect(ci, - inputStd, - &maxSrcRect); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &maxSrcRect); - return _res; -} - -static PyObject *Qt_VDGetActiveSrcRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short inputStd; - Rect activeSrcRect; -#ifndef VDGetActiveSrcRect - PyMac_PRECHECK(VDGetActiveSrcRect); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &inputStd)) - return NULL; - _rv = VDGetActiveSrcRect(ci, - inputStd, - &activeSrcRect); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &activeSrcRect); - return _res; -} - -static PyObject *Qt_VDSetDigitizerRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - Rect digitizerRect; -#ifndef VDSetDigitizerRect - PyMac_PRECHECK(VDSetDigitizerRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDSetDigitizerRect(ci, - &digitizerRect); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &digitizerRect); - return _res; -} - -static PyObject *Qt_VDGetDigitizerRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - Rect digitizerRect; -#ifndef VDGetDigitizerRect - PyMac_PRECHECK(VDGetDigitizerRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetDigitizerRect(ci, - &digitizerRect); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &digitizerRect); - return _res; -} - -static PyObject *Qt_VDGetVBlankRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short inputStd; - Rect vBlankRect; -#ifndef VDGetVBlankRect - PyMac_PRECHECK(VDGetVBlankRect); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &inputStd)) - return NULL; - _rv = VDGetVBlankRect(ci, - inputStd, - &vBlankRect); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &vBlankRect); - return _res; -} - -static PyObject *Qt_VDGetMaskPixMap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - PixMapHandle maskPixMap; -#ifndef VDGetMaskPixMap - PyMac_PRECHECK(VDGetMaskPixMap); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &maskPixMap)) - return NULL; - _rv = VDGetMaskPixMap(ci, - maskPixMap); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDUseThisCLUT(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - CTabHandle colorTableHandle; -#ifndef VDUseThisCLUT - PyMac_PRECHECK(VDUseThisCLUT); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &colorTableHandle)) - return NULL; - _rv = VDUseThisCLUT(ci, - colorTableHandle); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDSetInputGammaValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - Fixed channel1; - Fixed channel2; - Fixed channel3; -#ifndef VDSetInputGammaValue - PyMac_PRECHECK(VDSetInputGammaValue); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetFixed, &channel1, - PyMac_GetFixed, &channel2, - PyMac_GetFixed, &channel3)) - return NULL; - _rv = VDSetInputGammaValue(ci, - channel1, - channel2, - channel3); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetInputGammaValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - Fixed channel1; - Fixed channel2; - Fixed channel3; -#ifndef VDGetInputGammaValue - PyMac_PRECHECK(VDGetInputGammaValue); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetInputGammaValue(ci, - &channel1, - &channel2, - &channel3); - _res = Py_BuildValue("lO&O&O&", - _rv, - PyMac_BuildFixed, channel1, - PyMac_BuildFixed, channel2, - PyMac_BuildFixed, channel3); - return _res; -} - -static PyObject *Qt_VDSetBrightness(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short brightness; -#ifndef VDSetBrightness - PyMac_PRECHECK(VDSetBrightness); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDSetBrightness(ci, - &brightness); - _res = Py_BuildValue("lH", - _rv, - brightness); - return _res; -} - -static PyObject *Qt_VDGetBrightness(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short brightness; -#ifndef VDGetBrightness - PyMac_PRECHECK(VDGetBrightness); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetBrightness(ci, - &brightness); - _res = Py_BuildValue("lH", - _rv, - brightness); - return _res; -} - -static PyObject *Qt_VDSetContrast(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short contrast; -#ifndef VDSetContrast - PyMac_PRECHECK(VDSetContrast); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDSetContrast(ci, - &contrast); - _res = Py_BuildValue("lH", - _rv, - contrast); - return _res; -} - -static PyObject *Qt_VDSetHue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short hue; -#ifndef VDSetHue - PyMac_PRECHECK(VDSetHue); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDSetHue(ci, - &hue); - _res = Py_BuildValue("lH", - _rv, - hue); - return _res; -} - -static PyObject *Qt_VDSetSharpness(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short sharpness; -#ifndef VDSetSharpness - PyMac_PRECHECK(VDSetSharpness); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDSetSharpness(ci, - &sharpness); - _res = Py_BuildValue("lH", - _rv, - sharpness); - return _res; -} - -static PyObject *Qt_VDSetSaturation(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short saturation; -#ifndef VDSetSaturation - PyMac_PRECHECK(VDSetSaturation); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDSetSaturation(ci, - &saturation); - _res = Py_BuildValue("lH", - _rv, - saturation); - return _res; -} - -static PyObject *Qt_VDGetContrast(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short contrast; -#ifndef VDGetContrast - PyMac_PRECHECK(VDGetContrast); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetContrast(ci, - &contrast); - _res = Py_BuildValue("lH", - _rv, - contrast); - return _res; -} - -static PyObject *Qt_VDGetHue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short hue; -#ifndef VDGetHue - PyMac_PRECHECK(VDGetHue); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetHue(ci, - &hue); - _res = Py_BuildValue("lH", - _rv, - hue); - return _res; -} - -static PyObject *Qt_VDGetSharpness(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short sharpness; -#ifndef VDGetSharpness - PyMac_PRECHECK(VDGetSharpness); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetSharpness(ci, - &sharpness); - _res = Py_BuildValue("lH", - _rv, - sharpness); - return _res; -} - -static PyObject *Qt_VDGetSaturation(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short saturation; -#ifndef VDGetSaturation - PyMac_PRECHECK(VDGetSaturation); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetSaturation(ci, - &saturation); - _res = Py_BuildValue("lH", - _rv, - saturation); - return _res; -} - -static PyObject *Qt_VDGrabOneFrame(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; -#ifndef VDGrabOneFrame - PyMac_PRECHECK(VDGrabOneFrame); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGrabOneFrame(ci); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetMaxAuxBuffer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - PixMapHandle pm; - Rect r; -#ifndef VDGetMaxAuxBuffer - PyMac_PRECHECK(VDGetMaxAuxBuffer); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetMaxAuxBuffer(ci, - &pm, - &r); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, pm, - PyMac_BuildRect, &r); - return _res; -} - -static PyObject *Qt_VDGetCurrentFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - long inputCurrentFlag; - long outputCurrentFlag; -#ifndef VDGetCurrentFlags - PyMac_PRECHECK(VDGetCurrentFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetCurrentFlags(ci, - &inputCurrentFlag, - &outputCurrentFlag); - _res = Py_BuildValue("lll", - _rv, - inputCurrentFlag, - outputCurrentFlag); - return _res; -} - -static PyObject *Qt_VDSetKeyColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - long index; -#ifndef VDSetKeyColor - PyMac_PRECHECK(VDSetKeyColor); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &index)) - return NULL; - _rv = VDSetKeyColor(ci, - index); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetKeyColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - long index; -#ifndef VDGetKeyColor - PyMac_PRECHECK(VDGetKeyColor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetKeyColor(ci, - &index); - _res = Py_BuildValue("ll", - _rv, - index); - return _res; -} - -static PyObject *Qt_VDAddKeyColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - long index; -#ifndef VDAddKeyColor - PyMac_PRECHECK(VDAddKeyColor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDAddKeyColor(ci, - &index); - _res = Py_BuildValue("ll", - _rv, - index); - return _res; -} - -static PyObject *Qt_VDGetNextKeyColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - long index; -#ifndef VDGetNextKeyColor - PyMac_PRECHECK(VDGetNextKeyColor); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &index)) - return NULL; - _rv = VDGetNextKeyColor(ci, - index); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDSetKeyColorRange(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - RGBColor minRGB; - RGBColor maxRGB; -#ifndef VDSetKeyColorRange - PyMac_PRECHECK(VDSetKeyColorRange); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDSetKeyColorRange(ci, - &minRGB, - &maxRGB); - _res = Py_BuildValue("lO&O&", - _rv, - QdRGB_New, &minRGB, - QdRGB_New, &maxRGB); - return _res; -} - -static PyObject *Qt_VDGetKeyColorRange(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - RGBColor minRGB; - RGBColor maxRGB; -#ifndef VDGetKeyColorRange - PyMac_PRECHECK(VDGetKeyColorRange); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetKeyColorRange(ci, - &minRGB, - &maxRGB); - _res = Py_BuildValue("lO&O&", - _rv, - QdRGB_New, &minRGB, - QdRGB_New, &maxRGB); - return _res; -} - -static PyObject *Qt_VDSetInputColorSpaceMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short colorSpaceMode; -#ifndef VDSetInputColorSpaceMode - PyMac_PRECHECK(VDSetInputColorSpaceMode); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &colorSpaceMode)) - return NULL; - _rv = VDSetInputColorSpaceMode(ci, - colorSpaceMode); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetInputColorSpaceMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short colorSpaceMode; -#ifndef VDGetInputColorSpaceMode - PyMac_PRECHECK(VDGetInputColorSpaceMode); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetInputColorSpaceMode(ci, - &colorSpaceMode); - _res = Py_BuildValue("lh", - _rv, - colorSpaceMode); - return _res; -} - -static PyObject *Qt_VDSetClipState(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short clipEnable; -#ifndef VDSetClipState - PyMac_PRECHECK(VDSetClipState); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &clipEnable)) - return NULL; - _rv = VDSetClipState(ci, - clipEnable); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetClipState(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short clipEnable; -#ifndef VDGetClipState - PyMac_PRECHECK(VDGetClipState); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetClipState(ci, - &clipEnable); - _res = Py_BuildValue("lh", - _rv, - clipEnable); - return _res; -} - -static PyObject *Qt_VDSetClipRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - RgnHandle clipRegion; -#ifndef VDSetClipRgn - PyMac_PRECHECK(VDSetClipRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &clipRegion)) - return NULL; - _rv = VDSetClipRgn(ci, - clipRegion); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDClearClipRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - RgnHandle clipRegion; -#ifndef VDClearClipRgn - PyMac_PRECHECK(VDClearClipRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &clipRegion)) - return NULL; - _rv = VDClearClipRgn(ci, - clipRegion); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetCLUTInUse(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - CTabHandle colorTableHandle; -#ifndef VDGetCLUTInUse - PyMac_PRECHECK(VDGetCLUTInUse); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetCLUTInUse(ci, - &colorTableHandle); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, colorTableHandle); - return _res; -} - -static PyObject *Qt_VDSetPLLFilterType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short pllType; -#ifndef VDSetPLLFilterType - PyMac_PRECHECK(VDSetPLLFilterType); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &pllType)) - return NULL; - _rv = VDSetPLLFilterType(ci, - pllType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetPLLFilterType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short pllType; -#ifndef VDGetPLLFilterType - PyMac_PRECHECK(VDGetPLLFilterType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetPLLFilterType(ci, - &pllType); - _res = Py_BuildValue("lh", - _rv, - pllType); - return _res; -} - -static PyObject *Qt_VDGetMaskandValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short blendLevel; - long mask; - long value; -#ifndef VDGetMaskandValue - PyMac_PRECHECK(VDGetMaskandValue); -#endif - if (!PyArg_ParseTuple(_args, "O&H", - CmpInstObj_Convert, &ci, - &blendLevel)) - return NULL; - _rv = VDGetMaskandValue(ci, - blendLevel, - &mask, - &value); - _res = Py_BuildValue("lll", - _rv, - mask, - value); - return _res; -} - -static PyObject *Qt_VDSetMasterBlendLevel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short blendLevel; -#ifndef VDSetMasterBlendLevel - PyMac_PRECHECK(VDSetMasterBlendLevel); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDSetMasterBlendLevel(ci, - &blendLevel); - _res = Py_BuildValue("lH", - _rv, - blendLevel); - return _res; -} - -static PyObject *Qt_VDSetPlayThruOnOff(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short state; -#ifndef VDSetPlayThruOnOff - PyMac_PRECHECK(VDSetPlayThruOnOff); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &state)) - return NULL; - _rv = VDSetPlayThruOnOff(ci, - state); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDSetFieldPreference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short fieldFlag; -#ifndef VDSetFieldPreference - PyMac_PRECHECK(VDSetFieldPreference); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &fieldFlag)) - return NULL; - _rv = VDSetFieldPreference(ci, - fieldFlag); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetFieldPreference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short fieldFlag; -#ifndef VDGetFieldPreference - PyMac_PRECHECK(VDGetFieldPreference); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetFieldPreference(ci, - &fieldFlag); - _res = Py_BuildValue("lh", - _rv, - fieldFlag); - return _res; -} - -static PyObject *Qt_VDPreflightGlobalRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - GrafPtr theWindow; - Rect globalRect; -#ifndef VDPreflightGlobalRect - PyMac_PRECHECK(VDPreflightGlobalRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - GrafObj_Convert, &theWindow)) - return NULL; - _rv = VDPreflightGlobalRect(ci, - theWindow, - &globalRect); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &globalRect); - return _res; -} - -static PyObject *Qt_VDSetPlayThruGlobalRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - GrafPtr theWindow; - Rect globalRect; -#ifndef VDSetPlayThruGlobalRect - PyMac_PRECHECK(VDSetPlayThruGlobalRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - GrafObj_Convert, &theWindow)) - return NULL; - _rv = VDSetPlayThruGlobalRect(ci, - theWindow, - &globalRect); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &globalRect); - return _res; -} - -static PyObject *Qt_VDSetBlackLevelValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short blackLevel; -#ifndef VDSetBlackLevelValue - PyMac_PRECHECK(VDSetBlackLevelValue); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDSetBlackLevelValue(ci, - &blackLevel); - _res = Py_BuildValue("lH", - _rv, - blackLevel); - return _res; -} - -static PyObject *Qt_VDGetBlackLevelValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short blackLevel; -#ifndef VDGetBlackLevelValue - PyMac_PRECHECK(VDGetBlackLevelValue); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetBlackLevelValue(ci, - &blackLevel); - _res = Py_BuildValue("lH", - _rv, - blackLevel); - return _res; -} - -static PyObject *Qt_VDSetWhiteLevelValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short whiteLevel; -#ifndef VDSetWhiteLevelValue - PyMac_PRECHECK(VDSetWhiteLevelValue); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDSetWhiteLevelValue(ci, - &whiteLevel); - _res = Py_BuildValue("lH", - _rv, - whiteLevel); - return _res; -} - -static PyObject *Qt_VDGetWhiteLevelValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short whiteLevel; -#ifndef VDGetWhiteLevelValue - PyMac_PRECHECK(VDGetWhiteLevelValue); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetWhiteLevelValue(ci, - &whiteLevel); - _res = Py_BuildValue("lH", - _rv, - whiteLevel); - return _res; -} - -static PyObject *Qt_VDGetVideoDefaults(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - unsigned short blackLevel; - unsigned short whiteLevel; - unsigned short brightness; - unsigned short hue; - unsigned short saturation; - unsigned short contrast; - unsigned short sharpness; -#ifndef VDGetVideoDefaults - PyMac_PRECHECK(VDGetVideoDefaults); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetVideoDefaults(ci, - &blackLevel, - &whiteLevel, - &brightness, - &hue, - &saturation, - &contrast, - &sharpness); - _res = Py_BuildValue("lHHHHHHH", - _rv, - blackLevel, - whiteLevel, - brightness, - hue, - saturation, - contrast, - sharpness); - return _res; -} - -static PyObject *Qt_VDGetNumberOfInputs(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short inputs; -#ifndef VDGetNumberOfInputs - PyMac_PRECHECK(VDGetNumberOfInputs); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetNumberOfInputs(ci, - &inputs); - _res = Py_BuildValue("lh", - _rv, - inputs); - return _res; -} - -static PyObject *Qt_VDGetInputFormat(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short input; - short format; -#ifndef VDGetInputFormat - PyMac_PRECHECK(VDGetInputFormat); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &input)) - return NULL; - _rv = VDGetInputFormat(ci, - input, - &format); - _res = Py_BuildValue("lh", - _rv, - format); - return _res; -} - -static PyObject *Qt_VDSetInput(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short input; -#ifndef VDSetInput - PyMac_PRECHECK(VDSetInput); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &input)) - return NULL; - _rv = VDSetInput(ci, - input); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetInput(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short input; -#ifndef VDGetInput - PyMac_PRECHECK(VDGetInput); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetInput(ci, - &input); - _res = Py_BuildValue("lh", - _rv, - input); - return _res; -} - -static PyObject *Qt_VDSetInputStandard(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short inputStandard; -#ifndef VDSetInputStandard - PyMac_PRECHECK(VDSetInputStandard); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &inputStandard)) - return NULL; - _rv = VDSetInputStandard(ci, - inputStandard); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDSetupBuffers(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - VdigBufferRecListHandle bufferList; -#ifndef VDSetupBuffers - PyMac_PRECHECK(VDSetupBuffers); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &bufferList)) - return NULL; - _rv = VDSetupBuffers(ci, - bufferList); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGrabOneFrameAsync(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short buffer; -#ifndef VDGrabOneFrameAsync - PyMac_PRECHECK(VDGrabOneFrameAsync); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &buffer)) - return NULL; - _rv = VDGrabOneFrameAsync(ci, - buffer); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDDone(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - short buffer; -#ifndef VDDone - PyMac_PRECHECK(VDDone); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &ci, - &buffer)) - return NULL; - _rv = VDDone(ci, - buffer); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDSetCompression(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - OSType compressType; - short depth; - Rect bounds; - CodecQ spatialQuality; - CodecQ temporalQuality; - long keyFrameRate; -#ifndef VDSetCompression - PyMac_PRECHECK(VDSetCompression); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hlll", - CmpInstObj_Convert, &ci, - PyMac_GetOSType, &compressType, - &depth, - &spatialQuality, - &temporalQuality, - &keyFrameRate)) - return NULL; - _rv = VDSetCompression(ci, - compressType, - depth, - &bounds, - spatialQuality, - temporalQuality, - keyFrameRate); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &bounds); - return _res; -} - -static PyObject *Qt_VDCompressOneFrameAsync(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; -#ifndef VDCompressOneFrameAsync - PyMac_PRECHECK(VDCompressOneFrameAsync); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDCompressOneFrameAsync(ci); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetImageDescription(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - ImageDescriptionHandle desc; -#ifndef VDGetImageDescription - PyMac_PRECHECK(VDGetImageDescription); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &desc)) - return NULL; - _rv = VDGetImageDescription(ci, - desc); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDResetCompressSequence(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; -#ifndef VDResetCompressSequence - PyMac_PRECHECK(VDResetCompressSequence); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDResetCompressSequence(ci); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDSetCompressionOnOff(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - Boolean state; -#ifndef VDSetCompressionOnOff - PyMac_PRECHECK(VDSetCompressionOnOff); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - CmpInstObj_Convert, &ci, - &state)) - return NULL; - _rv = VDSetCompressionOnOff(ci, - state); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetCompressionTypes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - VDCompressionListHandle h; -#ifndef VDGetCompressionTypes - PyMac_PRECHECK(VDGetCompressionTypes); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - ResObj_Convert, &h)) - return NULL; - _rv = VDGetCompressionTypes(ci, - h); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDSetTimeBase(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - TimeBase t; -#ifndef VDSetTimeBase - PyMac_PRECHECK(VDSetTimeBase); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - TimeBaseObj_Convert, &t)) - return NULL; - _rv = VDSetTimeBase(ci, - t); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDSetFrameRate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - Fixed framesPerSecond; -#ifndef VDSetFrameRate - PyMac_PRECHECK(VDSetFrameRate); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetFixed, &framesPerSecond)) - return NULL; - _rv = VDSetFrameRate(ci, - framesPerSecond); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetDataRate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - long milliSecPerFrame; - Fixed framesPerSecond; - long bytesPerSecond; -#ifndef VDGetDataRate - PyMac_PRECHECK(VDGetDataRate); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetDataRate(ci, - &milliSecPerFrame, - &framesPerSecond, - &bytesPerSecond); - _res = Py_BuildValue("llO&l", - _rv, - milliSecPerFrame, - PyMac_BuildFixed, framesPerSecond, - bytesPerSecond); - return _res; -} - -static PyObject *Qt_VDGetSoundInputDriver(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - Str255 soundDriverName; -#ifndef VDGetSoundInputDriver - PyMac_PRECHECK(VDGetSoundInputDriver); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetStr255, soundDriverName)) - return NULL; - _rv = VDGetSoundInputDriver(ci, - soundDriverName); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetDMADepths(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - long depthArray; - long preferredDepth; -#ifndef VDGetDMADepths - PyMac_PRECHECK(VDGetDMADepths); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetDMADepths(ci, - &depthArray, - &preferredDepth); - _res = Py_BuildValue("lll", - _rv, - depthArray, - preferredDepth); - return _res; -} - -static PyObject *Qt_VDGetPreferredTimeScale(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - TimeScale preferred; -#ifndef VDGetPreferredTimeScale - PyMac_PRECHECK(VDGetPreferredTimeScale); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetPreferredTimeScale(ci, - &preferred); - _res = Py_BuildValue("ll", - _rv, - preferred); - return _res; -} - -static PyObject *Qt_VDReleaseAsyncBuffers(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; -#ifndef VDReleaseAsyncBuffers - PyMac_PRECHECK(VDReleaseAsyncBuffers); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDReleaseAsyncBuffers(ci); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDSetDataRate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - long bytesPerSecond; -#ifndef VDSetDataRate - PyMac_PRECHECK(VDSetDataRate); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &bytesPerSecond)) - return NULL; - _rv = VDSetDataRate(ci, - bytesPerSecond); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetTimeCode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - TimeRecord atTime; - void * timeCodeFormat; - void * timeCodeTime; -#ifndef VDGetTimeCode - PyMac_PRECHECK(VDGetTimeCode); -#endif - if (!PyArg_ParseTuple(_args, "O&ss", - CmpInstObj_Convert, &ci, - &timeCodeFormat, - &timeCodeTime)) - return NULL; - _rv = VDGetTimeCode(ci, - &atTime, - timeCodeFormat, - timeCodeTime); - _res = Py_BuildValue("lO&", - _rv, - QtTimeRecord_New, &atTime); - return _res; -} - -static PyObject *Qt_VDUseSafeBuffers(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - Boolean useSafeBuffers; -#ifndef VDUseSafeBuffers - PyMac_PRECHECK(VDUseSafeBuffers); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - CmpInstObj_Convert, &ci, - &useSafeBuffers)) - return NULL; - _rv = VDUseSafeBuffers(ci, - useSafeBuffers); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetSoundInputSource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - long videoInput; - long soundInput; -#ifndef VDGetSoundInputSource - PyMac_PRECHECK(VDGetSoundInputSource); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &videoInput)) - return NULL; - _rv = VDGetSoundInputSource(ci, - videoInput, - &soundInput); - _res = Py_BuildValue("ll", - _rv, - soundInput); - return _res; -} - -static PyObject *Qt_VDGetCompressionTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - OSType compressionType; - short depth; - Rect srcRect; - CodecQ spatialQuality; - CodecQ temporalQuality; - unsigned long compressTime; -#ifndef VDGetCompressionTime - PyMac_PRECHECK(VDGetCompressionTime); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - CmpInstObj_Convert, &ci, - PyMac_GetOSType, &compressionType, - &depth)) - return NULL; - _rv = VDGetCompressionTime(ci, - compressionType, - depth, - &srcRect, - &spatialQuality, - &temporalQuality, - &compressTime); - _res = Py_BuildValue("lO&lll", - _rv, - PyMac_BuildRect, &srcRect, - spatialQuality, - temporalQuality, - compressTime); - return _res; -} - -static PyObject *Qt_VDSetPreferredPacketSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - long preferredPacketSizeInBytes; -#ifndef VDSetPreferredPacketSize - PyMac_PRECHECK(VDSetPreferredPacketSize); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &preferredPacketSizeInBytes)) - return NULL; - _rv = VDSetPreferredPacketSize(ci, - preferredPacketSizeInBytes); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDSetPreferredImageDimensions(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - long width; - long height; -#ifndef VDSetPreferredImageDimensions - PyMac_PRECHECK(VDSetPreferredImageDimensions); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &ci, - &width, - &height)) - return NULL; - _rv = VDSetPreferredImageDimensions(ci, - width, - height); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetPreferredImageDimensions(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - long width; - long height; -#ifndef VDGetPreferredImageDimensions - PyMac_PRECHECK(VDGetPreferredImageDimensions); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = VDGetPreferredImageDimensions(ci, - &width, - &height); - _res = Py_BuildValue("lll", - _rv, - width, - height); - return _res; -} - -static PyObject *Qt_VDGetInputName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - long videoInput; - Str255 name; -#ifndef VDGetInputName - PyMac_PRECHECK(VDGetInputName); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - CmpInstObj_Convert, &ci, - &videoInput, - PyMac_GetStr255, name)) - return NULL; - _rv = VDGetInputName(ci, - videoInput, - name); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDSetDestinationPort(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - CGrafPtr destPort; -#ifndef VDSetDestinationPort - PyMac_PRECHECK(VDSetDestinationPort); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - GrafObj_Convert, &destPort)) - return NULL; - _rv = VDSetDestinationPort(ci, - destPort); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_VDGetDeviceNameAndFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - Str255 outName; - UInt32 outNameFlags; -#ifndef VDGetDeviceNameAndFlags - PyMac_PRECHECK(VDGetDeviceNameAndFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &ci, - PyMac_GetStr255, outName)) - return NULL; - _rv = VDGetDeviceNameAndFlags(ci, - outName, - &outNameFlags); - _res = Py_BuildValue("ll", - _rv, - outNameFlags); - return _res; -} - -static PyObject *Qt_VDCaptureStateChanging(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - VideoDigitizerComponent ci; - UInt32 inStateFlags; -#ifndef VDCaptureStateChanging - PyMac_PRECHECK(VDCaptureStateChanging); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &ci, - &inStateFlags)) - return NULL; - _rv = VDCaptureStateChanging(ci, - inStateFlags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_XMLParseGetDetailedParseError(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance aParser; - long errorLine; - StringPtr errDesc; -#ifndef XMLParseGetDetailedParseError - PyMac_PRECHECK(XMLParseGetDetailedParseError); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &aParser, - &errDesc)) - return NULL; - _rv = XMLParseGetDetailedParseError(aParser, - &errorLine, - errDesc); - _res = Py_BuildValue("ll", - _rv, - errorLine); - return _res; -} - -static PyObject *Qt_XMLParseAddElement(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance aParser; - char elementName; - UInt32 nameSpaceID; - UInt32 elementID; - long elementFlags; -#ifndef XMLParseAddElement - PyMac_PRECHECK(XMLParseAddElement); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &aParser, - &nameSpaceID, - &elementFlags)) - return NULL; - _rv = XMLParseAddElement(aParser, - &elementName, - nameSpaceID, - &elementID, - elementFlags); - _res = Py_BuildValue("lcl", - _rv, - elementName, - elementID); - return _res; -} - -static PyObject *Qt_XMLParseAddAttribute(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance aParser; - UInt32 elementID; - UInt32 nameSpaceID; - char attributeName; - UInt32 attributeID; -#ifndef XMLParseAddAttribute - PyMac_PRECHECK(XMLParseAddAttribute); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &aParser, - &elementID, - &nameSpaceID)) - return NULL; - _rv = XMLParseAddAttribute(aParser, - elementID, - nameSpaceID, - &attributeName, - &attributeID); - _res = Py_BuildValue("lcl", - _rv, - attributeName, - attributeID); - return _res; -} - -static PyObject *Qt_XMLParseAddMultipleAttributes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance aParser; - UInt32 elementID; - UInt32 nameSpaceIDs; - char attributeNames; - UInt32 attributeIDs; -#ifndef XMLParseAddMultipleAttributes - PyMac_PRECHECK(XMLParseAddMultipleAttributes); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &aParser, - &elementID)) - return NULL; - _rv = XMLParseAddMultipleAttributes(aParser, - elementID, - &nameSpaceIDs, - &attributeNames, - &attributeIDs); - _res = Py_BuildValue("llcl", - _rv, - nameSpaceIDs, - attributeNames, - attributeIDs); - return _res; -} - -static PyObject *Qt_XMLParseAddAttributeAndValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance aParser; - UInt32 elementID; - UInt32 nameSpaceID; - char attributeName; - UInt32 attributeID; - UInt32 attributeValueKind; - void * attributeValueKindInfo; -#ifndef XMLParseAddAttributeAndValue - PyMac_PRECHECK(XMLParseAddAttributeAndValue); -#endif - if (!PyArg_ParseTuple(_args, "O&llls", - CmpInstObj_Convert, &aParser, - &elementID, - &nameSpaceID, - &attributeValueKind, - &attributeValueKindInfo)) - return NULL; - _rv = XMLParseAddAttributeAndValue(aParser, - elementID, - nameSpaceID, - &attributeName, - &attributeID, - attributeValueKind, - attributeValueKindInfo); - _res = Py_BuildValue("lcl", - _rv, - attributeName, - attributeID); - return _res; -} - -static PyObject *Qt_XMLParseAddAttributeValueKind(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance aParser; - UInt32 elementID; - UInt32 attributeID; - UInt32 attributeValueKind; - void * attributeValueKindInfo; -#ifndef XMLParseAddAttributeValueKind - PyMac_PRECHECK(XMLParseAddAttributeValueKind); -#endif - if (!PyArg_ParseTuple(_args, "O&llls", - CmpInstObj_Convert, &aParser, - &elementID, - &attributeID, - &attributeValueKind, - &attributeValueKindInfo)) - return NULL; - _rv = XMLParseAddAttributeValueKind(aParser, - elementID, - attributeID, - attributeValueKind, - attributeValueKindInfo); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_XMLParseAddNameSpace(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance aParser; - char nameSpaceURL; - UInt32 nameSpaceID; -#ifndef XMLParseAddNameSpace - PyMac_PRECHECK(XMLParseAddNameSpace); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &aParser)) - return NULL; - _rv = XMLParseAddNameSpace(aParser, - &nameSpaceURL, - &nameSpaceID); - _res = Py_BuildValue("lcl", - _rv, - nameSpaceURL, - nameSpaceID); - return _res; -} - -static PyObject *Qt_XMLParseSetOffsetAndLimit(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance aParser; - UInt32 offset; - UInt32 limit; -#ifndef XMLParseSetOffsetAndLimit - PyMac_PRECHECK(XMLParseSetOffsetAndLimit); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &aParser, - &offset, - &limit)) - return NULL; - _rv = XMLParseSetOffsetAndLimit(aParser, - offset, - limit); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_XMLParseSetEventParseRefCon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - ComponentInstance aParser; - long refcon; -#ifndef XMLParseSetEventParseRefCon - PyMac_PRECHECK(XMLParseSetEventParseRefCon); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &aParser, - &refcon)) - return NULL; - _rv = XMLParseSetEventParseRefCon(aParser, - refcon); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGInitialize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; -#ifndef SGInitialize - PyMac_PRECHECK(SGInitialize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGInitialize(s); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetDataOutput(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - FSSpec movieFile; - long whereFlags; -#ifndef SGSetDataOutput - PyMac_PRECHECK(SGSetDataOutput); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - CmpInstObj_Convert, &s, - PyMac_GetFSSpec, &movieFile, - &whereFlags)) - return NULL; - _rv = SGSetDataOutput(s, - &movieFile, - whereFlags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetDataOutput(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - FSSpec movieFile; - long whereFlags; -#ifndef SGGetDataOutput - PyMac_PRECHECK(SGGetDataOutput); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - PyMac_GetFSSpec, &movieFile)) - return NULL; - _rv = SGGetDataOutput(s, - &movieFile, - &whereFlags); - _res = Py_BuildValue("ll", - _rv, - whereFlags); - return _res; -} - -static PyObject *Qt_SGSetGWorld(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - CGrafPtr gp; - GDHandle gd; -#ifndef SGSetGWorld - PyMac_PRECHECK(SGSetGWorld); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &s, - GrafObj_Convert, &gp, - OptResObj_Convert, &gd)) - return NULL; - _rv = SGSetGWorld(s, - gp, - gd); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetGWorld(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - CGrafPtr gp; - GDHandle gd; -#ifndef SGGetGWorld - PyMac_PRECHECK(SGGetGWorld); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGGetGWorld(s, - &gp, - &gd); - _res = Py_BuildValue("lO&O&", - _rv, - GrafObj_New, gp, - OptResObj_New, gd); - return _res; -} - -static PyObject *Qt_SGNewChannel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - OSType channelType; - SGChannel ref; -#ifndef SGNewChannel - PyMac_PRECHECK(SGNewChannel); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - PyMac_GetOSType, &channelType)) - return NULL; - _rv = SGNewChannel(s, - channelType, - &ref); - _res = Py_BuildValue("lO&", - _rv, - CmpInstObj_New, ref); - return _res; -} - -static PyObject *Qt_SGDisposeChannel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; -#ifndef SGDisposeChannel - PyMac_PRECHECK(SGDisposeChannel); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGDisposeChannel(s, - c); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGStartPreview(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; -#ifndef SGStartPreview - PyMac_PRECHECK(SGStartPreview); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGStartPreview(s); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGStartRecord(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; -#ifndef SGStartRecord - PyMac_PRECHECK(SGStartRecord); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGStartRecord(s); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGIdle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; -#ifndef SGIdle - PyMac_PRECHECK(SGIdle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGIdle(s); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGStop(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; -#ifndef SGStop - PyMac_PRECHECK(SGStop); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGStop(s); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGPause(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - Boolean pause; -#ifndef SGPause - PyMac_PRECHECK(SGPause); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - CmpInstObj_Convert, &s, - &pause)) - return NULL; - _rv = SGPause(s, - pause); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGPrepare(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - Boolean prepareForPreview; - Boolean prepareForRecord; -#ifndef SGPrepare - PyMac_PRECHECK(SGPrepare); -#endif - if (!PyArg_ParseTuple(_args, "O&bb", - CmpInstObj_Convert, &s, - &prepareForPreview, - &prepareForRecord)) - return NULL; - _rv = SGPrepare(s, - prepareForPreview, - prepareForRecord); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGRelease(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; -#ifndef SGRelease - PyMac_PRECHECK(SGRelease); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGRelease(s); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetMovie(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Movie _rv; - SeqGrabComponent s; -#ifndef SGGetMovie - PyMac_PRECHECK(SGGetMovie); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGGetMovie(s); - _res = Py_BuildValue("O&", - MovieObj_New, _rv); - return _res; -} - -static PyObject *Qt_SGSetMaximumRecordTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - unsigned long ticks; -#ifndef SGSetMaximumRecordTime - PyMac_PRECHECK(SGSetMaximumRecordTime); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &s, - &ticks)) - return NULL; - _rv = SGSetMaximumRecordTime(s, - ticks); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetMaximumRecordTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - unsigned long ticks; -#ifndef SGGetMaximumRecordTime - PyMac_PRECHECK(SGGetMaximumRecordTime); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGGetMaximumRecordTime(s, - &ticks); - _res = Py_BuildValue("ll", - _rv, - ticks); - return _res; -} - -static PyObject *Qt_SGGetStorageSpaceRemaining(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - unsigned long bytes; -#ifndef SGGetStorageSpaceRemaining - PyMac_PRECHECK(SGGetStorageSpaceRemaining); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGGetStorageSpaceRemaining(s, - &bytes); - _res = Py_BuildValue("ll", - _rv, - bytes); - return _res; -} - -static PyObject *Qt_SGGetTimeRemaining(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - long ticksLeft; -#ifndef SGGetTimeRemaining - PyMac_PRECHECK(SGGetTimeRemaining); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGGetTimeRemaining(s, - &ticksLeft); - _res = Py_BuildValue("ll", - _rv, - ticksLeft); - return _res; -} - -static PyObject *Qt_SGGrabPict(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - PicHandle p; - Rect bounds; - short offscreenDepth; - long grabPictFlags; -#ifndef SGGrabPict - PyMac_PRECHECK(SGGrabPict); -#endif - if (!PyArg_ParseTuple(_args, "O&O&hl", - CmpInstObj_Convert, &s, - PyMac_GetRect, &bounds, - &offscreenDepth, - &grabPictFlags)) - return NULL; - _rv = SGGrabPict(s, - &p, - &bounds, - offscreenDepth, - grabPictFlags); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, p); - return _res; -} - -static PyObject *Qt_SGGetLastMovieResID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - short resID; -#ifndef SGGetLastMovieResID - PyMac_PRECHECK(SGGetLastMovieResID); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGGetLastMovieResID(s, - &resID); - _res = Py_BuildValue("lh", - _rv, - resID); - return _res; -} - -static PyObject *Qt_SGSetFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - long sgFlags; -#ifndef SGSetFlags - PyMac_PRECHECK(SGSetFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &s, - &sgFlags)) - return NULL; - _rv = SGSetFlags(s, - sgFlags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - long sgFlags; -#ifndef SGGetFlags - PyMac_PRECHECK(SGGetFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGGetFlags(s, - &sgFlags); - _res = Py_BuildValue("ll", - _rv, - sgFlags); - return _res; -} - -static PyObject *Qt_SGNewChannelFromComponent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel newChannel; - Component sgChannelComponent; -#ifndef SGNewChannelFromComponent - PyMac_PRECHECK(SGNewChannelFromComponent); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - CmpObj_Convert, &sgChannelComponent)) - return NULL; - _rv = SGNewChannelFromComponent(s, - &newChannel, - sgChannelComponent); - _res = Py_BuildValue("lO&", - _rv, - CmpInstObj_New, newChannel); - return _res; -} - -static PyObject *Qt_SGSetSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - UserData ud; - long flags; -#ifndef SGSetSettings - PyMac_PRECHECK(SGSetSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - CmpInstObj_Convert, &s, - UserDataObj_Convert, &ud, - &flags)) - return NULL; - _rv = SGSetSettings(s, - ud, - flags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - UserData ud; - long flags; -#ifndef SGGetSettings - PyMac_PRECHECK(SGGetSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &s, - &flags)) - return NULL; - _rv = SGGetSettings(s, - &ud, - flags); - _res = Py_BuildValue("lO&", - _rv, - UserDataObj_New, ud); - return _res; -} - -static PyObject *Qt_SGGetIndChannel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - short index; - SGChannel ref; - OSType chanType; -#ifndef SGGetIndChannel - PyMac_PRECHECK(SGGetIndChannel); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &s, - &index)) - return NULL; - _rv = SGGetIndChannel(s, - index, - &ref, - &chanType); - _res = Py_BuildValue("lO&O&", - _rv, - CmpInstObj_New, ref, - PyMac_BuildOSType, chanType); - return _res; -} - -static PyObject *Qt_SGUpdate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - RgnHandle updateRgn; -#ifndef SGUpdate - PyMac_PRECHECK(SGUpdate); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - ResObj_Convert, &updateRgn)) - return NULL; - _rv = SGUpdate(s, - updateRgn); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetPause(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - Boolean paused; -#ifndef SGGetPause - PyMac_PRECHECK(SGGetPause); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGGetPause(s, - &paused); - _res = Py_BuildValue("lb", - _rv, - paused); - return _res; -} - -static PyObject *Qt_SGSetChannelSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; - UserData ud; - long flags; -#ifndef SGSetChannelSettings - PyMac_PRECHECK(SGSetChannelSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&l", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c, - UserDataObj_Convert, &ud, - &flags)) - return NULL; - _rv = SGSetChannelSettings(s, - c, - ud, - flags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetChannelSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; - UserData ud; - long flags; -#ifndef SGGetChannelSettings - PyMac_PRECHECK(SGGetChannelSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c, - &flags)) - return NULL; - _rv = SGGetChannelSettings(s, - c, - &ud, - flags); - _res = Py_BuildValue("lO&", - _rv, - UserDataObj_New, ud); - return _res; -} - -static PyObject *Qt_SGGetMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - Boolean previewMode; - Boolean recordMode; -#ifndef SGGetMode - PyMac_PRECHECK(SGGetMode); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGGetMode(s, - &previewMode, - &recordMode); - _res = Py_BuildValue("lbb", - _rv, - previewMode, - recordMode); - return _res; -} - -static PyObject *Qt_SGSetDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - Handle dataRef; - OSType dataRefType; - long whereFlags; -#ifndef SGSetDataRef - PyMac_PRECHECK(SGSetDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&l", - CmpInstObj_Convert, &s, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType, - &whereFlags)) - return NULL; - _rv = SGSetDataRef(s, - dataRef, - dataRefType, - whereFlags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetDataRef(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - Handle dataRef; - OSType dataRefType; - long whereFlags; -#ifndef SGGetDataRef - PyMac_PRECHECK(SGGetDataRef); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGGetDataRef(s, - &dataRef, - &dataRefType, - &whereFlags); - _res = Py_BuildValue("lO&O&l", - _rv, - ResObj_New, dataRef, - PyMac_BuildOSType, dataRefType, - whereFlags); - return _res; -} - -static PyObject *Qt_SGNewOutput(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - Handle dataRef; - OSType dataRefType; - long whereFlags; - SGOutput sgOut; -#ifndef SGNewOutput - PyMac_PRECHECK(SGNewOutput); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&l", - CmpInstObj_Convert, &s, - ResObj_Convert, &dataRef, - PyMac_GetOSType, &dataRefType, - &whereFlags)) - return NULL; - _rv = SGNewOutput(s, - dataRef, - dataRefType, - whereFlags, - &sgOut); - _res = Py_BuildValue("lO&", - _rv, - SGOutputObj_New, sgOut); - return _res; -} - -static PyObject *Qt_SGDisposeOutput(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGOutput sgOut; -#ifndef SGDisposeOutput - PyMac_PRECHECK(SGDisposeOutput); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - SGOutputObj_Convert, &sgOut)) - return NULL; - _rv = SGDisposeOutput(s, - sgOut); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetOutputFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGOutput sgOut; - long whereFlags; -#ifndef SGSetOutputFlags - PyMac_PRECHECK(SGSetOutputFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - CmpInstObj_Convert, &s, - SGOutputObj_Convert, &sgOut, - &whereFlags)) - return NULL; - _rv = SGSetOutputFlags(s, - sgOut, - whereFlags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetChannelOutput(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; - SGOutput sgOut; -#ifndef SGSetChannelOutput - PyMac_PRECHECK(SGSetChannelOutput); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c, - SGOutputObj_Convert, &sgOut)) - return NULL; - _rv = SGSetChannelOutput(s, - c, - sgOut); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetDataOutputStorageSpaceRemaining(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGOutput sgOut; - unsigned long space; -#ifndef SGGetDataOutputStorageSpaceRemaining - PyMac_PRECHECK(SGGetDataOutputStorageSpaceRemaining); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - SGOutputObj_Convert, &sgOut)) - return NULL; - _rv = SGGetDataOutputStorageSpaceRemaining(s, - sgOut, - &space); - _res = Py_BuildValue("ll", - _rv, - space); - return _res; -} - -static PyObject *Qt_SGHandleUpdateEvent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - EventRecord event; - Boolean handled; -#ifndef SGHandleUpdateEvent - PyMac_PRECHECK(SGHandleUpdateEvent); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - PyMac_GetEventRecord, &event)) - return NULL; - _rv = SGHandleUpdateEvent(s, - &event, - &handled); - _res = Py_BuildValue("lb", - _rv, - handled); - return _res; -} - -static PyObject *Qt_SGSetOutputNextOutput(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGOutput sgOut; - SGOutput nextOut; -#ifndef SGSetOutputNextOutput - PyMac_PRECHECK(SGSetOutputNextOutput); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &s, - SGOutputObj_Convert, &sgOut, - SGOutputObj_Convert, &nextOut)) - return NULL; - _rv = SGSetOutputNextOutput(s, - sgOut, - nextOut); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetOutputNextOutput(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGOutput sgOut; - SGOutput nextOut; -#ifndef SGGetOutputNextOutput - PyMac_PRECHECK(SGGetOutputNextOutput); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - SGOutputObj_Convert, &sgOut)) - return NULL; - _rv = SGGetOutputNextOutput(s, - sgOut, - &nextOut); - _res = Py_BuildValue("lO&", - _rv, - SGOutputObj_New, nextOut); - return _res; -} - -static PyObject *Qt_SGSetOutputMaximumOffset(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGOutput sgOut; - wide maxOffset; -#ifndef SGSetOutputMaximumOffset - PyMac_PRECHECK(SGSetOutputMaximumOffset); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &s, - SGOutputObj_Convert, &sgOut, - PyMac_Getwide, &maxOffset)) - return NULL; - _rv = SGSetOutputMaximumOffset(s, - sgOut, - &maxOffset); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetOutputMaximumOffset(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGOutput sgOut; - wide maxOffset; -#ifndef SGGetOutputMaximumOffset - PyMac_PRECHECK(SGGetOutputMaximumOffset); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - SGOutputObj_Convert, &sgOut)) - return NULL; - _rv = SGGetOutputMaximumOffset(s, - sgOut, - &maxOffset); - _res = Py_BuildValue("lO&", - _rv, - PyMac_Buildwide, maxOffset); - return _res; -} - -static PyObject *Qt_SGGetOutputDataReference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGOutput sgOut; - Handle dataRef; - OSType dataRefType; -#ifndef SGGetOutputDataReference - PyMac_PRECHECK(SGGetOutputDataReference); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - SGOutputObj_Convert, &sgOut)) - return NULL; - _rv = SGGetOutputDataReference(s, - sgOut, - &dataRef, - &dataRefType); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, dataRef, - PyMac_BuildOSType, dataRefType); - return _res; -} - -static PyObject *Qt_SGWriteExtendedMovieData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; - Ptr p; - long len; - wide offset; - SGOutput sgOut; -#ifndef SGWriteExtendedMovieData - PyMac_PRECHECK(SGWriteExtendedMovieData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&sl", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c, - &p, - &len)) - return NULL; - _rv = SGWriteExtendedMovieData(s, - c, - p, - len, - &offset, - &sgOut); - _res = Py_BuildValue("lO&O&", - _rv, - PyMac_Buildwide, offset, - SGOutputObj_New, sgOut); - return _res; -} - -static PyObject *Qt_SGGetStorageSpaceRemaining64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - wide bytes; -#ifndef SGGetStorageSpaceRemaining64 - PyMac_PRECHECK(SGGetStorageSpaceRemaining64); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGGetStorageSpaceRemaining64(s, - &bytes); - _res = Py_BuildValue("lO&", - _rv, - PyMac_Buildwide, bytes); - return _res; -} - -static PyObject *Qt_SGGetDataOutputStorageSpaceRemaining64(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGOutput sgOut; - wide space; -#ifndef SGGetDataOutputStorageSpaceRemaining64 - PyMac_PRECHECK(SGGetDataOutputStorageSpaceRemaining64); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - SGOutputObj_Convert, &sgOut)) - return NULL; - _rv = SGGetDataOutputStorageSpaceRemaining64(s, - sgOut, - &space); - _res = Py_BuildValue("lO&", - _rv, - PyMac_Buildwide, space); - return _res; -} - -static PyObject *Qt_SGWriteMovieData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; - Ptr p; - long len; - long offset; -#ifndef SGWriteMovieData - PyMac_PRECHECK(SGWriteMovieData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&sl", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c, - &p, - &len)) - return NULL; - _rv = SGWriteMovieData(s, - c, - p, - len, - &offset); - _res = Py_BuildValue("ll", - _rv, - offset); - return _res; -} - -static PyObject *Qt_SGGetTimeBase(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - TimeBase tb; -#ifndef SGGetTimeBase - PyMac_PRECHECK(SGGetTimeBase); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGGetTimeBase(s, - &tb); - _res = Py_BuildValue("lO&", - _rv, - TimeBaseObj_New, tb); - return _res; -} - -static PyObject *Qt_SGAddMovieData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; - Ptr p; - long len; - long offset; - long chRefCon; - TimeValue time; - short writeType; -#ifndef SGAddMovieData - PyMac_PRECHECK(SGAddMovieData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&slllh", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c, - &p, - &len, - &chRefCon, - &time, - &writeType)) - return NULL; - _rv = SGAddMovieData(s, - c, - p, - len, - &offset, - chRefCon, - time, - writeType); - _res = Py_BuildValue("ll", - _rv, - offset); - return _res; -} - -static PyObject *Qt_SGChangedSource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; -#ifndef SGChangedSource - PyMac_PRECHECK(SGChangedSource); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGChangedSource(s, - c); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGAddExtendedMovieData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; - Ptr p; - long len; - wide offset; - long chRefCon; - TimeValue time; - short writeType; - SGOutput whichOutput; -#ifndef SGAddExtendedMovieData - PyMac_PRECHECK(SGAddExtendedMovieData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&slllh", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c, - &p, - &len, - &chRefCon, - &time, - &writeType)) - return NULL; - _rv = SGAddExtendedMovieData(s, - c, - p, - len, - &offset, - chRefCon, - time, - writeType, - &whichOutput); - _res = Py_BuildValue("lO&O&", - _rv, - PyMac_Buildwide, offset, - SGOutputObj_New, whichOutput); - return _res; -} - -static PyObject *Qt_SGAddOutputDataRefToMedia(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGOutput sgOut; - Media theMedia; - SampleDescriptionHandle desc; -#ifndef SGAddOutputDataRefToMedia - PyMac_PRECHECK(SGAddOutputDataRefToMedia); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&O&", - CmpInstObj_Convert, &s, - SGOutputObj_Convert, &sgOut, - MediaObj_Convert, &theMedia, - ResObj_Convert, &desc)) - return NULL; - _rv = SGAddOutputDataRefToMedia(s, - sgOut, - theMedia, - desc); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetSettingsSummary(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - Handle summaryText; -#ifndef SGSetSettingsSummary - PyMac_PRECHECK(SGSetSettingsSummary); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - ResObj_Convert, &summaryText)) - return NULL; - _rv = SGSetSettingsSummary(s, - summaryText); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetChannelUsage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long usage; -#ifndef SGSetChannelUsage - PyMac_PRECHECK(SGSetChannelUsage); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &c, - &usage)) - return NULL; - _rv = SGSetChannelUsage(c, - usage); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetChannelUsage(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long usage; -#ifndef SGGetChannelUsage - PyMac_PRECHECK(SGGetChannelUsage); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetChannelUsage(c, - &usage); - _res = Py_BuildValue("ll", - _rv, - usage); - return _res; -} - -static PyObject *Qt_SGSetChannelBounds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Rect bounds; -#ifndef SGSetChannelBounds - PyMac_PRECHECK(SGSetChannelBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - PyMac_GetRect, &bounds)) - return NULL; - _rv = SGSetChannelBounds(c, - &bounds); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetChannelBounds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Rect bounds; -#ifndef SGGetChannelBounds - PyMac_PRECHECK(SGGetChannelBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetChannelBounds(c, - &bounds); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &bounds); - return _res; -} - -static PyObject *Qt_SGSetChannelVolume(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short volume; -#ifndef SGSetChannelVolume - PyMac_PRECHECK(SGSetChannelVolume); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &c, - &volume)) - return NULL; - _rv = SGSetChannelVolume(c, - volume); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetChannelVolume(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short volume; -#ifndef SGGetChannelVolume - PyMac_PRECHECK(SGGetChannelVolume); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetChannelVolume(c, - &volume); - _res = Py_BuildValue("lh", - _rv, - volume); - return _res; -} - -static PyObject *Qt_SGGetChannelInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long channelInfo; -#ifndef SGGetChannelInfo - PyMac_PRECHECK(SGGetChannelInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetChannelInfo(c, - &channelInfo); - _res = Py_BuildValue("ll", - _rv, - channelInfo); - return _res; -} - -static PyObject *Qt_SGSetChannelPlayFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long playFlags; -#ifndef SGSetChannelPlayFlags - PyMac_PRECHECK(SGSetChannelPlayFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &c, - &playFlags)) - return NULL; - _rv = SGSetChannelPlayFlags(c, - playFlags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetChannelPlayFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long playFlags; -#ifndef SGGetChannelPlayFlags - PyMac_PRECHECK(SGGetChannelPlayFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetChannelPlayFlags(c, - &playFlags); - _res = Py_BuildValue("ll", - _rv, - playFlags); - return _res; -} - -static PyObject *Qt_SGSetChannelMaxFrames(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long frameCount; -#ifndef SGSetChannelMaxFrames - PyMac_PRECHECK(SGSetChannelMaxFrames); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &c, - &frameCount)) - return NULL; - _rv = SGSetChannelMaxFrames(c, - frameCount); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetChannelMaxFrames(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long frameCount; -#ifndef SGGetChannelMaxFrames - PyMac_PRECHECK(SGGetChannelMaxFrames); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetChannelMaxFrames(c, - &frameCount); - _res = Py_BuildValue("ll", - _rv, - frameCount); - return _res; -} - -static PyObject *Qt_SGSetChannelRefCon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long refCon; -#ifndef SGSetChannelRefCon - PyMac_PRECHECK(SGSetChannelRefCon); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &c, - &refCon)) - return NULL; - _rv = SGSetChannelRefCon(c, - refCon); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetChannelClip(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - RgnHandle theClip; -#ifndef SGSetChannelClip - PyMac_PRECHECK(SGSetChannelClip); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - ResObj_Convert, &theClip)) - return NULL; - _rv = SGSetChannelClip(c, - theClip); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetChannelClip(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - RgnHandle theClip; -#ifndef SGGetChannelClip - PyMac_PRECHECK(SGGetChannelClip); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetChannelClip(c, - &theClip); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, theClip); - return _res; -} - -static PyObject *Qt_SGGetChannelSampleDescription(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Handle sampleDesc; -#ifndef SGGetChannelSampleDescription - PyMac_PRECHECK(SGGetChannelSampleDescription); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - ResObj_Convert, &sampleDesc)) - return NULL; - _rv = SGGetChannelSampleDescription(c, - sampleDesc); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetChannelDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - StringPtr name; -#ifndef SGSetChannelDevice - PyMac_PRECHECK(SGSetChannelDevice); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &c, - &name)) - return NULL; - _rv = SGSetChannelDevice(c, - name); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetChannelTimeScale(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - TimeScale scale; -#ifndef SGGetChannelTimeScale - PyMac_PRECHECK(SGGetChannelTimeScale); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetChannelTimeScale(c, - &scale); - _res = Py_BuildValue("ll", - _rv, - scale); - return _res; -} - -static PyObject *Qt_SGChannelPutPicture(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; -#ifndef SGChannelPutPicture - PyMac_PRECHECK(SGChannelPutPicture); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGChannelPutPicture(c); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGChannelSetRequestedDataRate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long bytesPerSecond; -#ifndef SGChannelSetRequestedDataRate - PyMac_PRECHECK(SGChannelSetRequestedDataRate); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &c, - &bytesPerSecond)) - return NULL; - _rv = SGChannelSetRequestedDataRate(c, - bytesPerSecond); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGChannelGetRequestedDataRate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long bytesPerSecond; -#ifndef SGChannelGetRequestedDataRate - PyMac_PRECHECK(SGChannelGetRequestedDataRate); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGChannelGetRequestedDataRate(c, - &bytesPerSecond); - _res = Py_BuildValue("ll", - _rv, - bytesPerSecond); - return _res; -} - -static PyObject *Qt_SGChannelSetDataSourceName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Str255 name; - ScriptCode scriptTag; -#ifndef SGChannelSetDataSourceName - PyMac_PRECHECK(SGChannelSetDataSourceName); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - CmpInstObj_Convert, &c, - PyMac_GetStr255, name, - &scriptTag)) - return NULL; - _rv = SGChannelSetDataSourceName(c, - name, - scriptTag); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGChannelGetDataSourceName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Str255 name; - ScriptCode scriptTag; -#ifndef SGChannelGetDataSourceName - PyMac_PRECHECK(SGChannelGetDataSourceName); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - PyMac_GetStr255, name)) - return NULL; - _rv = SGChannelGetDataSourceName(c, - name, - &scriptTag); - _res = Py_BuildValue("lh", - _rv, - scriptTag); - return _res; -} - -static PyObject *Qt_SGChannelSetCodecSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Handle settings; -#ifndef SGChannelSetCodecSettings - PyMac_PRECHECK(SGChannelSetCodecSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - ResObj_Convert, &settings)) - return NULL; - _rv = SGChannelSetCodecSettings(c, - settings); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGChannelGetCodecSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Handle settings; -#ifndef SGChannelGetCodecSettings - PyMac_PRECHECK(SGChannelGetCodecSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGChannelGetCodecSettings(c, - &settings); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, settings); - return _res; -} - -static PyObject *Qt_SGGetChannelTimeBase(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - TimeBase tb; -#ifndef SGGetChannelTimeBase - PyMac_PRECHECK(SGGetChannelTimeBase); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetChannelTimeBase(c, - &tb); - _res = Py_BuildValue("lO&", - _rv, - TimeBaseObj_New, tb); - return _res; -} - -static PyObject *Qt_SGGetChannelRefCon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long refCon; -#ifndef SGGetChannelRefCon - PyMac_PRECHECK(SGGetChannelRefCon); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetChannelRefCon(c, - &refCon); - _res = Py_BuildValue("ll", - _rv, - refCon); - return _res; -} - -static PyObject *Qt_SGGetChannelDeviceAndInputNames(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Str255 outDeviceName; - Str255 outInputName; - short outInputNumber; -#ifndef SGGetChannelDeviceAndInputNames - PyMac_PRECHECK(SGGetChannelDeviceAndInputNames); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &c, - PyMac_GetStr255, outDeviceName, - PyMac_GetStr255, outInputName)) - return NULL; - _rv = SGGetChannelDeviceAndInputNames(c, - outDeviceName, - outInputName, - &outInputNumber); - _res = Py_BuildValue("lh", - _rv, - outInputNumber); - return _res; -} - -static PyObject *Qt_SGSetChannelDeviceInput(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short inInputNumber; -#ifndef SGSetChannelDeviceInput - PyMac_PRECHECK(SGSetChannelDeviceInput); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &c, - &inInputNumber)) - return NULL; - _rv = SGSetChannelDeviceInput(c, - inInputNumber); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetChannelSettingsStateChanging(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - UInt32 inFlags; -#ifndef SGSetChannelSettingsStateChanging - PyMac_PRECHECK(SGSetChannelSettingsStateChanging); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &c, - &inFlags)) - return NULL; - _rv = SGSetChannelSettingsStateChanging(c, - inFlags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGInitChannel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - SeqGrabComponent owner; -#ifndef SGInitChannel - PyMac_PRECHECK(SGInitChannel); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - CmpInstObj_Convert, &owner)) - return NULL; - _rv = SGInitChannel(c, - owner); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGWriteSamples(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Movie m; - AliasHandle theFile; -#ifndef SGWriteSamples - PyMac_PRECHECK(SGWriteSamples); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &c, - MovieObj_Convert, &m, - ResObj_Convert, &theFile)) - return NULL; - _rv = SGWriteSamples(c, - m, - theFile); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetDataRate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long bytesPerSecond; -#ifndef SGGetDataRate - PyMac_PRECHECK(SGGetDataRate); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetDataRate(c, - &bytesPerSecond); - _res = Py_BuildValue("ll", - _rv, - bytesPerSecond); - return _res; -} - -static PyObject *Qt_SGAlignChannelRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Rect r; -#ifndef SGAlignChannelRect - PyMac_PRECHECK(SGAlignChannelRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGAlignChannelRect(c, - &r); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &r); - return _res; -} - -static PyObject *Qt_SGPanelGetDitl(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - Handle ditl; -#ifndef SGPanelGetDitl - PyMac_PRECHECK(SGPanelGetDitl); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGPanelGetDitl(s, - &ditl); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, ditl); - return _res; -} - -static PyObject *Qt_SGPanelGetTitle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - Str255 title; -#ifndef SGPanelGetTitle - PyMac_PRECHECK(SGPanelGetTitle); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - PyMac_GetStr255, title)) - return NULL; - _rv = SGPanelGetTitle(s, - title); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGPanelCanRun(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; -#ifndef SGPanelCanRun - PyMac_PRECHECK(SGPanelCanRun); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGPanelCanRun(s, - c); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGPanelInstall(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; - DialogPtr d; - short itemOffset; -#ifndef SGPanelInstall - PyMac_PRECHECK(SGPanelInstall); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&h", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c, - DlgObj_Convert, &d, - &itemOffset)) - return NULL; - _rv = SGPanelInstall(s, - c, - d, - itemOffset); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGPanelEvent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; - DialogPtr d; - short itemOffset; - EventRecord theEvent; - short itemHit; - Boolean handled; -#ifndef SGPanelEvent - PyMac_PRECHECK(SGPanelEvent); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&hO&", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c, - DlgObj_Convert, &d, - &itemOffset, - PyMac_GetEventRecord, &theEvent)) - return NULL; - _rv = SGPanelEvent(s, - c, - d, - itemOffset, - &theEvent, - &itemHit, - &handled); - _res = Py_BuildValue("lhb", - _rv, - itemHit, - handled); - return _res; -} - -static PyObject *Qt_SGPanelItem(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; - DialogPtr d; - short itemOffset; - short itemNum; -#ifndef SGPanelItem - PyMac_PRECHECK(SGPanelItem); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&hh", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c, - DlgObj_Convert, &d, - &itemOffset, - &itemNum)) - return NULL; - _rv = SGPanelItem(s, - c, - d, - itemOffset, - itemNum); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGPanelRemove(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; - DialogPtr d; - short itemOffset; -#ifndef SGPanelRemove - PyMac_PRECHECK(SGPanelRemove); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&h", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c, - DlgObj_Convert, &d, - &itemOffset)) - return NULL; - _rv = SGPanelRemove(s, - c, - d, - itemOffset); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGPanelSetGrabber(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SeqGrabComponent sg; -#ifndef SGPanelSetGrabber - PyMac_PRECHECK(SGPanelSetGrabber); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &sg)) - return NULL; - _rv = SGPanelSetGrabber(s, - sg); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGPanelSetResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - short resRef; -#ifndef SGPanelSetResFile - PyMac_PRECHECK(SGPanelSetResFile); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &s, - &resRef)) - return NULL; - _rv = SGPanelSetResFile(s, - resRef); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGPanelGetSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; - UserData ud; - long flags; -#ifndef SGPanelGetSettings - PyMac_PRECHECK(SGPanelGetSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c, - &flags)) - return NULL; - _rv = SGPanelGetSettings(s, - c, - &ud, - flags); - _res = Py_BuildValue("lO&", - _rv, - UserDataObj_New, ud); - return _res; -} - -static PyObject *Qt_SGPanelSetSettings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - SGChannel c; - UserData ud; - long flags; -#ifndef SGPanelSetSettings - PyMac_PRECHECK(SGPanelSetSettings); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&l", - CmpInstObj_Convert, &s, - CmpInstObj_Convert, &c, - UserDataObj_Convert, &ud, - &flags)) - return NULL; - _rv = SGPanelSetSettings(s, - c, - ud, - flags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGPanelValidateInput(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - Boolean ok; -#ifndef SGPanelValidateInput - PyMac_PRECHECK(SGPanelValidateInput); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGPanelValidateInput(s, - &ok); - _res = Py_BuildValue("lb", - _rv, - ok); - return _res; -} - -static PyObject *Qt_SGPanelGetDITLForSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SeqGrabComponent s; - Handle ditl; - Point requestedSize; -#ifndef SGPanelGetDITLForSize - PyMac_PRECHECK(SGPanelGetDITLForSize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &s)) - return NULL; - _rv = SGPanelGetDITLForSize(s, - &ditl, - &requestedSize); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, ditl, - PyMac_BuildPoint, requestedSize); - return _res; -} - -static PyObject *Qt_SGGetSrcVideoBounds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Rect r; -#ifndef SGGetSrcVideoBounds - PyMac_PRECHECK(SGGetSrcVideoBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetSrcVideoBounds(c, - &r); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &r); - return _res; -} - -static PyObject *Qt_SGSetVideoRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Rect r; -#ifndef SGSetVideoRect - PyMac_PRECHECK(SGSetVideoRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - PyMac_GetRect, &r)) - return NULL; - _rv = SGSetVideoRect(c, - &r); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetVideoRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Rect r; -#ifndef SGGetVideoRect - PyMac_PRECHECK(SGGetVideoRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetVideoRect(c, - &r); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &r); - return _res; -} - -static PyObject *Qt_SGGetVideoCompressorType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - OSType compressorType; -#ifndef SGGetVideoCompressorType - PyMac_PRECHECK(SGGetVideoCompressorType); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetVideoCompressorType(c, - &compressorType); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildOSType, compressorType); - return _res; -} - -static PyObject *Qt_SGSetVideoCompressorType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - OSType compressorType; -#ifndef SGSetVideoCompressorType - PyMac_PRECHECK(SGSetVideoCompressorType); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - PyMac_GetOSType, &compressorType)) - return NULL; - _rv = SGSetVideoCompressorType(c, - compressorType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetVideoCompressor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short depth; - CompressorComponent compressor; - CodecQ spatialQuality; - CodecQ temporalQuality; - long keyFrameRate; -#ifndef SGSetVideoCompressor - PyMac_PRECHECK(SGSetVideoCompressor); -#endif - if (!PyArg_ParseTuple(_args, "O&hO&lll", - CmpInstObj_Convert, &c, - &depth, - CmpObj_Convert, &compressor, - &spatialQuality, - &temporalQuality, - &keyFrameRate)) - return NULL; - _rv = SGSetVideoCompressor(c, - depth, - compressor, - spatialQuality, - temporalQuality, - keyFrameRate); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetVideoCompressor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short depth; - CompressorComponent compressor; - CodecQ spatialQuality; - CodecQ temporalQuality; - long keyFrameRate; -#ifndef SGGetVideoCompressor - PyMac_PRECHECK(SGGetVideoCompressor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetVideoCompressor(c, - &depth, - &compressor, - &spatialQuality, - &temporalQuality, - &keyFrameRate); - _res = Py_BuildValue("lhO&lll", - _rv, - depth, - CmpObj_New, compressor, - spatialQuality, - temporalQuality, - keyFrameRate); - return _res; -} - -static PyObject *Qt_SGGetVideoDigitizerComponent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentInstance _rv; - SGChannel c; -#ifndef SGGetVideoDigitizerComponent - PyMac_PRECHECK(SGGetVideoDigitizerComponent); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetVideoDigitizerComponent(c); - _res = Py_BuildValue("O&", - CmpInstObj_New, _rv); - return _res; -} - -static PyObject *Qt_SGSetVideoDigitizerComponent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - ComponentInstance vdig; -#ifndef SGSetVideoDigitizerComponent - PyMac_PRECHECK(SGSetVideoDigitizerComponent); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - CmpInstObj_Convert, &vdig)) - return NULL; - _rv = SGSetVideoDigitizerComponent(c, - vdig); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGVideoDigitizerChanged(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; -#ifndef SGVideoDigitizerChanged - PyMac_PRECHECK(SGVideoDigitizerChanged); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGVideoDigitizerChanged(c); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGrabFrame(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short bufferNum; -#ifndef SGGrabFrame - PyMac_PRECHECK(SGGrabFrame); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &c, - &bufferNum)) - return NULL; - _rv = SGGrabFrame(c, - bufferNum); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGrabFrameComplete(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short bufferNum; - Boolean done; -#ifndef SGGrabFrameComplete - PyMac_PRECHECK(SGGrabFrameComplete); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &c, - &bufferNum)) - return NULL; - _rv = SGGrabFrameComplete(c, - bufferNum, - &done); - _res = Py_BuildValue("lb", - _rv, - done); - return _res; -} - -static PyObject *Qt_SGCompressFrame(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short bufferNum; -#ifndef SGCompressFrame - PyMac_PRECHECK(SGCompressFrame); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &c, - &bufferNum)) - return NULL; - _rv = SGCompressFrame(c, - bufferNum); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetCompressBuffer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short depth; - Rect compressSize; -#ifndef SGSetCompressBuffer - PyMac_PRECHECK(SGSetCompressBuffer); -#endif - if (!PyArg_ParseTuple(_args, "O&hO&", - CmpInstObj_Convert, &c, - &depth, - PyMac_GetRect, &compressSize)) - return NULL; - _rv = SGSetCompressBuffer(c, - depth, - &compressSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetCompressBuffer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short depth; - Rect compressSize; -#ifndef SGGetCompressBuffer - PyMac_PRECHECK(SGGetCompressBuffer); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetCompressBuffer(c, - &depth, - &compressSize); - _res = Py_BuildValue("lhO&", - _rv, - depth, - PyMac_BuildRect, &compressSize); - return _res; -} - -static PyObject *Qt_SGGetBufferInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short bufferNum; - PixMapHandle bufferPM; - Rect bufferRect; - GWorldPtr compressBuffer; - Rect compressBufferRect; -#ifndef SGGetBufferInfo - PyMac_PRECHECK(SGGetBufferInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &c, - &bufferNum)) - return NULL; - _rv = SGGetBufferInfo(c, - bufferNum, - &bufferPM, - &bufferRect, - &compressBuffer, - &compressBufferRect); - _res = Py_BuildValue("lO&O&O&O&", - _rv, - ResObj_New, bufferPM, - PyMac_BuildRect, &bufferRect, - GWorldObj_New, compressBuffer, - PyMac_BuildRect, &compressBufferRect); - return _res; -} - -static PyObject *Qt_SGSetUseScreenBuffer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Boolean useScreenBuffer; -#ifndef SGSetUseScreenBuffer - PyMac_PRECHECK(SGSetUseScreenBuffer); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - CmpInstObj_Convert, &c, - &useScreenBuffer)) - return NULL; - _rv = SGSetUseScreenBuffer(c, - useScreenBuffer); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetUseScreenBuffer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Boolean useScreenBuffer; -#ifndef SGGetUseScreenBuffer - PyMac_PRECHECK(SGGetUseScreenBuffer); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetUseScreenBuffer(c, - &useScreenBuffer); - _res = Py_BuildValue("lb", - _rv, - useScreenBuffer); - return _res; -} - -static PyObject *Qt_SGSetFrameRate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Fixed frameRate; -#ifndef SGSetFrameRate - PyMac_PRECHECK(SGSetFrameRate); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - PyMac_GetFixed, &frameRate)) - return NULL; - _rv = SGSetFrameRate(c, - frameRate); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetFrameRate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Fixed frameRate; -#ifndef SGGetFrameRate - PyMac_PRECHECK(SGGetFrameRate); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetFrameRate(c, - &frameRate); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildFixed, frameRate); - return _res; -} - -static PyObject *Qt_SGSetPreferredPacketSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long preferredPacketSizeInBytes; -#ifndef SGSetPreferredPacketSize - PyMac_PRECHECK(SGSetPreferredPacketSize); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &c, - &preferredPacketSizeInBytes)) - return NULL; - _rv = SGSetPreferredPacketSize(c, - preferredPacketSizeInBytes); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetPreferredPacketSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long preferredPacketSizeInBytes; -#ifndef SGGetPreferredPacketSize - PyMac_PRECHECK(SGGetPreferredPacketSize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetPreferredPacketSize(c, - &preferredPacketSizeInBytes); - _res = Py_BuildValue("ll", - _rv, - preferredPacketSizeInBytes); - return _res; -} - -static PyObject *Qt_SGSetUserVideoCompressorList(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Handle compressorTypes; -#ifndef SGSetUserVideoCompressorList - PyMac_PRECHECK(SGSetUserVideoCompressorList); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - ResObj_Convert, &compressorTypes)) - return NULL; - _rv = SGSetUserVideoCompressorList(c, - compressorTypes); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetUserVideoCompressorList(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Handle compressorTypes; -#ifndef SGGetUserVideoCompressorList - PyMac_PRECHECK(SGGetUserVideoCompressorList); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetUserVideoCompressorList(c, - &compressorTypes); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, compressorTypes); - return _res; -} - -static PyObject *Qt_SGSetSoundInputDriver(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Str255 driverName; -#ifndef SGSetSoundInputDriver - PyMac_PRECHECK(SGSetSoundInputDriver); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - PyMac_GetStr255, driverName)) - return NULL; - _rv = SGSetSoundInputDriver(c, - driverName); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetSoundInputDriver(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - SGChannel c; -#ifndef SGGetSoundInputDriver - PyMac_PRECHECK(SGGetSoundInputDriver); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetSoundInputDriver(c); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSoundInputDriverChanged(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; -#ifndef SGSoundInputDriverChanged - PyMac_PRECHECK(SGSoundInputDriverChanged); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGSoundInputDriverChanged(c); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetSoundRecordChunkSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - long seconds; -#ifndef SGSetSoundRecordChunkSize - PyMac_PRECHECK(SGSetSoundRecordChunkSize); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &c, - &seconds)) - return NULL; - _rv = SGSetSoundRecordChunkSize(c, - seconds); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetSoundRecordChunkSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - SGChannel c; -#ifndef SGGetSoundRecordChunkSize - PyMac_PRECHECK(SGGetSoundRecordChunkSize); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetSoundRecordChunkSize(c); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetSoundInputRate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Fixed rate; -#ifndef SGSetSoundInputRate - PyMac_PRECHECK(SGSetSoundInputRate); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - PyMac_GetFixed, &rate)) - return NULL; - _rv = SGSetSoundInputRate(c, - rate); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetSoundInputRate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Fixed _rv; - SGChannel c; -#ifndef SGGetSoundInputRate - PyMac_PRECHECK(SGGetSoundInputRate); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetSoundInputRate(c); - _res = Py_BuildValue("O&", - PyMac_BuildFixed, _rv); - return _res; -} - -static PyObject *Qt_SGSetSoundInputParameters(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short sampleSize; - short numChannels; - OSType compressionType; -#ifndef SGSetSoundInputParameters - PyMac_PRECHECK(SGSetSoundInputParameters); -#endif - if (!PyArg_ParseTuple(_args, "O&hhO&", - CmpInstObj_Convert, &c, - &sampleSize, - &numChannels, - PyMac_GetOSType, &compressionType)) - return NULL; - _rv = SGSetSoundInputParameters(c, - sampleSize, - numChannels, - compressionType); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetSoundInputParameters(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short sampleSize; - short numChannels; - OSType compressionType; -#ifndef SGGetSoundInputParameters - PyMac_PRECHECK(SGGetSoundInputParameters); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetSoundInputParameters(c, - &sampleSize, - &numChannels, - &compressionType); - _res = Py_BuildValue("lhhO&", - _rv, - sampleSize, - numChannels, - PyMac_BuildOSType, compressionType); - return _res; -} - -static PyObject *Qt_SGSetAdditionalSoundRates(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Handle rates; -#ifndef SGSetAdditionalSoundRates - PyMac_PRECHECK(SGSetAdditionalSoundRates); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &c, - ResObj_Convert, &rates)) - return NULL; - _rv = SGSetAdditionalSoundRates(c, - rates); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetAdditionalSoundRates(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - Handle rates; -#ifndef SGGetAdditionalSoundRates - PyMac_PRECHECK(SGGetAdditionalSoundRates); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetAdditionalSoundRates(c, - &rates); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, rates); - return _res; -} - -static PyObject *Qt_SGSetFontName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - StringPtr pstr; -#ifndef SGSetFontName - PyMac_PRECHECK(SGSetFontName); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &c, - &pstr)) - return NULL; - _rv = SGSetFontName(c, - pstr); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetFontSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short fontSize; -#ifndef SGSetFontSize - PyMac_PRECHECK(SGSetFontSize); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &c, - &fontSize)) - return NULL; - _rv = SGSetFontSize(c, - fontSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGSetTextForeColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - RGBColor theColor; -#ifndef SGSetTextForeColor - PyMac_PRECHECK(SGSetTextForeColor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGSetTextForeColor(c, - &theColor); - _res = Py_BuildValue("lO&", - _rv, - QdRGB_New, &theColor); - return _res; -} - -static PyObject *Qt_SGSetTextBackColor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - RGBColor theColor; -#ifndef SGSetTextBackColor - PyMac_PRECHECK(SGSetTextBackColor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGSetTextBackColor(c, - &theColor); - _res = Py_BuildValue("lO&", - _rv, - QdRGB_New, &theColor); - return _res; -} - -static PyObject *Qt_SGSetJustification(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short just; -#ifndef SGSetJustification - PyMac_PRECHECK(SGSetJustification); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &c, - &just)) - return NULL; - _rv = SGSetJustification(c, - just); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_SGGetTextReturnToSpaceValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short rettospace; -#ifndef SGGetTextReturnToSpaceValue - PyMac_PRECHECK(SGGetTextReturnToSpaceValue); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &c)) - return NULL; - _rv = SGGetTextReturnToSpaceValue(c, - &rettospace); - _res = Py_BuildValue("lh", - _rv, - rettospace); - return _res; -} - -static PyObject *Qt_SGSetTextReturnToSpaceValue(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - SGChannel c; - short rettospace; -#ifndef SGSetTextReturnToSpaceValue - PyMac_PRECHECK(SGSetTextReturnToSpaceValue); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &c, - &rettospace)) - return NULL; - _rv = SGSetTextReturnToSpaceValue(c, - rettospace); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_QTVideoOutputGetCurrentClientName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTVideoOutputComponent vo; - Str255 str; -#ifndef QTVideoOutputGetCurrentClientName - PyMac_PRECHECK(QTVideoOutputGetCurrentClientName); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &vo, - PyMac_GetStr255, str)) - return NULL; - _rv = QTVideoOutputGetCurrentClientName(vo, - str); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_QTVideoOutputSetClientName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTVideoOutputComponent vo; - Str255 str; -#ifndef QTVideoOutputSetClientName - PyMac_PRECHECK(QTVideoOutputSetClientName); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &vo, - PyMac_GetStr255, str)) - return NULL; - _rv = QTVideoOutputSetClientName(vo, - str); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_QTVideoOutputGetClientName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTVideoOutputComponent vo; - Str255 str; -#ifndef QTVideoOutputGetClientName - PyMac_PRECHECK(QTVideoOutputGetClientName); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &vo, - PyMac_GetStr255, str)) - return NULL; - _rv = QTVideoOutputGetClientName(vo, - str); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_QTVideoOutputBegin(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTVideoOutputComponent vo; -#ifndef QTVideoOutputBegin - PyMac_PRECHECK(QTVideoOutputBegin); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &vo)) - return NULL; - _rv = QTVideoOutputBegin(vo); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_QTVideoOutputEnd(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTVideoOutputComponent vo; -#ifndef QTVideoOutputEnd - PyMac_PRECHECK(QTVideoOutputEnd); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &vo)) - return NULL; - _rv = QTVideoOutputEnd(vo); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_QTVideoOutputSetDisplayMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTVideoOutputComponent vo; - long displayModeID; -#ifndef QTVideoOutputSetDisplayMode - PyMac_PRECHECK(QTVideoOutputSetDisplayMode); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &vo, - &displayModeID)) - return NULL; - _rv = QTVideoOutputSetDisplayMode(vo, - displayModeID); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_QTVideoOutputGetDisplayMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTVideoOutputComponent vo; - long displayModeID; -#ifndef QTVideoOutputGetDisplayMode - PyMac_PRECHECK(QTVideoOutputGetDisplayMode); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &vo)) - return NULL; - _rv = QTVideoOutputGetDisplayMode(vo, - &displayModeID); - _res = Py_BuildValue("ll", - _rv, - displayModeID); - return _res; -} - -static PyObject *Qt_QTVideoOutputGetGWorld(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTVideoOutputComponent vo; - GWorldPtr gw; -#ifndef QTVideoOutputGetGWorld - PyMac_PRECHECK(QTVideoOutputGetGWorld); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &vo)) - return NULL; - _rv = QTVideoOutputGetGWorld(vo, - &gw); - _res = Py_BuildValue("lO&", - _rv, - GWorldObj_New, gw); - return _res; -} - -static PyObject *Qt_QTVideoOutputGetIndSoundOutput(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTVideoOutputComponent vo; - long index; - Component outputComponent; -#ifndef QTVideoOutputGetIndSoundOutput - PyMac_PRECHECK(QTVideoOutputGetIndSoundOutput); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &vo, - &index)) - return NULL; - _rv = QTVideoOutputGetIndSoundOutput(vo, - index, - &outputComponent); - _res = Py_BuildValue("lO&", - _rv, - CmpObj_New, outputComponent); - return _res; -} - -static PyObject *Qt_QTVideoOutputGetClock(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTVideoOutputComponent vo; - ComponentInstance clock; -#ifndef QTVideoOutputGetClock - PyMac_PRECHECK(QTVideoOutputGetClock); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &vo)) - return NULL; - _rv = QTVideoOutputGetClock(vo, - &clock); - _res = Py_BuildValue("lO&", - _rv, - CmpInstObj_New, clock); - return _res; -} - -static PyObject *Qt_QTVideoOutputSetEchoPort(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTVideoOutputComponent vo; - CGrafPtr echoPort; -#ifndef QTVideoOutputSetEchoPort - PyMac_PRECHECK(QTVideoOutputSetEchoPort); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &vo, - GrafObj_Convert, &echoPort)) - return NULL; - _rv = QTVideoOutputSetEchoPort(vo, - echoPort); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_QTVideoOutputGetIndImageDecompressor(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTVideoOutputComponent vo; - long index; - Component codec; -#ifndef QTVideoOutputGetIndImageDecompressor - PyMac_PRECHECK(QTVideoOutputGetIndImageDecompressor); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &vo, - &index)) - return NULL; - _rv = QTVideoOutputGetIndImageDecompressor(vo, - index, - &codec); - _res = Py_BuildValue("lO&", - _rv, - CmpObj_New, codec); - return _res; -} - -static PyObject *Qt_QTVideoOutputBaseSetEchoPort(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTVideoOutputComponent vo; - CGrafPtr echoPort; -#ifndef QTVideoOutputBaseSetEchoPort - PyMac_PRECHECK(QTVideoOutputBaseSetEchoPort); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &vo, - GrafObj_Convert, &echoPort)) - return NULL; - _rv = QTVideoOutputBaseSetEchoPort(vo, - echoPort); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSetChunkManagementFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - UInt32 flags; - UInt32 flagsMask; -#ifndef MediaSetChunkManagementFlags - PyMac_PRECHECK(MediaSetChunkManagementFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mh, - &flags, - &flagsMask)) - return NULL; - _rv = MediaSetChunkManagementFlags(mh, - flags, - flagsMask); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetChunkManagementFlags(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - UInt32 flags; -#ifndef MediaGetChunkManagementFlags - PyMac_PRECHECK(MediaGetChunkManagementFlags); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetChunkManagementFlags(mh, - &flags); - _res = Py_BuildValue("ll", - _rv, - flags); - return _res; -} - -static PyObject *Qt_MediaSetPurgeableChunkMemoryAllowance(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Size allowance; -#ifndef MediaSetPurgeableChunkMemoryAllowance - PyMac_PRECHECK(MediaSetPurgeableChunkMemoryAllowance); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &allowance)) - return NULL; - _rv = MediaSetPurgeableChunkMemoryAllowance(mh, - allowance); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetPurgeableChunkMemoryAllowance(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Size allowance; -#ifndef MediaGetPurgeableChunkMemoryAllowance - PyMac_PRECHECK(MediaGetPurgeableChunkMemoryAllowance); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetPurgeableChunkMemoryAllowance(mh, - &allowance); - _res = Py_BuildValue("ll", - _rv, - allowance); - return _res; -} - -static PyObject *Qt_MediaEmptyAllPurgeableChunks(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; -#ifndef MediaEmptyAllPurgeableChunks - PyMac_PRECHECK(MediaEmptyAllPurgeableChunks); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaEmptyAllPurgeableChunks(mh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSetHandlerCapabilities(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long flags; - long flagsMask; -#ifndef MediaSetHandlerCapabilities - PyMac_PRECHECK(MediaSetHandlerCapabilities); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mh, - &flags, - &flagsMask)) - return NULL; - _rv = MediaSetHandlerCapabilities(mh, - flags, - flagsMask); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaIdle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - TimeValue atMediaTime; - long flagsIn; - long flagsOut; - TimeRecord movieTime; -#ifndef MediaIdle - PyMac_PRECHECK(MediaIdle); -#endif - if (!PyArg_ParseTuple(_args, "O&llO&", - CmpInstObj_Convert, &mh, - &atMediaTime, - &flagsIn, - QtTimeRecord_Convert, &movieTime)) - return NULL; - _rv = MediaIdle(mh, - atMediaTime, - flagsIn, - &flagsOut, - &movieTime); - _res = Py_BuildValue("ll", - _rv, - flagsOut); - return _res; -} - -static PyObject *Qt_MediaGetMediaInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Handle h; -#ifndef MediaGetMediaInfo - PyMac_PRECHECK(MediaGetMediaInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - ResObj_Convert, &h)) - return NULL; - _rv = MediaGetMediaInfo(mh, - h); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaPutMediaInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Handle h; -#ifndef MediaPutMediaInfo - PyMac_PRECHECK(MediaPutMediaInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - ResObj_Convert, &h)) - return NULL; - _rv = MediaPutMediaInfo(mh, - h); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSetActive(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Boolean enableMedia; -#ifndef MediaSetActive - PyMac_PRECHECK(MediaSetActive); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - CmpInstObj_Convert, &mh, - &enableMedia)) - return NULL; - _rv = MediaSetActive(mh, - enableMedia); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSetRate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Fixed rate; -#ifndef MediaSetRate - PyMac_PRECHECK(MediaSetRate); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - PyMac_GetFixed, &rate)) - return NULL; - _rv = MediaSetRate(mh, - rate); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGGetStatus(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - ComponentResult statusErr; -#ifndef MediaGGetStatus - PyMac_PRECHECK(MediaGGetStatus); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGGetStatus(mh, - &statusErr); - _res = Py_BuildValue("ll", - _rv, - statusErr); - return _res; -} - -static PyObject *Qt_MediaTrackEdited(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; -#ifndef MediaTrackEdited - PyMac_PRECHECK(MediaTrackEdited); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaTrackEdited(mh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSetMediaTimeScale(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - TimeScale newTimeScale; -#ifndef MediaSetMediaTimeScale - PyMac_PRECHECK(MediaSetMediaTimeScale); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &newTimeScale)) - return NULL; - _rv = MediaSetMediaTimeScale(mh, - newTimeScale); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSetMovieTimeScale(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - TimeScale newTimeScale; -#ifndef MediaSetMovieTimeScale - PyMac_PRECHECK(MediaSetMovieTimeScale); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &newTimeScale)) - return NULL; - _rv = MediaSetMovieTimeScale(mh, - newTimeScale); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSetGWorld(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - CGrafPtr aPort; - GDHandle aGD; -#ifndef MediaSetGWorld - PyMac_PRECHECK(MediaSetGWorld); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &mh, - GrafObj_Convert, &aPort, - OptResObj_Convert, &aGD)) - return NULL; - _rv = MediaSetGWorld(mh, - aPort, - aGD); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSetDimensions(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Fixed width; - Fixed height; -#ifndef MediaSetDimensions - PyMac_PRECHECK(MediaSetDimensions); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &mh, - PyMac_GetFixed, &width, - PyMac_GetFixed, &height)) - return NULL; - _rv = MediaSetDimensions(mh, - width, - height); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSetClip(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - RgnHandle theClip; -#ifndef MediaSetClip - PyMac_PRECHECK(MediaSetClip); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - ResObj_Convert, &theClip)) - return NULL; - _rv = MediaSetClip(mh, - theClip); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetTrackOpaque(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Boolean trackIsOpaque; -#ifndef MediaGetTrackOpaque - PyMac_PRECHECK(MediaGetTrackOpaque); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetTrackOpaque(mh, - &trackIsOpaque); - _res = Py_BuildValue("lb", - _rv, - trackIsOpaque); - return _res; -} - -static PyObject *Qt_MediaSetGraphicsMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long mode; - RGBColor opColor; -#ifndef MediaSetGraphicsMode - PyMac_PRECHECK(MediaSetGraphicsMode); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - CmpInstObj_Convert, &mh, - &mode, - QdRGB_Convert, &opColor)) - return NULL; - _rv = MediaSetGraphicsMode(mh, - mode, - &opColor); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetGraphicsMode(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long mode; - RGBColor opColor; -#ifndef MediaGetGraphicsMode - PyMac_PRECHECK(MediaGetGraphicsMode); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetGraphicsMode(mh, - &mode, - &opColor); - _res = Py_BuildValue("llO&", - _rv, - mode, - QdRGB_New, &opColor); - return _res; -} - -static PyObject *Qt_MediaGSetVolume(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short volume; -#ifndef MediaGSetVolume - PyMac_PRECHECK(MediaGSetVolume); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &mh, - &volume)) - return NULL; - _rv = MediaGSetVolume(mh, - volume); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSetSoundBalance(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short balance; -#ifndef MediaSetSoundBalance - PyMac_PRECHECK(MediaSetSoundBalance); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &mh, - &balance)) - return NULL; - _rv = MediaSetSoundBalance(mh, - balance); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetSoundBalance(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short balance; -#ifndef MediaGetSoundBalance - PyMac_PRECHECK(MediaGetSoundBalance); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetSoundBalance(mh, - &balance); - _res = Py_BuildValue("lh", - _rv, - balance); - return _res; -} - -static PyObject *Qt_MediaGetNextBoundsChange(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - TimeValue when; -#ifndef MediaGetNextBoundsChange - PyMac_PRECHECK(MediaGetNextBoundsChange); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetNextBoundsChange(mh, - &when); - _res = Py_BuildValue("ll", - _rv, - when); - return _res; -} - -static PyObject *Qt_MediaGetSrcRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - RgnHandle rgn; - TimeValue atMediaTime; -#ifndef MediaGetSrcRgn - PyMac_PRECHECK(MediaGetSrcRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - CmpInstObj_Convert, &mh, - ResObj_Convert, &rgn, - &atMediaTime)) - return NULL; - _rv = MediaGetSrcRgn(mh, - rgn, - atMediaTime); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaPreroll(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - TimeValue time; - Fixed rate; -#ifndef MediaPreroll - PyMac_PRECHECK(MediaPreroll); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - CmpInstObj_Convert, &mh, - &time, - PyMac_GetFixed, &rate)) - return NULL; - _rv = MediaPreroll(mh, - time, - rate); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSampleDescriptionChanged(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long index; -#ifndef MediaSampleDescriptionChanged - PyMac_PRECHECK(MediaSampleDescriptionChanged); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &index)) - return NULL; - _rv = MediaSampleDescriptionChanged(mh, - index); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaHasCharacteristic(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - OSType characteristic; - Boolean hasIt; -#ifndef MediaHasCharacteristic - PyMac_PRECHECK(MediaHasCharacteristic); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - PyMac_GetOSType, &characteristic)) - return NULL; - _rv = MediaHasCharacteristic(mh, - characteristic, - &hasIt); - _res = Py_BuildValue("lb", - _rv, - hasIt); - return _res; -} - -static PyObject *Qt_MediaGetOffscreenBufferSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Rect bounds; - short depth; - CTabHandle ctab; -#ifndef MediaGetOffscreenBufferSize - PyMac_PRECHECK(MediaGetOffscreenBufferSize); -#endif - if (!PyArg_ParseTuple(_args, "O&hO&", - CmpInstObj_Convert, &mh, - &depth, - ResObj_Convert, &ctab)) - return NULL; - _rv = MediaGetOffscreenBufferSize(mh, - &bounds, - depth, - ctab); - _res = Py_BuildValue("lO&", - _rv, - PyMac_BuildRect, &bounds); - return _res; -} - -static PyObject *Qt_MediaSetHints(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long hints; -#ifndef MediaSetHints - PyMac_PRECHECK(MediaSetHints); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &hints)) - return NULL; - _rv = MediaSetHints(mh, - hints); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Str255 name; - long requestedLanguage; - long actualLanguage; -#ifndef MediaGetName - PyMac_PRECHECK(MediaGetName); -#endif - if (!PyArg_ParseTuple(_args, "O&O&l", - CmpInstObj_Convert, &mh, - PyMac_GetStr255, name, - &requestedLanguage)) - return NULL; - _rv = MediaGetName(mh, - name, - requestedLanguage, - &actualLanguage); - _res = Py_BuildValue("ll", - _rv, - actualLanguage); - return _res; -} - -static PyObject *Qt_MediaForceUpdate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long forceUpdateFlags; -#ifndef MediaForceUpdate - PyMac_PRECHECK(MediaForceUpdate); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &forceUpdateFlags)) - return NULL; - _rv = MediaForceUpdate(mh, - forceUpdateFlags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetDrawingRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - RgnHandle partialRgn; -#ifndef MediaGetDrawingRgn - PyMac_PRECHECK(MediaGetDrawingRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetDrawingRgn(mh, - &partialRgn); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, partialRgn); - return _res; -} - -static PyObject *Qt_MediaGSetActiveSegment(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - TimeValue activeStart; - TimeValue activeDuration; -#ifndef MediaGSetActiveSegment - PyMac_PRECHECK(MediaGSetActiveSegment); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mh, - &activeStart, - &activeDuration)) - return NULL; - _rv = MediaGSetActiveSegment(mh, - activeStart, - activeDuration); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaInvalidateRegion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - RgnHandle invalRgn; -#ifndef MediaInvalidateRegion - PyMac_PRECHECK(MediaInvalidateRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - ResObj_Convert, &invalRgn)) - return NULL; - _rv = MediaInvalidateRegion(mh, - invalRgn); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetNextStepTime(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short flags; - TimeValue mediaTimeIn; - TimeValue mediaTimeOut; - Fixed rate; -#ifndef MediaGetNextStepTime - PyMac_PRECHECK(MediaGetNextStepTime); -#endif - if (!PyArg_ParseTuple(_args, "O&hlO&", - CmpInstObj_Convert, &mh, - &flags, - &mediaTimeIn, - PyMac_GetFixed, &rate)) - return NULL; - _rv = MediaGetNextStepTime(mh, - flags, - mediaTimeIn, - &mediaTimeOut, - rate); - _res = Py_BuildValue("ll", - _rv, - mediaTimeOut); - return _res; -} - -static PyObject *Qt_MediaChangedNonPrimarySource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long inputIndex; -#ifndef MediaChangedNonPrimarySource - PyMac_PRECHECK(MediaChangedNonPrimarySource); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &inputIndex)) - return NULL; - _rv = MediaChangedNonPrimarySource(mh, - inputIndex); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaTrackReferencesChanged(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; -#ifndef MediaTrackReferencesChanged - PyMac_PRECHECK(MediaTrackReferencesChanged); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaTrackReferencesChanged(mh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaReleaseSampleDataPointer(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long sampleNum; -#ifndef MediaReleaseSampleDataPointer - PyMac_PRECHECK(MediaReleaseSampleDataPointer); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &sampleNum)) - return NULL; - _rv = MediaReleaseSampleDataPointer(mh, - sampleNum); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaTrackPropertyAtomChanged(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; -#ifndef MediaTrackPropertyAtomChanged - PyMac_PRECHECK(MediaTrackPropertyAtomChanged); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaTrackPropertyAtomChanged(mh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSetVideoParam(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long whichParam; - unsigned short value; -#ifndef MediaSetVideoParam - PyMac_PRECHECK(MediaSetVideoParam); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &whichParam)) - return NULL; - _rv = MediaSetVideoParam(mh, - whichParam, - &value); - _res = Py_BuildValue("lH", - _rv, - value); - return _res; -} - -static PyObject *Qt_MediaGetVideoParam(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long whichParam; - unsigned short value; -#ifndef MediaGetVideoParam - PyMac_PRECHECK(MediaGetVideoParam); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &whichParam)) - return NULL; - _rv = MediaGetVideoParam(mh, - whichParam, - &value); - _res = Py_BuildValue("lH", - _rv, - value); - return _res; -} - -static PyObject *Qt_MediaCompare(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Boolean isOK; - Media srcMedia; - ComponentInstance srcMediaComponent; -#ifndef MediaCompare - PyMac_PRECHECK(MediaCompare); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - CmpInstObj_Convert, &mh, - MediaObj_Convert, &srcMedia, - CmpInstObj_Convert, &srcMediaComponent)) - return NULL; - _rv = MediaCompare(mh, - &isOK, - srcMedia, - srcMediaComponent); - _res = Py_BuildValue("lb", - _rv, - isOK); - return _res; -} - -static PyObject *Qt_MediaGetClock(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - ComponentInstance clock; -#ifndef MediaGetClock - PyMac_PRECHECK(MediaGetClock); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetClock(mh, - &clock); - _res = Py_BuildValue("lO&", - _rv, - CmpInstObj_New, clock); - return _res; -} - -static PyObject *Qt_MediaSetSoundOutputComponent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Component outputComponent; -#ifndef MediaSetSoundOutputComponent - PyMac_PRECHECK(MediaSetSoundOutputComponent); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - CmpObj_Convert, &outputComponent)) - return NULL; - _rv = MediaSetSoundOutputComponent(mh, - outputComponent); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetSoundOutputComponent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Component outputComponent; -#ifndef MediaGetSoundOutputComponent - PyMac_PRECHECK(MediaGetSoundOutputComponent); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetSoundOutputComponent(mh, - &outputComponent); - _res = Py_BuildValue("lO&", - _rv, - CmpObj_New, outputComponent); - return _res; -} - -static PyObject *Qt_MediaSetSoundLocalizationData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Handle data; -#ifndef MediaSetSoundLocalizationData - PyMac_PRECHECK(MediaSetSoundLocalizationData); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - ResObj_Convert, &data)) - return NULL; - _rv = MediaSetSoundLocalizationData(mh, - data); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetInvalidRegion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - RgnHandle rgn; -#ifndef MediaGetInvalidRegion - PyMac_PRECHECK(MediaGetInvalidRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - ResObj_Convert, &rgn)) - return NULL; - _rv = MediaGetInvalidRegion(mh, - rgn); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSampleDescriptionB2N(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - SampleDescriptionHandle sampleDescriptionH; -#ifndef MediaSampleDescriptionB2N - PyMac_PRECHECK(MediaSampleDescriptionB2N); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - ResObj_Convert, &sampleDescriptionH)) - return NULL; - _rv = MediaSampleDescriptionB2N(mh, - sampleDescriptionH); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSampleDescriptionN2B(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - SampleDescriptionHandle sampleDescriptionH; -#ifndef MediaSampleDescriptionN2B - PyMac_PRECHECK(MediaSampleDescriptionN2B); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - ResObj_Convert, &sampleDescriptionH)) - return NULL; - _rv = MediaSampleDescriptionN2B(mh, - sampleDescriptionH); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaFlushNonPrimarySourceData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long inputIndex; -#ifndef MediaFlushNonPrimarySourceData - PyMac_PRECHECK(MediaFlushNonPrimarySourceData); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &inputIndex)) - return NULL; - _rv = MediaFlushNonPrimarySourceData(mh, - inputIndex); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetURLLink(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Point displayWhere; - Handle urlLink; -#ifndef MediaGetURLLink - PyMac_PRECHECK(MediaGetURLLink); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - PyMac_GetPoint, &displayWhere)) - return NULL; - _rv = MediaGetURLLink(mh, - displayWhere, - &urlLink); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, urlLink); - return _res; -} - -static PyObject *Qt_MediaHitTestForTargetRefCon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long flags; - Point loc; - long targetRefCon; -#ifndef MediaHitTestForTargetRefCon - PyMac_PRECHECK(MediaHitTestForTargetRefCon); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - CmpInstObj_Convert, &mh, - &flags, - PyMac_GetPoint, &loc)) - return NULL; - _rv = MediaHitTestForTargetRefCon(mh, - flags, - loc, - &targetRefCon); - _res = Py_BuildValue("ll", - _rv, - targetRefCon); - return _res; -} - -static PyObject *Qt_MediaHitTestTargetRefCon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long targetRefCon; - long flags; - Point loc; - Boolean wasHit; -#ifndef MediaHitTestTargetRefCon - PyMac_PRECHECK(MediaHitTestTargetRefCon); -#endif - if (!PyArg_ParseTuple(_args, "O&llO&", - CmpInstObj_Convert, &mh, - &targetRefCon, - &flags, - PyMac_GetPoint, &loc)) - return NULL; - _rv = MediaHitTestTargetRefCon(mh, - targetRefCon, - flags, - loc, - &wasHit); - _res = Py_BuildValue("lb", - _rv, - wasHit); - return _res; -} - -static PyObject *Qt_MediaDisposeTargetRefCon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long targetRefCon; -#ifndef MediaDisposeTargetRefCon - PyMac_PRECHECK(MediaDisposeTargetRefCon); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &targetRefCon)) - return NULL; - _rv = MediaDisposeTargetRefCon(mh, - targetRefCon); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaTargetRefConsEqual(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long firstRefCon; - long secondRefCon; - Boolean equal; -#ifndef MediaTargetRefConsEqual - PyMac_PRECHECK(MediaTargetRefConsEqual); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mh, - &firstRefCon, - &secondRefCon)) - return NULL; - _rv = MediaTargetRefConsEqual(mh, - firstRefCon, - secondRefCon, - &equal); - _res = Py_BuildValue("lb", - _rv, - equal); - return _res; -} - -static PyObject *Qt_MediaPrePrerollCancel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - void * refcon; -#ifndef MediaPrePrerollCancel - PyMac_PRECHECK(MediaPrePrerollCancel); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &mh, - &refcon)) - return NULL; - _rv = MediaPrePrerollCancel(mh, - refcon); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaEnterEmptyEdit(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; -#ifndef MediaEnterEmptyEdit - PyMac_PRECHECK(MediaEnterEmptyEdit); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaEnterEmptyEdit(mh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaCurrentMediaQueuedData(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long milliSecs; -#ifndef MediaCurrentMediaQueuedData - PyMac_PRECHECK(MediaCurrentMediaQueuedData); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaCurrentMediaQueuedData(mh, - &milliSecs); - _res = Py_BuildValue("ll", - _rv, - milliSecs); - return _res; -} - -static PyObject *Qt_MediaGetEffectiveVolume(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short volume; -#ifndef MediaGetEffectiveVolume - PyMac_PRECHECK(MediaGetEffectiveVolume); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetEffectiveVolume(mh, - &volume); - _res = Py_BuildValue("lh", - _rv, - volume); - return _res; -} - -static PyObject *Qt_MediaGetSoundLevelMeteringEnabled(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Boolean enabled; -#ifndef MediaGetSoundLevelMeteringEnabled - PyMac_PRECHECK(MediaGetSoundLevelMeteringEnabled); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetSoundLevelMeteringEnabled(mh, - &enabled); - _res = Py_BuildValue("lb", - _rv, - enabled); - return _res; -} - -static PyObject *Qt_MediaSetSoundLevelMeteringEnabled(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Boolean enable; -#ifndef MediaSetSoundLevelMeteringEnabled - PyMac_PRECHECK(MediaSetSoundLevelMeteringEnabled); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - CmpInstObj_Convert, &mh, - &enable)) - return NULL; - _rv = MediaSetSoundLevelMeteringEnabled(mh, - enable); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetEffectiveSoundBalance(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short balance; -#ifndef MediaGetEffectiveSoundBalance - PyMac_PRECHECK(MediaGetEffectiveSoundBalance); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetEffectiveSoundBalance(mh, - &balance); - _res = Py_BuildValue("lh", - _rv, - balance); - return _res; -} - -static PyObject *Qt_MediaSetScreenLock(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - Boolean lockIt; -#ifndef MediaSetScreenLock - PyMac_PRECHECK(MediaSetScreenLock); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - CmpInstObj_Convert, &mh, - &lockIt)) - return NULL; - _rv = MediaSetScreenLock(mh, - lockIt); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetErrorString(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - ComponentResult theError; - Str255 errorString; -#ifndef MediaGetErrorString - PyMac_PRECHECK(MediaGetErrorString); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - CmpInstObj_Convert, &mh, - &theError, - PyMac_GetStr255, errorString)) - return NULL; - _rv = MediaGetErrorString(mh, - theError, - errorString); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetSoundEqualizerBandLevels(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - UInt8 bandLevels; -#ifndef MediaGetSoundEqualizerBandLevels - PyMac_PRECHECK(MediaGetSoundEqualizerBandLevels); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetSoundEqualizerBandLevels(mh, - &bandLevels); - _res = Py_BuildValue("lb", - _rv, - bandLevels); - return _res; -} - -static PyObject *Qt_MediaDoIdleActions(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; -#ifndef MediaDoIdleActions - PyMac_PRECHECK(MediaDoIdleActions); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaDoIdleActions(mh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaSetSoundBassAndTreble(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short bass; - short treble; -#ifndef MediaSetSoundBassAndTreble - PyMac_PRECHECK(MediaSetSoundBassAndTreble); -#endif - if (!PyArg_ParseTuple(_args, "O&hh", - CmpInstObj_Convert, &mh, - &bass, - &treble)) - return NULL; - _rv = MediaSetSoundBassAndTreble(mh, - bass, - treble); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetSoundBassAndTreble(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - short bass; - short treble; -#ifndef MediaGetSoundBassAndTreble - PyMac_PRECHECK(MediaGetSoundBassAndTreble); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetSoundBassAndTreble(mh, - &bass, - &treble); - _res = Py_BuildValue("lhh", - _rv, - bass, - treble); - return _res; -} - -static PyObject *Qt_MediaTimeBaseChanged(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; -#ifndef MediaTimeBaseChanged - PyMac_PRECHECK(MediaTimeBaseChanged); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaTimeBaseChanged(mh); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaMCIsPlayerEvent(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - EventRecord e; - Boolean handledIt; -#ifndef MediaMCIsPlayerEvent - PyMac_PRECHECK(MediaMCIsPlayerEvent); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - PyMac_GetEventRecord, &e)) - return NULL; - _rv = MediaMCIsPlayerEvent(mh, - &e, - &handledIt); - _res = Py_BuildValue("lb", - _rv, - handledIt); - return _res; -} - -static PyObject *Qt_MediaGetMediaLoadState(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long mediaLoadState; -#ifndef MediaGetMediaLoadState - PyMac_PRECHECK(MediaGetMediaLoadState); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGetMediaLoadState(mh, - &mediaLoadState); - _res = Py_BuildValue("ll", - _rv, - mediaLoadState); - return _res; -} - -static PyObject *Qt_MediaVideoOutputChanged(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - ComponentInstance vout; -#ifndef MediaVideoOutputChanged - PyMac_PRECHECK(MediaVideoOutputChanged); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - CmpInstObj_Convert, &vout)) - return NULL; - _rv = MediaVideoOutputChanged(mh, - vout); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaEmptySampleCache(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long sampleNum; - long sampleCount; -#ifndef MediaEmptySampleCache - PyMac_PRECHECK(MediaEmptySampleCache); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mh, - &sampleNum, - &sampleCount)) - return NULL; - _rv = MediaEmptySampleCache(mh, - sampleNum, - sampleCount); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaGetPublicInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - OSType infoSelector; - void * infoDataPtr; - Size ioDataSize; -#ifndef MediaGetPublicInfo - PyMac_PRECHECK(MediaGetPublicInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&O&s", - CmpInstObj_Convert, &mh, - PyMac_GetOSType, &infoSelector, - &infoDataPtr)) - return NULL; - _rv = MediaGetPublicInfo(mh, - infoSelector, - infoDataPtr, - &ioDataSize); - _res = Py_BuildValue("ll", - _rv, - ioDataSize); - return _res; -} - -static PyObject *Qt_MediaSetPublicInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - OSType infoSelector; - void * infoDataPtr; - Size dataSize; -#ifndef MediaSetPublicInfo - PyMac_PRECHECK(MediaSetPublicInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&O&sl", - CmpInstObj_Convert, &mh, - PyMac_GetOSType, &infoSelector, - &infoDataPtr, - &dataSize)) - return NULL; - _rv = MediaSetPublicInfo(mh, - infoSelector, - infoDataPtr, - dataSize); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaRefConSetProperty(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long refCon; - long propertyType; - void * propertyValue; -#ifndef MediaRefConSetProperty - PyMac_PRECHECK(MediaRefConSetProperty); -#endif - if (!PyArg_ParseTuple(_args, "O&lls", - CmpInstObj_Convert, &mh, - &refCon, - &propertyType, - &propertyValue)) - return NULL; - _rv = MediaRefConSetProperty(mh, - refCon, - propertyType, - propertyValue); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaRefConGetProperty(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long refCon; - long propertyType; - void * propertyValue; -#ifndef MediaRefConGetProperty - PyMac_PRECHECK(MediaRefConGetProperty); -#endif - if (!PyArg_ParseTuple(_args, "O&lls", - CmpInstObj_Convert, &mh, - &refCon, - &propertyType, - &propertyValue)) - return NULL; - _rv = MediaRefConGetProperty(mh, - refCon, - propertyType, - propertyValue); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MediaNavigateTargetRefCon(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - long navigation; - long refCon; -#ifndef MediaNavigateTargetRefCon - PyMac_PRECHECK(MediaNavigateTargetRefCon); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mh, - &navigation)) - return NULL; - _rv = MediaNavigateTargetRefCon(mh, - navigation, - &refCon); - _res = Py_BuildValue("ll", - _rv, - refCon); - return _res; -} - -static PyObject *Qt_MediaGGetIdleManager(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - IdleManager pim; -#ifndef MediaGGetIdleManager - PyMac_PRECHECK(MediaGGetIdleManager); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mh)) - return NULL; - _rv = MediaGGetIdleManager(mh, - &pim); - _res = Py_BuildValue("lO&", - _rv, - IdleManagerObj_New, pim); - return _res; -} - -static PyObject *Qt_MediaGSetIdleManager(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MediaHandler mh; - IdleManager im; -#ifndef MediaGSetIdleManager - PyMac_PRECHECK(MediaGSetIdleManager); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mh, - IdleManagerObj_Convert, &im)) - return NULL; - _rv = MediaGSetIdleManager(mh, - im); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_QTMIDIGetMIDIPorts(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTMIDIComponent ci; - QTMIDIPortListHandle inputPorts; - QTMIDIPortListHandle outputPorts; -#ifndef QTMIDIGetMIDIPorts - PyMac_PRECHECK(QTMIDIGetMIDIPorts); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &ci)) - return NULL; - _rv = QTMIDIGetMIDIPorts(ci, - &inputPorts, - &outputPorts); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, inputPorts, - ResObj_New, outputPorts); - return _res; -} - -static PyObject *Qt_QTMIDIUseSendPort(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTMIDIComponent ci; - long portIndex; - long inUse; -#ifndef QTMIDIUseSendPort - PyMac_PRECHECK(QTMIDIUseSendPort); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &ci, - &portIndex, - &inUse)) - return NULL; - _rv = QTMIDIUseSendPort(ci, - portIndex, - inUse); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_QTMIDISendMIDI(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - QTMIDIComponent ci; - long portIndex; - MusicMIDIPacket mp; -#ifndef QTMIDISendMIDI - PyMac_PRECHECK(QTMIDISendMIDI); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - CmpInstObj_Convert, &ci, - &portIndex, - QtMusicMIDIPacket_Convert, &mp)) - return NULL; - _rv = QTMIDISendMIDI(ci, - portIndex, - &mp); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicGetPart(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - long midiChannel; - long polyphony; -#ifndef MusicGetPart - PyMac_PRECHECK(MusicGetPart); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mc, - &part)) - return NULL; - _rv = MusicGetPart(mc, - part, - &midiChannel, - &polyphony); - _res = Py_BuildValue("lll", - _rv, - midiChannel, - polyphony); - return _res; -} - -static PyObject *Qt_MusicSetPart(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - long midiChannel; - long polyphony; -#ifndef MusicSetPart - PyMac_PRECHECK(MusicSetPart); -#endif - if (!PyArg_ParseTuple(_args, "O&lll", - CmpInstObj_Convert, &mc, - &part, - &midiChannel, - &polyphony)) - return NULL; - _rv = MusicSetPart(mc, - part, - midiChannel, - polyphony); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicSetPartInstrumentNumber(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - long instrumentNumber; -#ifndef MusicSetPartInstrumentNumber - PyMac_PRECHECK(MusicSetPartInstrumentNumber); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mc, - &part, - &instrumentNumber)) - return NULL; - _rv = MusicSetPartInstrumentNumber(mc, - part, - instrumentNumber); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicGetPartInstrumentNumber(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; -#ifndef MusicGetPartInstrumentNumber - PyMac_PRECHECK(MusicGetPartInstrumentNumber); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mc, - &part)) - return NULL; - _rv = MusicGetPartInstrumentNumber(mc, - part); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicStorePartInstrument(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - long instrumentNumber; -#ifndef MusicStorePartInstrument - PyMac_PRECHECK(MusicStorePartInstrument); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mc, - &part, - &instrumentNumber)) - return NULL; - _rv = MusicStorePartInstrument(mc, - part, - instrumentNumber); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicGetPartAtomicInstrument(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - AtomicInstrument ai; - long flags; -#ifndef MusicGetPartAtomicInstrument - PyMac_PRECHECK(MusicGetPartAtomicInstrument); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mc, - &part, - &flags)) - return NULL; - _rv = MusicGetPartAtomicInstrument(mc, - part, - &ai, - flags); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, ai); - return _res; -} - -static PyObject *Qt_MusicSetPartAtomicInstrument(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - AtomicInstrumentPtr aiP; - long flags; -#ifndef MusicSetPartAtomicInstrument - PyMac_PRECHECK(MusicSetPartAtomicInstrument); -#endif - if (!PyArg_ParseTuple(_args, "O&lsl", - CmpInstObj_Convert, &mc, - &part, - &aiP, - &flags)) - return NULL; - _rv = MusicSetPartAtomicInstrument(mc, - part, - aiP, - flags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicGetPartKnob(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - long knobID; -#ifndef MusicGetPartKnob - PyMac_PRECHECK(MusicGetPartKnob); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mc, - &part, - &knobID)) - return NULL; - _rv = MusicGetPartKnob(mc, - part, - knobID); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicSetPartKnob(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - long knobID; - long knobValue; -#ifndef MusicSetPartKnob - PyMac_PRECHECK(MusicSetPartKnob); -#endif - if (!PyArg_ParseTuple(_args, "O&lll", - CmpInstObj_Convert, &mc, - &part, - &knobID, - &knobValue)) - return NULL; - _rv = MusicSetPartKnob(mc, - part, - knobID, - knobValue); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicGetKnob(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long knobID; -#ifndef MusicGetKnob - PyMac_PRECHECK(MusicGetKnob); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mc, - &knobID)) - return NULL; - _rv = MusicGetKnob(mc, - knobID); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicSetKnob(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long knobID; - long knobValue; -#ifndef MusicSetKnob - PyMac_PRECHECK(MusicSetKnob); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mc, - &knobID, - &knobValue)) - return NULL; - _rv = MusicSetKnob(mc, - knobID, - knobValue); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicGetPartName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - StringPtr name; -#ifndef MusicGetPartName - PyMac_PRECHECK(MusicGetPartName); -#endif - if (!PyArg_ParseTuple(_args, "O&ls", - CmpInstObj_Convert, &mc, - &part, - &name)) - return NULL; - _rv = MusicGetPartName(mc, - part, - name); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicSetPartName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - StringPtr name; -#ifndef MusicSetPartName - PyMac_PRECHECK(MusicSetPartName); -#endif - if (!PyArg_ParseTuple(_args, "O&ls", - CmpInstObj_Convert, &mc, - &part, - &name)) - return NULL; - _rv = MusicSetPartName(mc, - part, - name); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicPlayNote(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - long pitch; - long velocity; -#ifndef MusicPlayNote - PyMac_PRECHECK(MusicPlayNote); -#endif - if (!PyArg_ParseTuple(_args, "O&lll", - CmpInstObj_Convert, &mc, - &part, - &pitch, - &velocity)) - return NULL; - _rv = MusicPlayNote(mc, - part, - pitch, - velocity); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicResetPart(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; -#ifndef MusicResetPart - PyMac_PRECHECK(MusicResetPart); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mc, - &part)) - return NULL; - _rv = MusicResetPart(mc, - part); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicSetPartController(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - MusicController controllerNumber; - long controllerValue; -#ifndef MusicSetPartController - PyMac_PRECHECK(MusicSetPartController); -#endif - if (!PyArg_ParseTuple(_args, "O&lll", - CmpInstObj_Convert, &mc, - &part, - &controllerNumber, - &controllerValue)) - return NULL; - _rv = MusicSetPartController(mc, - part, - controllerNumber, - controllerValue); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicGetPartController(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - MusicController controllerNumber; -#ifndef MusicGetPartController - PyMac_PRECHECK(MusicGetPartController); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mc, - &part, - &controllerNumber)) - return NULL; - _rv = MusicGetPartController(mc, - part, - controllerNumber); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicGetInstrumentNames(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long modifiableInstruments; - Handle instrumentNames; - Handle instrumentCategoryLasts; - Handle instrumentCategoryNames; -#ifndef MusicGetInstrumentNames - PyMac_PRECHECK(MusicGetInstrumentNames); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mc, - &modifiableInstruments)) - return NULL; - _rv = MusicGetInstrumentNames(mc, - modifiableInstruments, - &instrumentNames, - &instrumentCategoryLasts, - &instrumentCategoryNames); - _res = Py_BuildValue("lO&O&O&", - _rv, - ResObj_New, instrumentNames, - ResObj_New, instrumentCategoryLasts, - ResObj_New, instrumentCategoryNames); - return _res; -} - -static PyObject *Qt_MusicGetDrumNames(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long modifiableInstruments; - Handle instrumentNumbers; - Handle instrumentNames; -#ifndef MusicGetDrumNames - PyMac_PRECHECK(MusicGetDrumNames); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mc, - &modifiableInstruments)) - return NULL; - _rv = MusicGetDrumNames(mc, - modifiableInstruments, - &instrumentNumbers, - &instrumentNames); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, instrumentNumbers, - ResObj_New, instrumentNames); - return _res; -} - -static PyObject *Qt_MusicGetMasterTune(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; -#ifndef MusicGetMasterTune - PyMac_PRECHECK(MusicGetMasterTune); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mc)) - return NULL; - _rv = MusicGetMasterTune(mc); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicSetMasterTune(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long masterTune; -#ifndef MusicSetMasterTune - PyMac_PRECHECK(MusicSetMasterTune); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mc, - &masterTune)) - return NULL; - _rv = MusicSetMasterTune(mc, - masterTune); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicGetDeviceConnection(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long index; - long id1; - long id2; -#ifndef MusicGetDeviceConnection - PyMac_PRECHECK(MusicGetDeviceConnection); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mc, - &index)) - return NULL; - _rv = MusicGetDeviceConnection(mc, - index, - &id1, - &id2); - _res = Py_BuildValue("lll", - _rv, - id1, - id2); - return _res; -} - -static PyObject *Qt_MusicUseDeviceConnection(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long id1; - long id2; -#ifndef MusicUseDeviceConnection - PyMac_PRECHECK(MusicUseDeviceConnection); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mc, - &id1, - &id2)) - return NULL; - _rv = MusicUseDeviceConnection(mc, - id1, - id2); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicGetKnobSettingStrings(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long knobIndex; - long isGlobal; - Handle settingsNames; - Handle settingsCategoryLasts; - Handle settingsCategoryNames; -#ifndef MusicGetKnobSettingStrings - PyMac_PRECHECK(MusicGetKnobSettingStrings); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mc, - &knobIndex, - &isGlobal)) - return NULL; - _rv = MusicGetKnobSettingStrings(mc, - knobIndex, - isGlobal, - &settingsNames, - &settingsCategoryLasts, - &settingsCategoryNames); - _res = Py_BuildValue("lO&O&O&", - _rv, - ResObj_New, settingsNames, - ResObj_New, settingsCategoryLasts, - ResObj_New, settingsCategoryNames); - return _res; -} - -static PyObject *Qt_MusicGetMIDIPorts(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long inputPortCount; - long outputPortCount; -#ifndef MusicGetMIDIPorts - PyMac_PRECHECK(MusicGetMIDIPorts); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mc)) - return NULL; - _rv = MusicGetMIDIPorts(mc, - &inputPortCount, - &outputPortCount); - _res = Py_BuildValue("lll", - _rv, - inputPortCount, - outputPortCount); - return _res; -} - -static PyObject *Qt_MusicSendMIDI(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long portIndex; - MusicMIDIPacket mp; -#ifndef MusicSendMIDI - PyMac_PRECHECK(MusicSendMIDI); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - CmpInstObj_Convert, &mc, - &portIndex, - QtMusicMIDIPacket_Convert, &mp)) - return NULL; - _rv = MusicSendMIDI(mc, - portIndex, - &mp); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicSetOfflineTimeTo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long newTimeStamp; -#ifndef MusicSetOfflineTimeTo - PyMac_PRECHECK(MusicSetOfflineTimeTo); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mc, - &newTimeStamp)) - return NULL; - _rv = MusicSetOfflineTimeTo(mc, - newTimeStamp); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicGetInfoText(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long selector; - Handle textH; - Handle styleH; -#ifndef MusicGetInfoText - PyMac_PRECHECK(MusicGetInfoText); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mc, - &selector)) - return NULL; - _rv = MusicGetInfoText(mc, - selector, - &textH, - &styleH); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, textH, - ResObj_New, styleH); - return _res; -} - -static PyObject *Qt_MusicGetInstrumentInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long getInstrumentInfoFlags; - InstrumentInfoListHandle infoListH; -#ifndef MusicGetInstrumentInfo - PyMac_PRECHECK(MusicGetInstrumentInfo); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mc, - &getInstrumentInfoFlags)) - return NULL; - _rv = MusicGetInstrumentInfo(mc, - getInstrumentInfoFlags, - &infoListH); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, infoListH); - return _res; -} - -static PyObject *Qt_MusicTask(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; -#ifndef MusicTask - PyMac_PRECHECK(MusicTask); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mc)) - return NULL; - _rv = MusicTask(mc); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicSetPartInstrumentNumberInterruptSafe(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - long instrumentNumber; -#ifndef MusicSetPartInstrumentNumberInterruptSafe - PyMac_PRECHECK(MusicSetPartInstrumentNumberInterruptSafe); -#endif - if (!PyArg_ParseTuple(_args, "O&ll", - CmpInstObj_Convert, &mc, - &part, - &instrumentNumber)) - return NULL; - _rv = MusicSetPartInstrumentNumberInterruptSafe(mc, - part, - instrumentNumber); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicSetPartSoundLocalization(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long part; - Handle data; -#ifndef MusicSetPartSoundLocalization - PyMac_PRECHECK(MusicSetPartSoundLocalization); -#endif - if (!PyArg_ParseTuple(_args, "O&lO&", - CmpInstObj_Convert, &mc, - &part, - ResObj_Convert, &data)) - return NULL; - _rv = MusicSetPartSoundLocalization(mc, - part, - data); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicGenericConfigure(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long mode; - long flags; - long baseResID; -#ifndef MusicGenericConfigure - PyMac_PRECHECK(MusicGenericConfigure); -#endif - if (!PyArg_ParseTuple(_args, "O&lll", - CmpInstObj_Convert, &mc, - &mode, - &flags, - &baseResID)) - return NULL; - _rv = MusicGenericConfigure(mc, - mode, - flags, - baseResID); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicGenericGetKnobList(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - long knobType; - GenericKnobDescriptionListHandle gkdlH; -#ifndef MusicGenericGetKnobList - PyMac_PRECHECK(MusicGenericGetKnobList); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &mc, - &knobType)) - return NULL; - _rv = MusicGenericGetKnobList(mc, - knobType, - &gkdlH); - _res = Py_BuildValue("lO&", - _rv, - ResObj_New, gkdlH); - return _res; -} - -static PyObject *Qt_MusicGenericSetResourceNumbers(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - Handle resourceIDH; -#ifndef MusicGenericSetResourceNumbers - PyMac_PRECHECK(MusicGenericSetResourceNumbers); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mc, - ResObj_Convert, &resourceIDH)) - return NULL; - _rv = MusicGenericSetResourceNumbers(mc, - resourceIDH); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicDerivedMIDISend(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - MusicMIDIPacket packet; -#ifndef MusicDerivedMIDISend - PyMac_PRECHECK(MusicDerivedMIDISend); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &mc, - QtMusicMIDIPacket_Convert, &packet)) - return NULL; - _rv = MusicDerivedMIDISend(mc, - &packet); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicDerivedOpenResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; -#ifndef MusicDerivedOpenResFile - PyMac_PRECHECK(MusicDerivedOpenResFile); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &mc)) - return NULL; - _rv = MusicDerivedOpenResFile(mc); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_MusicDerivedCloseResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - MusicComponent mc; - short resRefNum; -#ifndef MusicDerivedCloseResFile - PyMac_PRECHECK(MusicDerivedCloseResFile); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - CmpInstObj_Convert, &mc, - &resRefNum)) - return NULL; - _rv = MusicDerivedCloseResFile(mc, - resRefNum); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_NAUnregisterMusicDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - NoteAllocator na; - long index; -#ifndef NAUnregisterMusicDevice - PyMac_PRECHECK(NAUnregisterMusicDevice); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &na, - &index)) - return NULL; - _rv = NAUnregisterMusicDevice(na, - index); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_NASaveMusicConfiguration(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - NoteAllocator na; -#ifndef NASaveMusicConfiguration - PyMac_PRECHECK(NASaveMusicConfiguration); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &na)) - return NULL; - _rv = NASaveMusicConfiguration(na); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_NAGetMIDIPorts(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - NoteAllocator na; - QTMIDIPortListHandle inputPorts; - QTMIDIPortListHandle outputPorts; -#ifndef NAGetMIDIPorts - PyMac_PRECHECK(NAGetMIDIPorts); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &na)) - return NULL; - _rv = NAGetMIDIPorts(na, - &inputPorts, - &outputPorts); - _res = Py_BuildValue("lO&O&", - _rv, - ResObj_New, inputPorts, - ResObj_New, outputPorts); - return _res; -} - -static PyObject *Qt_NATask(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - NoteAllocator na; -#ifndef NATask - PyMac_PRECHECK(NATask); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &na)) - return NULL; - _rv = NATask(na); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneSetHeader(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - unsigned long * header; -#ifndef TuneSetHeader - PyMac_PRECHECK(TuneSetHeader); -#endif - if (!PyArg_ParseTuple(_args, "O&s", - CmpInstObj_Convert, &tp, - &header)) - return NULL; - _rv = TuneSetHeader(tp, - header); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneGetTimeBase(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - TimeBase tb; -#ifndef TuneGetTimeBase - PyMac_PRECHECK(TuneGetTimeBase); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &tp)) - return NULL; - _rv = TuneGetTimeBase(tp, - &tb); - _res = Py_BuildValue("lO&", - _rv, - TimeBaseObj_New, tb); - return _res; -} - -static PyObject *Qt_TuneSetTimeScale(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - TimeScale scale; -#ifndef TuneSetTimeScale - PyMac_PRECHECK(TuneSetTimeScale); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &tp, - &scale)) - return NULL; - _rv = TuneSetTimeScale(tp, - scale); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneGetTimeScale(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - TimeScale scale; -#ifndef TuneGetTimeScale - PyMac_PRECHECK(TuneGetTimeScale); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &tp)) - return NULL; - _rv = TuneGetTimeScale(tp, - &scale); - _res = Py_BuildValue("ll", - _rv, - scale); - return _res; -} - -static PyObject *Qt_TuneInstant(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - unsigned long tune; - unsigned long tunePosition; -#ifndef TuneInstant - PyMac_PRECHECK(TuneInstant); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &tp, - &tunePosition)) - return NULL; - _rv = TuneInstant(tp, - &tune, - tunePosition); - _res = Py_BuildValue("ll", - _rv, - tune); - return _res; -} - -static PyObject *Qt_TuneStop(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - long stopFlags; -#ifndef TuneStop - PyMac_PRECHECK(TuneStop); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &tp, - &stopFlags)) - return NULL; - _rv = TuneStop(tp, - stopFlags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneSetVolume(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - Fixed volume; -#ifndef TuneSetVolume - PyMac_PRECHECK(TuneSetVolume); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &tp, - PyMac_GetFixed, &volume)) - return NULL; - _rv = TuneSetVolume(tp, - volume); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneGetVolume(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; -#ifndef TuneGetVolume - PyMac_PRECHECK(TuneGetVolume); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &tp)) - return NULL; - _rv = TuneGetVolume(tp); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TunePreroll(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; -#ifndef TunePreroll - PyMac_PRECHECK(TunePreroll); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &tp)) - return NULL; - _rv = TunePreroll(tp); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneUnroll(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; -#ifndef TuneUnroll - PyMac_PRECHECK(TuneUnroll); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &tp)) - return NULL; - _rv = TuneUnroll(tp); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneSetPartTranspose(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - unsigned long part; - long transpose; - long velocityShift; -#ifndef TuneSetPartTranspose - PyMac_PRECHECK(TuneSetPartTranspose); -#endif - if (!PyArg_ParseTuple(_args, "O&lll", - CmpInstObj_Convert, &tp, - &part, - &transpose, - &velocityShift)) - return NULL; - _rv = TuneSetPartTranspose(tp, - part, - transpose, - velocityShift); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneGetNoteAllocator(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - NoteAllocator _rv; - TunePlayer tp; -#ifndef TuneGetNoteAllocator - PyMac_PRECHECK(TuneGetNoteAllocator); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &tp)) - return NULL; - _rv = TuneGetNoteAllocator(tp); - _res = Py_BuildValue("O&", - CmpInstObj_New, _rv); - return _res; -} - -static PyObject *Qt_TuneSetSofter(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - long softer; -#ifndef TuneSetSofter - PyMac_PRECHECK(TuneSetSofter); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &tp, - &softer)) - return NULL; - _rv = TuneSetSofter(tp, - softer); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneTask(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; -#ifndef TuneTask - PyMac_PRECHECK(TuneTask); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CmpInstObj_Convert, &tp)) - return NULL; - _rv = TuneTask(tp); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneSetBalance(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - long balance; -#ifndef TuneSetBalance - PyMac_PRECHECK(TuneSetBalance); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &tp, - &balance)) - return NULL; - _rv = TuneSetBalance(tp, - balance); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneSetSoundLocalization(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - Handle data; -#ifndef TuneSetSoundLocalization - PyMac_PRECHECK(TuneSetSoundLocalization); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - CmpInstObj_Convert, &tp, - ResObj_Convert, &data)) - return NULL; - _rv = TuneSetSoundLocalization(tp, - data); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneSetHeaderWithSize(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - unsigned long * header; - unsigned long size; -#ifndef TuneSetHeaderWithSize - PyMac_PRECHECK(TuneSetHeaderWithSize); -#endif - if (!PyArg_ParseTuple(_args, "O&sl", - CmpInstObj_Convert, &tp, - &header, - &size)) - return NULL; - _rv = TuneSetHeaderWithSize(tp, - header, - size); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneSetPartMix(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - unsigned long partNumber; - long volume; - long balance; - long mixFlags; -#ifndef TuneSetPartMix - PyMac_PRECHECK(TuneSetPartMix); -#endif - if (!PyArg_ParseTuple(_args, "O&llll", - CmpInstObj_Convert, &tp, - &partNumber, - &volume, - &balance, - &mixFlags)) - return NULL; - _rv = TuneSetPartMix(tp, - partNumber, - volume, - balance, - mixFlags); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Qt_TuneGetPartMix(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ComponentResult _rv; - TunePlayer tp; - unsigned long partNumber; - long volumeOut; - long balanceOut; - long mixFlagsOut; -#ifndef TuneGetPartMix - PyMac_PRECHECK(TuneGetPartMix); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - CmpInstObj_Convert, &tp, - &partNumber)) - return NULL; - _rv = TuneGetPartMix(tp, - partNumber, - &volumeOut, - &balanceOut, - &mixFlagsOut); - _res = Py_BuildValue("llll", - _rv, - volumeOut, - balanceOut, - mixFlagsOut); - return _res; -} - -static PyObject *Qt_AlignWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr wp; - Boolean front; -#ifndef AlignWindow - PyMac_PRECHECK(AlignWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - WinObj_Convert, &wp, - &front)) - return NULL; - AlignWindow(wp, - front, - (Rect *)0, - (ICMAlignmentProcRecordPtr)0); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_DragAlignedWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr wp; - Point startPt; - Rect boundsRect; -#ifndef DragAlignedWindow - PyMac_PRECHECK(DragAlignedWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - WinObj_Convert, &wp, - PyMac_GetPoint, &startPt, - PyMac_GetRect, &boundsRect)) - return NULL; - DragAlignedWindow(wp, - startPt, - &boundsRect, - (Rect *)0, - (ICMAlignmentProcRecordPtr)0); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Qt_MoviesTask(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long maxMilliSecToUse; -#ifndef MoviesTask - PyMac_PRECHECK(MoviesTask); -#endif - if (!PyArg_ParseTuple(_args, "l", - &maxMilliSecToUse)) - return NULL; - MoviesTask((Movie)0, - maxMilliSecToUse); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} -#endif /* __LP64__ */ - -static PyMethodDef Qt_methods[] = { -#ifndef __LP64__ - {"EnterMovies", (PyCFunction)Qt_EnterMovies, 1, - PyDoc_STR("() -> None")}, - {"ExitMovies", (PyCFunction)Qt_ExitMovies, 1, - PyDoc_STR("() -> None")}, - {"GetMoviesError", (PyCFunction)Qt_GetMoviesError, 1, - PyDoc_STR("() -> None")}, - {"ClearMoviesStickyError", (PyCFunction)Qt_ClearMoviesStickyError, 1, - PyDoc_STR("() -> None")}, - {"GetMoviesStickyError", (PyCFunction)Qt_GetMoviesStickyError, 1, - PyDoc_STR("() -> None")}, - {"QTGetWallClockTimeBase", (PyCFunction)Qt_QTGetWallClockTimeBase, 1, - PyDoc_STR("() -> (TimeBase wallClockTimeBase)")}, - {"QTIdleManagerOpen", (PyCFunction)Qt_QTIdleManagerOpen, 1, - PyDoc_STR("() -> (IdleManager _rv)")}, - {"CreateMovieControl", (PyCFunction)Qt_CreateMovieControl, 1, - PyDoc_STR("(WindowPtr theWindow, Movie theMovie, UInt32 options) -> (Rect localRect, ControlHandle returnedControl)")}, - {"DisposeMatte", (PyCFunction)Qt_DisposeMatte, 1, - PyDoc_STR("(PixMapHandle theMatte) -> None")}, - {"NewMovie", (PyCFunction)Qt_NewMovie, 1, - PyDoc_STR("(long flags) -> (Movie _rv)")}, - {"QTGetTimeUntilNextTask", (PyCFunction)Qt_QTGetTimeUntilNextTask, 1, - PyDoc_STR("(long scale) -> (long duration)")}, - {"GetDataHandler", (PyCFunction)Qt_GetDataHandler, 1, - PyDoc_STR("(Handle dataRef, OSType dataHandlerSubType, long flags) -> (Component _rv)")}, - {"PasteHandleIntoMovie", (PyCFunction)Qt_PasteHandleIntoMovie, 1, - PyDoc_STR("(Handle h, OSType handleType, Movie theMovie, long flags, ComponentInstance userComp) -> None")}, - {"GetMovieImporterForDataRef", (PyCFunction)Qt_GetMovieImporterForDataRef, 1, - PyDoc_STR("(OSType dataRefType, Handle dataRef, long flags) -> (Component importer)")}, - {"QTGetMIMETypeInfo", (PyCFunction)Qt_QTGetMIMETypeInfo, 1, - PyDoc_STR("(char* mimeStringStart, short mimeStringLength, OSType infoSelector, void * infoDataPtr) -> (long infoDataSize)")}, - {"TrackTimeToMediaTime", (PyCFunction)Qt_TrackTimeToMediaTime, 1, - PyDoc_STR("(TimeValue value, Track theTrack) -> (TimeValue _rv)")}, - {"NewUserData", (PyCFunction)Qt_NewUserData, 1, - PyDoc_STR("() -> (UserData theUserData)")}, - {"NewUserDataFromHandle", (PyCFunction)Qt_NewUserDataFromHandle, 1, - PyDoc_STR("(Handle h) -> (UserData theUserData)")}, - {"CreateMovieFile", (PyCFunction)Qt_CreateMovieFile, 1, - PyDoc_STR("(FSSpec fileSpec, OSType creator, ScriptCode scriptTag, long createMovieFileFlags) -> (short resRefNum, Movie newmovie)")}, - {"OpenMovieFile", (PyCFunction)Qt_OpenMovieFile, 1, - PyDoc_STR("(FSSpec fileSpec, SInt8 permission) -> (short resRefNum)")}, - {"CloseMovieFile", (PyCFunction)Qt_CloseMovieFile, 1, - PyDoc_STR("(short resRefNum) -> None")}, - {"DeleteMovieFile", (PyCFunction)Qt_DeleteMovieFile, 1, - PyDoc_STR("(FSSpec fileSpec) -> None")}, - {"NewMovieFromFile", (PyCFunction)Qt_NewMovieFromFile, 1, - PyDoc_STR("(short resRefNum, short resId, short newMovieFlags) -> (Movie theMovie, short resId, Boolean dataRefWasChanged)")}, - {"NewMovieFromHandle", (PyCFunction)Qt_NewMovieFromHandle, 1, - PyDoc_STR("(Handle h, short newMovieFlags) -> (Movie theMovie, Boolean dataRefWasChanged)")}, - {"NewMovieFromDataFork", (PyCFunction)Qt_NewMovieFromDataFork, 1, - PyDoc_STR("(short fRefNum, long fileOffset, short newMovieFlags) -> (Movie theMovie, Boolean dataRefWasChanged)")}, - {"NewMovieFromDataFork64", (PyCFunction)Qt_NewMovieFromDataFork64, 1, - PyDoc_STR("(long fRefNum, wide fileOffset, short newMovieFlags) -> (Movie theMovie, Boolean dataRefWasChanged)")}, - {"NewMovieFromDataRef", (PyCFunction)Qt_NewMovieFromDataRef, 1, - PyDoc_STR("(short flags, Handle dataRef, OSType dtaRefType) -> (Movie m, short id)")}, - {"NewMovieFromStorageOffset", (PyCFunction)Qt_NewMovieFromStorageOffset, 1, - PyDoc_STR("(DataHandler dh, wide fileOffset, short newMovieFlags) -> (Movie theMovie, Boolean dataRefWasCataRefType)")}, - {"NewMovieForDataRefFromHandle", (PyCFunction)Qt_NewMovieForDataRefFromHandle, 1, - PyDoc_STR("(Handle h, short newMovieFlags, Handle dataRef, OSType dataRefType) -> (Movie theMovie, Boolean dataRefWasChanged)")}, - {"RemoveMovieResource", (PyCFunction)Qt_RemoveMovieResource, 1, - PyDoc_STR("(short resRefNum, short resId) -> None")}, - {"CreateMovieStorage", (PyCFunction)Qt_CreateMovieStorage, 1, - PyDoc_STR("(Handle dataRef, OSType dataRefType, OSType creator, ScriptCode scriptTag, long createMovieFileFlags) -> (DataHandler outDataHandler, Movie newmovie)")}, - {"OpenMovieStorage", (PyCFunction)Qt_OpenMovieStorage, 1, - PyDoc_STR("(Handle dataRef, OSType dataRefType, long flags) -> (DataHandler outDataHandler)")}, - {"CloseMovieStorage", (PyCFunction)Qt_CloseMovieStorage, 1, - PyDoc_STR("(DataHandler dh) -> None")}, - {"DeleteMovieStorage", (PyCFunction)Qt_DeleteMovieStorage, 1, - PyDoc_STR("(Handle dataRef, OSType dataRefType) -> None")}, - {"CreateShortcutMovieFile", (PyCFunction)Qt_CreateShortcutMovieFile, 1, - PyDoc_STR("(FSSpec fileSpec, OSType creator, ScriptCode scriptTag, long createMovieFileFlags, Handle targetDataRef, OSType targetDataRefType) -> None")}, - {"CanQuickTimeOpenFile", (PyCFunction)Qt_CanQuickTimeOpenFile, 1, - PyDoc_STR("(FSSpec fileSpec, OSType fileType, OSType fileNameExtension, UInt32 inFlags) -> (Boolean outCanOpenWithGraphicsImporter, Boolean outCanOpenAsMovie, Boolean outPreferGraphicsImporter)")}, - {"CanQuickTimeOpenDataRef", (PyCFunction)Qt_CanQuickTimeOpenDataRef, 1, - PyDoc_STR("(Handle dataRef, OSType dataRefType, UInt32 inFlags) -> (Boolean outCanOpenWithGraphicsImporter, Boolean outCanOpenAsMovie, Boolean outPreferGraphicsImporter)")}, - {"NewMovieFromScrap", (PyCFunction)Qt_NewMovieFromScrap, 1, - PyDoc_STR("(long newMovieFlags) -> (Movie _rv)")}, - {"QTNewAlias", (PyCFunction)Qt_QTNewAlias, 1, - PyDoc_STR("(FSSpec fss, Boolean minimal) -> (AliasHandle alias)")}, - {"EndFullScreen", (PyCFunction)Qt_EndFullScreen, 1, - PyDoc_STR("(Ptr fullState, long flags) -> None")}, - {"AddSoundDescriptionExtension", (PyCFunction)Qt_AddSoundDescriptionExtension, 1, - PyDoc_STR("(SoundDescriptionHandle desc, Handle extension, OSType idType) -> None")}, - {"GetSoundDescriptionExtension", (PyCFunction)Qt_GetSoundDescriptionExtension, 1, - PyDoc_STR("(SoundDescriptionHandle desc, OSType idType) -> (Handle extension)")}, - {"RemoveSoundDescriptionExtension", (PyCFunction)Qt_RemoveSoundDescriptionExtension, 1, - PyDoc_STR("(SoundDescriptionHandle desc, OSType idType) -> None")}, - {"QTIsStandardParameterDialogEvent", (PyCFunction)Qt_QTIsStandardParameterDialogEvent, 1, - PyDoc_STR("(QTParameterDialog createdDialog) -> (EventRecord pEvent)")}, - {"QTDismissStandardParameterDialog", (PyCFunction)Qt_QTDismissStandardParameterDialog, 1, - PyDoc_STR("(QTParameterDialog createdDialog) -> None")}, - {"QTStandardParameterDialogDoAction", (PyCFunction)Qt_QTStandardParameterDialogDoAction, 1, - PyDoc_STR("(QTParameterDialog createdDialog, long action, void * params) -> None")}, - {"QTRegisterAccessKey", (PyCFunction)Qt_QTRegisterAccessKey, 1, - PyDoc_STR("(Str255 accessKeyType, long flags, Handle accessKey) -> None")}, - {"QTUnregisterAccessKey", (PyCFunction)Qt_QTUnregisterAccessKey, 1, - PyDoc_STR("(Str255 accessKeyType, long flags, Handle accessKey) -> None")}, - {"QTGetSupportedRestrictions", (PyCFunction)Qt_QTGetSupportedRestrictions, 1, - PyDoc_STR("(OSType inRestrictionClass) -> (UInt32 outRestrictionIDs)")}, - {"QTTextToNativeText", (PyCFunction)Qt_QTTextToNativeText, 1, - PyDoc_STR("(Handle theText, long encoding, long flags) -> None")}, - {"VideoMediaResetStatistics", (PyCFunction)Qt_VideoMediaResetStatistics, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv)")}, - {"VideoMediaGetStatistics", (PyCFunction)Qt_VideoMediaGetStatistics, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv)")}, - {"VideoMediaGetStallCount", (PyCFunction)Qt_VideoMediaGetStallCount, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, unsigned long stalls)")}, - {"VideoMediaSetCodecParameter", (PyCFunction)Qt_VideoMediaSetCodecParameter, 1, - PyDoc_STR("(MediaHandler mh, CodecType cType, OSType parameterID, long parameterChangeSeed, void * dataPtr, long dataSize) -> (ComponentResult _rv)")}, - {"VideoMediaGetCodecParameter", (PyCFunction)Qt_VideoMediaGetCodecParameter, 1, - PyDoc_STR("(MediaHandler mh, CodecType cType, OSType parameterID, Handle outParameterData) -> (ComponentResult _rv)")}, - {"TextMediaAddTextSample", (PyCFunction)Qt_TextMediaAddTextSample, 1, - PyDoc_STR("(MediaHandler mh, Ptr text, unsigned long size, short fontNumber, short fontSize, Style textFace, short textJustification, long displayFlags, TimeValue scrollDelay, short hiliteStart, short hiliteEnd, TimeValue duration) -> (ComponentResult _rv, RGBColor textColor, RGBColor backColor, Rect textBox, RGBColor rgbHiliteColor, TimeValue sampleTime)")}, - {"TextMediaAddTESample", (PyCFunction)Qt_TextMediaAddTESample, 1, - PyDoc_STR("(MediaHandler mh, TEHandle hTE, short textJustification, long displayFlags, TimeValue scrollDelay, short hiliteStart, short hiliteEnd, TimeValue duration) -> (ComponentResult _rv, RGBColor backColor, Rect textBox, RGBColor rgbHiliteColor, TimeValue sampleTime)")}, - {"TextMediaAddHiliteSample", (PyCFunction)Qt_TextMediaAddHiliteSample, 1, - PyDoc_STR("(MediaHandler mh, short hiliteStart, short hiliteEnd, TimeValue duration) -> (ComponentResult _rv, RGBColor rgbHiliteColor, TimeValue sampleTime)")}, - {"TextMediaDrawRaw", (PyCFunction)Qt_TextMediaDrawRaw, 1, - PyDoc_STR("(MediaHandler mh, GWorldPtr gw, GDHandle gd, void * data, long dataSize, TextDescriptionHandle tdh) -> (ComponentResult _rv)")}, - {"TextMediaSetTextProperty", (PyCFunction)Qt_TextMediaSetTextProperty, 1, - PyDoc_STR("(MediaHandler mh, TimeValue atMediaTime, long propertyType, void * data, long dataSize) -> (ComponentResult _rv)")}, - {"TextMediaRawSetup", (PyCFunction)Qt_TextMediaRawSetup, 1, - PyDoc_STR("(MediaHandler mh, GWorldPtr gw, GDHandle gd, void * data, long dataSize, TextDescriptionHandle tdh, TimeValue sampleDuration) -> (ComponentResult _rv)")}, - {"TextMediaRawIdle", (PyCFunction)Qt_TextMediaRawIdle, 1, - PyDoc_STR("(MediaHandler mh, GWorldPtr gw, GDHandle gd, TimeValue sampleTime, long flagsIn) -> (ComponentResult _rv, long flagsOut)")}, - {"TextMediaGetTextProperty", (PyCFunction)Qt_TextMediaGetTextProperty, 1, - PyDoc_STR("(MediaHandler mh, TimeValue atMediaTime, long propertyType, void * data, long dataSize) -> (ComponentResult _rv)")}, - {"TextMediaFindNextText", (PyCFunction)Qt_TextMediaFindNextText, 1, - PyDoc_STR("(MediaHandler mh, Ptr text, long size, short findFlags, TimeValue startTime) -> (ComponentResult _rv, TimeValue foundTime, TimeValue foundDuration, long offset)")}, - {"TextMediaHiliteTextSample", (PyCFunction)Qt_TextMediaHiliteTextSample, 1, - PyDoc_STR("(MediaHandler mh, TimeValue sampleTime, short hiliteStart, short hiliteEnd) -> (ComponentResult _rv, RGBColor rgbHiliteColor)")}, - {"TextMediaSetTextSampleData", (PyCFunction)Qt_TextMediaSetTextSampleData, 1, - PyDoc_STR("(MediaHandler mh, void * data, OSType dataType) -> (ComponentResult _rv)")}, - {"SpriteMediaSetProperty", (PyCFunction)Qt_SpriteMediaSetProperty, 1, - PyDoc_STR("(MediaHandler mh, short spriteIndex, long propertyType, void * propertyValue) -> (ComponentResult _rv)")}, - {"SpriteMediaGetProperty", (PyCFunction)Qt_SpriteMediaGetProperty, 1, - PyDoc_STR("(MediaHandler mh, short spriteIndex, long propertyType, void * propertyValue) -> (ComponentResult _rv)")}, - {"SpriteMediaHitTestSprites", (PyCFunction)Qt_SpriteMediaHitTestSprites, 1, - PyDoc_STR("(MediaHandler mh, long flags, Point loc) -> (ComponentResult _rv, short spriteHitIndex)")}, - {"SpriteMediaCountSprites", (PyCFunction)Qt_SpriteMediaCountSprites, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, short numSprites)")}, - {"SpriteMediaCountImages", (PyCFunction)Qt_SpriteMediaCountImages, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, short numImages)")}, - {"SpriteMediaGetIndImageDescription", (PyCFunction)Qt_SpriteMediaGetIndImageDescription, 1, - PyDoc_STR("(MediaHandler mh, short imageIndex, ImageDescriptionHandle imageDescription) -> (ComponentResult _rv)")}, - {"SpriteMediaGetDisplayedSampleNumber", (PyCFunction)Qt_SpriteMediaGetDisplayedSampleNumber, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, long sampleNum)")}, - {"SpriteMediaGetSpriteName", (PyCFunction)Qt_SpriteMediaGetSpriteName, 1, - PyDoc_STR("(MediaHandler mh, QTAtomID spriteID, Str255 spriteName) -> (ComponentResult _rv)")}, - {"SpriteMediaGetImageName", (PyCFunction)Qt_SpriteMediaGetImageName, 1, - PyDoc_STR("(MediaHandler mh, short imageIndex, Str255 imageName) -> (ComponentResult _rv)")}, - {"SpriteMediaSetSpriteProperty", (PyCFunction)Qt_SpriteMediaSetSpriteProperty, 1, - PyDoc_STR("(MediaHandler mh, QTAtomID spriteID, long propertyType, void * propertyValue) -> (ComponentResult _rv)")}, - {"SpriteMediaGetSpriteProperty", (PyCFunction)Qt_SpriteMediaGetSpriteProperty, 1, - PyDoc_STR("(MediaHandler mh, QTAtomID spriteID, long propertyType, void * propertyValue) -> (ComponentResult _rv)")}, - {"SpriteMediaHitTestAllSprites", (PyCFunction)Qt_SpriteMediaHitTestAllSprites, 1, - PyDoc_STR("(MediaHandler mh, long flags, Point loc) -> (ComponentResult _rv, QTAtomID spriteHitID)")}, - {"SpriteMediaHitTestOneSprite", (PyCFunction)Qt_SpriteMediaHitTestOneSprite, 1, - PyDoc_STR("(MediaHandler mh, QTAtomID spriteID, long flags, Point loc) -> (ComponentResult _rv, Boolean wasHit)")}, - {"SpriteMediaSpriteIndexToID", (PyCFunction)Qt_SpriteMediaSpriteIndexToID, 1, - PyDoc_STR("(MediaHandler mh, short spriteIndex) -> (ComponentResult _rv, QTAtomID spriteID)")}, - {"SpriteMediaSpriteIDToIndex", (PyCFunction)Qt_SpriteMediaSpriteIDToIndex, 1, - PyDoc_STR("(MediaHandler mh, QTAtomID spriteID) -> (ComponentResult _rv, short spriteIndex)")}, - {"SpriteMediaSetActionVariable", (PyCFunction)Qt_SpriteMediaSetActionVariable, 1, - PyDoc_STR("(MediaHandler mh, QTAtomID variableID, float value) -> (ComponentResult _rv)")}, - {"SpriteMediaGetActionVariable", (PyCFunction)Qt_SpriteMediaGetActionVariable, 1, - PyDoc_STR("(MediaHandler mh, QTAtomID variableID) -> (ComponentResult _rv, float value)")}, - {"SpriteMediaDisposeSprite", (PyCFunction)Qt_SpriteMediaDisposeSprite, 1, - PyDoc_STR("(MediaHandler mh, QTAtomID spriteID) -> (ComponentResult _rv)")}, - {"SpriteMediaSetActionVariableToString", (PyCFunction)Qt_SpriteMediaSetActionVariableToString, 1, - PyDoc_STR("(MediaHandler mh, QTAtomID variableID, Ptr theCString) -> (ComponentResult _rv)")}, - {"SpriteMediaGetActionVariableAsString", (PyCFunction)Qt_SpriteMediaGetActionVariableAsString, 1, - PyDoc_STR("(MediaHandler mh, QTAtomID variableID) -> (ComponentResult _rv, Handle theCString)")}, - {"SpriteMediaNewImage", (PyCFunction)Qt_SpriteMediaNewImage, 1, - PyDoc_STR("(MediaHandler mh, Handle dataRef, OSType dataRefType, QTAtomID desiredID) -> (ComponentResult _rv)")}, - {"SpriteMediaDisposeImage", (PyCFunction)Qt_SpriteMediaDisposeImage, 1, - PyDoc_STR("(MediaHandler mh, short imageIndex) -> (ComponentResult _rv)")}, - {"SpriteMediaImageIndexToID", (PyCFunction)Qt_SpriteMediaImageIndexToID, 1, - PyDoc_STR("(MediaHandler mh, short imageIndex) -> (ComponentResult _rv, QTAtomID imageID)")}, - {"SpriteMediaImageIDToIndex", (PyCFunction)Qt_SpriteMediaImageIDToIndex, 1, - PyDoc_STR("(MediaHandler mh, QTAtomID imageID) -> (ComponentResult _rv, short imageIndex)")}, - {"FlashMediaSetPan", (PyCFunction)Qt_FlashMediaSetPan, 1, - PyDoc_STR("(MediaHandler mh, short xPercent, short yPercent) -> (ComponentResult _rv)")}, - {"FlashMediaSetZoom", (PyCFunction)Qt_FlashMediaSetZoom, 1, - PyDoc_STR("(MediaHandler mh, short factor) -> (ComponentResult _rv)")}, - {"FlashMediaSetZoomRect", (PyCFunction)Qt_FlashMediaSetZoomRect, 1, - PyDoc_STR("(MediaHandler mh, long left, long top, long right, long bottom) -> (ComponentResult _rv)")}, - {"FlashMediaGetRefConBounds", (PyCFunction)Qt_FlashMediaGetRefConBounds, 1, - PyDoc_STR("(MediaHandler mh, long refCon) -> (ComponentResult _rv, long left, long top, long right, long bottom)")}, - {"FlashMediaGetRefConID", (PyCFunction)Qt_FlashMediaGetRefConID, 1, - PyDoc_STR("(MediaHandler mh, long refCon) -> (ComponentResult _rv, long refConID)")}, - {"FlashMediaIDToRefCon", (PyCFunction)Qt_FlashMediaIDToRefCon, 1, - PyDoc_STR("(MediaHandler mh, long refConID) -> (ComponentResult _rv, long refCon)")}, - {"FlashMediaGetDisplayedFrameNumber", (PyCFunction)Qt_FlashMediaGetDisplayedFrameNumber, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, long flashFrameNumber)")}, - {"FlashMediaFrameNumberToMovieTime", (PyCFunction)Qt_FlashMediaFrameNumberToMovieTime, 1, - PyDoc_STR("(MediaHandler mh, long flashFrameNumber) -> (ComponentResult _rv, TimeValue movieTime)")}, - {"FlashMediaFrameLabelToMovieTime", (PyCFunction)Qt_FlashMediaFrameLabelToMovieTime, 1, - PyDoc_STR("(MediaHandler mh, Ptr theLabel) -> (ComponentResult _rv, TimeValue movieTime)")}, - {"FlashMediaGetFlashVariable", (PyCFunction)Qt_FlashMediaGetFlashVariable, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, char path, char name, Handle theVariableCStringOut)")}, - {"FlashMediaSetFlashVariable", (PyCFunction)Qt_FlashMediaSetFlashVariable, 1, - PyDoc_STR("(MediaHandler mh, Boolean updateFocus) -> (ComponentResult _rv, char path, char name, char value)")}, - {"FlashMediaDoButtonActions", (PyCFunction)Qt_FlashMediaDoButtonActions, 1, - PyDoc_STR("(MediaHandler mh, long buttonID, long transition) -> (ComponentResult _rv, char path)")}, - {"FlashMediaGetSupportedSwfVersion", (PyCFunction)Qt_FlashMediaGetSupportedSwfVersion, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, UInt8 swfVersion)")}, - {"Media3DGetCurrentGroup", (PyCFunction)Qt_Media3DGetCurrentGroup, 1, - PyDoc_STR("(MediaHandler mh, void * group) -> (ComponentResult _rv)")}, - {"Media3DTranslateNamedObjectTo", (PyCFunction)Qt_Media3DTranslateNamedObjectTo, 1, - PyDoc_STR("(MediaHandler mh, Fixed x, Fixed y, Fixed z) -> (ComponentResult _rv, char objectName)")}, - {"Media3DScaleNamedObjectTo", (PyCFunction)Qt_Media3DScaleNamedObjectTo, 1, - PyDoc_STR("(MediaHandler mh, Fixed xScale, Fixed yScale, Fixed zScale) -> (ComponentResult _rv, char objectName)")}, - {"Media3DRotateNamedObjectTo", (PyCFunction)Qt_Media3DRotateNamedObjectTo, 1, - PyDoc_STR("(MediaHandler mh, Fixed xDegrees, Fixed yDegrees, Fixed zDegrees) -> (ComponentResult _rv, char objectName)")}, - {"Media3DSetCameraData", (PyCFunction)Qt_Media3DSetCameraData, 1, - PyDoc_STR("(MediaHandler mh, void * cameraData) -> (ComponentResult _rv)")}, - {"Media3DGetCameraData", (PyCFunction)Qt_Media3DGetCameraData, 1, - PyDoc_STR("(MediaHandler mh, void * cameraData) -> (ComponentResult _rv)")}, - {"Media3DSetCameraAngleAspect", (PyCFunction)Qt_Media3DSetCameraAngleAspect, 1, - PyDoc_STR("(MediaHandler mh, QTFloatSingle fov, QTFloatSingle aspectRatioXToY) -> (ComponentResult _rv)")}, - {"Media3DGetCameraAngleAspect", (PyCFunction)Qt_Media3DGetCameraAngleAspect, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, QTFloatSingle fov, QTFloatSingle aspectRatioXToY)")}, - {"Media3DSetCameraRange", (PyCFunction)Qt_Media3DSetCameraRange, 1, - PyDoc_STR("(MediaHandler mh, void * tQ3CameraRange) -> (ComponentResult _rv)")}, - {"Media3DGetCameraRange", (PyCFunction)Qt_Media3DGetCameraRange, 1, - PyDoc_STR("(MediaHandler mh, void * tQ3CameraRange) -> (ComponentResult _rv)")}, - {"NewTimeBase", (PyCFunction)Qt_NewTimeBase, 1, - PyDoc_STR("() -> (TimeBase _rv)")}, - {"ConvertTime", (PyCFunction)Qt_ConvertTime, 1, - PyDoc_STR("(TimeRecord theTime, TimeBase newBase) -> (TimeRecord theTime)")}, - {"ConvertTimeScale", (PyCFunction)Qt_ConvertTimeScale, 1, - PyDoc_STR("(TimeRecord theTime, TimeScale newScale) -> (TimeRecord theTime)")}, - {"AddTime", (PyCFunction)Qt_AddTime, 1, - PyDoc_STR("(TimeRecord dst, TimeRecord src) -> (TimeRecord dst)")}, - {"SubtractTime", (PyCFunction)Qt_SubtractTime, 1, - PyDoc_STR("(TimeRecord dst, TimeRecord src) -> (TimeRecord dst)")}, - {"MusicMediaGetIndexedTunePlayer", (PyCFunction)Qt_MusicMediaGetIndexedTunePlayer, 1, - PyDoc_STR("(ComponentInstance ti, long sampleDescIndex) -> (ComponentResult _rv, ComponentInstance tp)")}, - {"CodecManagerVersion", (PyCFunction)Qt_CodecManagerVersion, 1, - PyDoc_STR("() -> (long version)")}, - {"GetMaxCompressionSize", (PyCFunction)Qt_GetMaxCompressionSize, 1, - PyDoc_STR("(PixMapHandle src, Rect srcRect, short colorDepth, CodecQ quality, CodecType cType, CompressorComponent codec) -> (long size)")}, - {"GetCompressionTime", (PyCFunction)Qt_GetCompressionTime, 1, - PyDoc_STR("(PixMapHandle src, Rect srcRect, short colorDepth, CodecType cType, CompressorComponent codec) -> (CodecQ spatialQuality, CodecQ temporalQuality, unsigned long compressTime)")}, - {"CompressImage", (PyCFunction)Qt_CompressImage, 1, - PyDoc_STR("(PixMapHandle src, Rect srcRect, CodecQ quality, CodecType cType, ImageDescriptionHandle desc, Ptr data) -> None")}, - {"DecompressImage", (PyCFunction)Qt_DecompressImage, 1, - PyDoc_STR("(Ptr data, ImageDescriptionHandle desc, PixMapHandle dst, Rect srcRect, Rect dstRect, short mode, RgnHandle mask) -> None")}, - {"GetSimilarity", (PyCFunction)Qt_GetSimilarity, 1, - PyDoc_STR("(PixMapHandle src, Rect srcRect, ImageDescriptionHandle desc, Ptr data) -> (Fixed similarity)")}, - {"GetImageDescriptionCTable", (PyCFunction)Qt_GetImageDescriptionCTable, 1, - PyDoc_STR("(ImageDescriptionHandle desc) -> (CTabHandle ctable)")}, - {"SetImageDescriptionCTable", (PyCFunction)Qt_SetImageDescriptionCTable, 1, - PyDoc_STR("(ImageDescriptionHandle desc, CTabHandle ctable) -> None")}, - {"GetImageDescriptionExtension", (PyCFunction)Qt_GetImageDescriptionExtension, 1, - PyDoc_STR("(ImageDescriptionHandle desc, long idType, long index) -> (Handle extension)")}, - {"AddImageDescriptionExtension", (PyCFunction)Qt_AddImageDescriptionExtension, 1, - PyDoc_STR("(ImageDescriptionHandle desc, Handle extension, long idType) -> None")}, - {"RemoveImageDescriptionExtension", (PyCFunction)Qt_RemoveImageDescriptionExtension, 1, - PyDoc_STR("(ImageDescriptionHandle desc, long idType, long index) -> None")}, - {"CountImageDescriptionExtensionType", (PyCFunction)Qt_CountImageDescriptionExtensionType, 1, - PyDoc_STR("(ImageDescriptionHandle desc, long idType) -> (long count)")}, - {"GetNextImageDescriptionExtensionType", (PyCFunction)Qt_GetNextImageDescriptionExtensionType, 1, - PyDoc_STR("(ImageDescriptionHandle desc) -> (long idType)")}, - {"FindCodec", (PyCFunction)Qt_FindCodec, 1, - PyDoc_STR("(CodecType cType, CodecComponent specCodec) -> (CompressorComponent compressor, DecompressorComponent decompressor)")}, - {"CompressPicture", (PyCFunction)Qt_CompressPicture, 1, - PyDoc_STR("(PicHandle srcPicture, PicHandle dstPicture, CodecQ quality, CodecType cType) -> None")}, - {"CompressPictureFile", (PyCFunction)Qt_CompressPictureFile, 1, - PyDoc_STR("(short srcRefNum, short dstRefNum, CodecQ quality, CodecType cType) -> None")}, - {"ConvertImage", (PyCFunction)Qt_ConvertImage, 1, - PyDoc_STR("(ImageDescriptionHandle srcDD, Ptr srcData, short colorDepth, CTabHandle ctable, CodecQ accuracy, CodecQ quality, CodecType cType, CodecComponent codec, ImageDescriptionHandle dstDD, Ptr dstData) -> None")}, - {"AddFilePreview", (PyCFunction)Qt_AddFilePreview, 1, - PyDoc_STR("(short resRefNum, OSType previewType, Handle previewData) -> None")}, - {"GetBestDeviceRect", (PyCFunction)Qt_GetBestDeviceRect, 1, - PyDoc_STR("() -> (GDHandle gdh, Rect rp)")}, - {"GDHasScale", (PyCFunction)Qt_GDHasScale, 1, - PyDoc_STR("(GDHandle gdh, short depth) -> (Fixed scale)")}, - {"GDGetScale", (PyCFunction)Qt_GDGetScale, 1, - PyDoc_STR("(GDHandle gdh) -> (Fixed scale, short flags)")}, - {"GDSetScale", (PyCFunction)Qt_GDSetScale, 1, - PyDoc_STR("(GDHandle gdh, Fixed scale, short flags) -> None")}, - {"GetGraphicsImporterForFile", (PyCFunction)Qt_GetGraphicsImporterForFile, 1, - PyDoc_STR("(FSSpec theFile) -> (ComponentInstance gi)")}, - {"GetGraphicsImporterForDataRef", (PyCFunction)Qt_GetGraphicsImporterForDataRef, 1, - PyDoc_STR("(Handle dataRef, OSType dataRefType) -> (ComponentInstance gi)")}, - {"GetGraphicsImporterForFileWithFlags", (PyCFunction)Qt_GetGraphicsImporterForFileWithFlags, 1, - PyDoc_STR("(FSSpec theFile, long flags) -> (ComponentInstance gi)")}, - {"GetGraphicsImporterForDataRefWithFlags", (PyCFunction)Qt_GetGraphicsImporterForDataRefWithFlags, 1, - PyDoc_STR("(Handle dataRef, OSType dataRefType, long flags) -> (ComponentInstance gi)")}, - {"MakeImageDescriptionForPixMap", (PyCFunction)Qt_MakeImageDescriptionForPixMap, 1, - PyDoc_STR("(PixMapHandle pixmap) -> (ImageDescriptionHandle idh)")}, - {"MakeImageDescriptionForEffect", (PyCFunction)Qt_MakeImageDescriptionForEffect, 1, - PyDoc_STR("(OSType effectType) -> (ImageDescriptionHandle idh)")}, - {"QTGetPixelSize", (PyCFunction)Qt_QTGetPixelSize, 1, - PyDoc_STR("(OSType PixelFormat) -> (short _rv)")}, - {"QTGetPixelFormatDepthForImageDescription", (PyCFunction)Qt_QTGetPixelFormatDepthForImageDescription, 1, - PyDoc_STR("(OSType PixelFormat) -> (short _rv)")}, - {"QTGetPixMapHandleRowBytes", (PyCFunction)Qt_QTGetPixMapHandleRowBytes, 1, - PyDoc_STR("(PixMapHandle pm) -> (long _rv)")}, - {"QTSetPixMapHandleRowBytes", (PyCFunction)Qt_QTSetPixMapHandleRowBytes, 1, - PyDoc_STR("(PixMapHandle pm, long rowBytes) -> None")}, - {"QTGetPixMapHandleGammaLevel", (PyCFunction)Qt_QTGetPixMapHandleGammaLevel, 1, - PyDoc_STR("(PixMapHandle pm) -> (Fixed _rv)")}, - {"QTSetPixMapHandleGammaLevel", (PyCFunction)Qt_QTSetPixMapHandleGammaLevel, 1, - PyDoc_STR("(PixMapHandle pm, Fixed gammaLevel) -> None")}, - {"QTGetPixMapHandleRequestedGammaLevel", (PyCFunction)Qt_QTGetPixMapHandleRequestedGammaLevel, 1, - PyDoc_STR("(PixMapHandle pm) -> (Fixed _rv)")}, - {"QTSetPixMapHandleRequestedGammaLevel", (PyCFunction)Qt_QTSetPixMapHandleRequestedGammaLevel, 1, - PyDoc_STR("(PixMapHandle pm, Fixed requestedGammaLevel) -> None")}, - {"CompAdd", (PyCFunction)Qt_CompAdd, 1, - PyDoc_STR("() -> (wide src, wide dst)")}, - {"CompSub", (PyCFunction)Qt_CompSub, 1, - PyDoc_STR("() -> (wide src, wide dst)")}, - {"CompNeg", (PyCFunction)Qt_CompNeg, 1, - PyDoc_STR("() -> (wide dst)")}, - {"CompShift", (PyCFunction)Qt_CompShift, 1, - PyDoc_STR("(short shift) -> (wide src)")}, - {"CompMul", (PyCFunction)Qt_CompMul, 1, - PyDoc_STR("(long src1, long src2) -> (wide dst)")}, - {"CompDiv", (PyCFunction)Qt_CompDiv, 1, - PyDoc_STR("(long denominator) -> (long _rv, wide numerator, long remainder)")}, - {"CompFixMul", (PyCFunction)Qt_CompFixMul, 1, - PyDoc_STR("(Fixed fixSrc) -> (wide compSrc, wide compDst)")}, - {"CompMulDiv", (PyCFunction)Qt_CompMulDiv, 1, - PyDoc_STR("(long mul, long divisor) -> (wide co)")}, - {"CompMulDivTrunc", (PyCFunction)Qt_CompMulDivTrunc, 1, - PyDoc_STR("(long mul, long divisor) -> (wide co, long remainder)")}, - {"CompCompare", (PyCFunction)Qt_CompCompare, 1, - PyDoc_STR("(wide a, wide minusb) -> (long _rv)")}, - {"CompSquareRoot", (PyCFunction)Qt_CompSquareRoot, 1, - PyDoc_STR("(wide src) -> (unsigned long _rv)")}, - {"FixMulDiv", (PyCFunction)Qt_FixMulDiv, 1, - PyDoc_STR("(Fixed src, Fixed mul, Fixed divisor) -> (Fixed _rv)")}, - {"UnsignedFixMulDiv", (PyCFunction)Qt_UnsignedFixMulDiv, 1, - PyDoc_STR("(Fixed src, Fixed mul, Fixed divisor) -> (Fixed _rv)")}, - {"FixExp2", (PyCFunction)Qt_FixExp2, 1, - PyDoc_STR("(Fixed src) -> (Fixed _rv)")}, - {"FixLog2", (PyCFunction)Qt_FixLog2, 1, - PyDoc_STR("(Fixed src) -> (Fixed _rv)")}, - {"FixPow", (PyCFunction)Qt_FixPow, 1, - PyDoc_STR("(Fixed base, Fixed exp) -> (Fixed _rv)")}, - {"GraphicsImportSetDataReference", (PyCFunction)Qt_GraphicsImportSetDataReference, 1, - PyDoc_STR("(GraphicsImportComponent ci, Handle dataRef, OSType dataReType) -> (ComponentResult _rv)")}, - {"GraphicsImportGetDataReference", (PyCFunction)Qt_GraphicsImportGetDataReference, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, Handle dataRef, OSType dataReType)")}, - {"GraphicsImportSetDataFile", (PyCFunction)Qt_GraphicsImportSetDataFile, 1, - PyDoc_STR("(GraphicsImportComponent ci, FSSpec theFile) -> (ComponentResult _rv)")}, - {"GraphicsImportGetDataFile", (PyCFunction)Qt_GraphicsImportGetDataFile, 1, - PyDoc_STR("(GraphicsImportComponent ci, FSSpec theFile) -> (ComponentResult _rv)")}, - {"GraphicsImportSetDataHandle", (PyCFunction)Qt_GraphicsImportSetDataHandle, 1, - PyDoc_STR("(GraphicsImportComponent ci, Handle h) -> (ComponentResult _rv)")}, - {"GraphicsImportGetDataHandle", (PyCFunction)Qt_GraphicsImportGetDataHandle, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, Handle h)")}, - {"GraphicsImportGetImageDescription", (PyCFunction)Qt_GraphicsImportGetImageDescription, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, ImageDescriptionHandle desc)")}, - {"GraphicsImportGetDataOffsetAndSize", (PyCFunction)Qt_GraphicsImportGetDataOffsetAndSize, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, unsigned long offset, unsigned long size)")}, - {"GraphicsImportReadData", (PyCFunction)Qt_GraphicsImportReadData, 1, - PyDoc_STR("(GraphicsImportComponent ci, void * dataPtr, unsigned long dataOffset, unsigned long dataSize) -> (ComponentResult _rv)")}, - {"GraphicsImportSetClip", (PyCFunction)Qt_GraphicsImportSetClip, 1, - PyDoc_STR("(GraphicsImportComponent ci, RgnHandle clipRgn) -> (ComponentResult _rv)")}, - {"GraphicsImportGetClip", (PyCFunction)Qt_GraphicsImportGetClip, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, RgnHandle clipRgn)")}, - {"GraphicsImportSetSourceRect", (PyCFunction)Qt_GraphicsImportSetSourceRect, 1, - PyDoc_STR("(GraphicsImportComponent ci, Rect sourceRect) -> (ComponentResult _rv)")}, - {"GraphicsImportGetSourceRect", (PyCFunction)Qt_GraphicsImportGetSourceRect, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, Rect sourceRect)")}, - {"GraphicsImportGetNaturalBounds", (PyCFunction)Qt_GraphicsImportGetNaturalBounds, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, Rect naturalBounds)")}, - {"GraphicsImportDraw", (PyCFunction)Qt_GraphicsImportDraw, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv)")}, - {"GraphicsImportSetGWorld", (PyCFunction)Qt_GraphicsImportSetGWorld, 1, - PyDoc_STR("(GraphicsImportComponent ci, CGrafPtr port, GDHandle gd) -> (ComponentResult _rv)")}, - {"GraphicsImportGetGWorld", (PyCFunction)Qt_GraphicsImportGetGWorld, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, CGrafPtr port, GDHandle gd)")}, - {"GraphicsImportSetBoundsRect", (PyCFunction)Qt_GraphicsImportSetBoundsRect, 1, - PyDoc_STR("(GraphicsImportComponent ci, Rect bounds) -> (ComponentResult _rv)")}, - {"GraphicsImportGetBoundsRect", (PyCFunction)Qt_GraphicsImportGetBoundsRect, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, Rect bounds)")}, - {"GraphicsImportSaveAsPicture", (PyCFunction)Qt_GraphicsImportSaveAsPicture, 1, - PyDoc_STR("(GraphicsImportComponent ci, FSSpec fss, ScriptCode scriptTag) -> (ComponentResult _rv)")}, - {"GraphicsImportSetGraphicsMode", (PyCFunction)Qt_GraphicsImportSetGraphicsMode, 1, - PyDoc_STR("(GraphicsImportComponent ci, long graphicsMode, RGBColor opColor) -> (ComponentResult _rv)")}, - {"GraphicsImportGetGraphicsMode", (PyCFunction)Qt_GraphicsImportGetGraphicsMode, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, long graphicsMode, RGBColor opColor)")}, - {"GraphicsImportSetQuality", (PyCFunction)Qt_GraphicsImportSetQuality, 1, - PyDoc_STR("(GraphicsImportComponent ci, CodecQ quality) -> (ComponentResult _rv)")}, - {"GraphicsImportGetQuality", (PyCFunction)Qt_GraphicsImportGetQuality, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, CodecQ quality)")}, - {"GraphicsImportSaveAsQuickTimeImageFile", (PyCFunction)Qt_GraphicsImportSaveAsQuickTimeImageFile, 1, - PyDoc_STR("(GraphicsImportComponent ci, FSSpec fss, ScriptCode scriptTag) -> (ComponentResult _rv)")}, - {"GraphicsImportSetDataReferenceOffsetAndLimit", (PyCFunction)Qt_GraphicsImportSetDataReferenceOffsetAndLimit, 1, - PyDoc_STR("(GraphicsImportComponent ci, unsigned long offset, unsigned long limit) -> (ComponentResult _rv)")}, - {"GraphicsImportGetDataReferenceOffsetAndLimit", (PyCFunction)Qt_GraphicsImportGetDataReferenceOffsetAndLimit, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, unsigned long offset, unsigned long limit)")}, - {"GraphicsImportGetAliasedDataReference", (PyCFunction)Qt_GraphicsImportGetAliasedDataReference, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, Handle dataRef, OSType dataRefType)")}, - {"GraphicsImportValidate", (PyCFunction)Qt_GraphicsImportValidate, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, Boolean valid)")}, - {"GraphicsImportGetMetaData", (PyCFunction)Qt_GraphicsImportGetMetaData, 1, - PyDoc_STR("(GraphicsImportComponent ci, void * userData) -> (ComponentResult _rv)")}, - {"GraphicsImportGetMIMETypeList", (PyCFunction)Qt_GraphicsImportGetMIMETypeList, 1, - PyDoc_STR("(GraphicsImportComponent ci, void * qtAtomContainerPtr) -> (ComponentResult _rv)")}, - {"GraphicsImportDoesDrawAllPixels", (PyCFunction)Qt_GraphicsImportDoesDrawAllPixels, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, short drawsAllPixels)")}, - {"GraphicsImportGetAsPicture", (PyCFunction)Qt_GraphicsImportGetAsPicture, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, PicHandle picture)")}, - {"GraphicsImportExportImageFile", (PyCFunction)Qt_GraphicsImportExportImageFile, 1, - PyDoc_STR("(GraphicsImportComponent ci, OSType fileType, OSType fileCreator, FSSpec fss, ScriptCode scriptTag) -> (ComponentResult _rv)")}, - {"GraphicsImportGetExportImageTypeList", (PyCFunction)Qt_GraphicsImportGetExportImageTypeList, 1, - PyDoc_STR("(GraphicsImportComponent ci, void * qtAtomContainerPtr) -> (ComponentResult _rv)")}, - {"GraphicsImportGetExportSettingsAsAtomContainer", (PyCFunction)Qt_GraphicsImportGetExportSettingsAsAtomContainer, 1, - PyDoc_STR("(GraphicsImportComponent ci, void * qtAtomContainerPtr) -> (ComponentResult _rv)")}, - {"GraphicsImportSetExportSettingsFromAtomContainer", (PyCFunction)Qt_GraphicsImportSetExportSettingsFromAtomContainer, 1, - PyDoc_STR("(GraphicsImportComponent ci, void * qtAtomContainer) -> (ComponentResult _rv)")}, - {"GraphicsImportGetImageCount", (PyCFunction)Qt_GraphicsImportGetImageCount, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, unsigned long imageCount)")}, - {"GraphicsImportSetImageIndex", (PyCFunction)Qt_GraphicsImportSetImageIndex, 1, - PyDoc_STR("(GraphicsImportComponent ci, unsigned long imageIndex) -> (ComponentResult _rv)")}, - {"GraphicsImportGetImageIndex", (PyCFunction)Qt_GraphicsImportGetImageIndex, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, unsigned long imageIndex)")}, - {"GraphicsImportGetDataOffsetAndSize64", (PyCFunction)Qt_GraphicsImportGetDataOffsetAndSize64, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, wide offset, wide size)")}, - {"GraphicsImportReadData64", (PyCFunction)Qt_GraphicsImportReadData64, 1, - PyDoc_STR("(GraphicsImportComponent ci, void * dataPtr, wide dataOffset, unsigned long dataSize) -> (ComponentResult _rv)")}, - {"GraphicsImportSetDataReferenceOffsetAndLimit64", (PyCFunction)Qt_GraphicsImportSetDataReferenceOffsetAndLimit64, 1, - PyDoc_STR("(GraphicsImportComponent ci, wide offset, wide limit) -> (ComponentResult _rv)")}, - {"GraphicsImportGetDataReferenceOffsetAndLimit64", (PyCFunction)Qt_GraphicsImportGetDataReferenceOffsetAndLimit64, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, wide offset, wide limit)")}, - {"GraphicsImportGetDefaultClip", (PyCFunction)Qt_GraphicsImportGetDefaultClip, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, RgnHandle defaultRgn)")}, - {"GraphicsImportGetDefaultGraphicsMode", (PyCFunction)Qt_GraphicsImportGetDefaultGraphicsMode, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, long defaultGraphicsMode, RGBColor defaultOpColor)")}, - {"GraphicsImportGetDefaultSourceRect", (PyCFunction)Qt_GraphicsImportGetDefaultSourceRect, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, Rect defaultSourceRect)")}, - {"GraphicsImportGetColorSyncProfile", (PyCFunction)Qt_GraphicsImportGetColorSyncProfile, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, Handle profile)")}, - {"GraphicsImportSetDestRect", (PyCFunction)Qt_GraphicsImportSetDestRect, 1, - PyDoc_STR("(GraphicsImportComponent ci, Rect destRect) -> (ComponentResult _rv)")}, - {"GraphicsImportGetDestRect", (PyCFunction)Qt_GraphicsImportGetDestRect, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, Rect destRect)")}, - {"GraphicsImportSetFlags", (PyCFunction)Qt_GraphicsImportSetFlags, 1, - PyDoc_STR("(GraphicsImportComponent ci, long flags) -> (ComponentResult _rv)")}, - {"GraphicsImportGetFlags", (PyCFunction)Qt_GraphicsImportGetFlags, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, long flags)")}, - {"GraphicsImportGetBaseDataOffsetAndSize64", (PyCFunction)Qt_GraphicsImportGetBaseDataOffsetAndSize64, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv, wide offset, wide size)")}, - {"GraphicsImportSetImageIndexToThumbnail", (PyCFunction)Qt_GraphicsImportSetImageIndexToThumbnail, 1, - PyDoc_STR("(GraphicsImportComponent ci) -> (ComponentResult _rv)")}, - {"GraphicsExportDoExport", (PyCFunction)Qt_GraphicsExportDoExport, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, unsigned long actualSizeWritten)")}, - {"GraphicsExportCanTranscode", (PyCFunction)Qt_GraphicsExportCanTranscode, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, Boolean canTranscode)")}, - {"GraphicsExportDoTranscode", (PyCFunction)Qt_GraphicsExportDoTranscode, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv)")}, - {"GraphicsExportCanUseCompressor", (PyCFunction)Qt_GraphicsExportCanUseCompressor, 1, - PyDoc_STR("(GraphicsExportComponent ci, void * codecSettingsAtomContainerPtr) -> (ComponentResult _rv, Boolean canUseCompressor)")}, - {"GraphicsExportDoUseCompressor", (PyCFunction)Qt_GraphicsExportDoUseCompressor, 1, - PyDoc_STR("(GraphicsExportComponent ci, void * codecSettingsAtomContainer) -> (ComponentResult _rv, ImageDescriptionHandle outDesc)")}, - {"GraphicsExportDoStandaloneExport", (PyCFunction)Qt_GraphicsExportDoStandaloneExport, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv)")}, - {"GraphicsExportGetDefaultFileTypeAndCreator", (PyCFunction)Qt_GraphicsExportGetDefaultFileTypeAndCreator, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, OSType fileType, OSType fileCreator)")}, - {"GraphicsExportGetDefaultFileNameExtension", (PyCFunction)Qt_GraphicsExportGetDefaultFileNameExtension, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, OSType fileNameExtension)")}, - {"GraphicsExportGetMIMETypeList", (PyCFunction)Qt_GraphicsExportGetMIMETypeList, 1, - PyDoc_STR("(GraphicsExportComponent ci, void * qtAtomContainerPtr) -> (ComponentResult _rv)")}, - {"GraphicsExportSetSettingsFromAtomContainer", (PyCFunction)Qt_GraphicsExportSetSettingsFromAtomContainer, 1, - PyDoc_STR("(GraphicsExportComponent ci, void * qtAtomContainer) -> (ComponentResult _rv)")}, - {"GraphicsExportGetSettingsAsAtomContainer", (PyCFunction)Qt_GraphicsExportGetSettingsAsAtomContainer, 1, - PyDoc_STR("(GraphicsExportComponent ci, void * qtAtomContainerPtr) -> (ComponentResult _rv)")}, - {"GraphicsExportGetSettingsAsText", (PyCFunction)Qt_GraphicsExportGetSettingsAsText, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, Handle theText)")}, - {"GraphicsExportSetDontRecompress", (PyCFunction)Qt_GraphicsExportSetDontRecompress, 1, - PyDoc_STR("(GraphicsExportComponent ci, Boolean dontRecompress) -> (ComponentResult _rv)")}, - {"GraphicsExportGetDontRecompress", (PyCFunction)Qt_GraphicsExportGetDontRecompress, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, Boolean dontRecompress)")}, - {"GraphicsExportSetInterlaceStyle", (PyCFunction)Qt_GraphicsExportSetInterlaceStyle, 1, - PyDoc_STR("(GraphicsExportComponent ci, unsigned long interlaceStyle) -> (ComponentResult _rv)")}, - {"GraphicsExportGetInterlaceStyle", (PyCFunction)Qt_GraphicsExportGetInterlaceStyle, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, unsigned long interlaceStyle)")}, - {"GraphicsExportSetMetaData", (PyCFunction)Qt_GraphicsExportSetMetaData, 1, - PyDoc_STR("(GraphicsExportComponent ci, void * userData) -> (ComponentResult _rv)")}, - {"GraphicsExportGetMetaData", (PyCFunction)Qt_GraphicsExportGetMetaData, 1, - PyDoc_STR("(GraphicsExportComponent ci, void * userData) -> (ComponentResult _rv)")}, - {"GraphicsExportSetTargetDataSize", (PyCFunction)Qt_GraphicsExportSetTargetDataSize, 1, - PyDoc_STR("(GraphicsExportComponent ci, unsigned long targetDataSize) -> (ComponentResult _rv)")}, - {"GraphicsExportGetTargetDataSize", (PyCFunction)Qt_GraphicsExportGetTargetDataSize, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, unsigned long targetDataSize)")}, - {"GraphicsExportSetCompressionMethod", (PyCFunction)Qt_GraphicsExportSetCompressionMethod, 1, - PyDoc_STR("(GraphicsExportComponent ci, long compressionMethod) -> (ComponentResult _rv)")}, - {"GraphicsExportGetCompressionMethod", (PyCFunction)Qt_GraphicsExportGetCompressionMethod, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, long compressionMethod)")}, - {"GraphicsExportSetCompressionQuality", (PyCFunction)Qt_GraphicsExportSetCompressionQuality, 1, - PyDoc_STR("(GraphicsExportComponent ci, CodecQ spatialQuality) -> (ComponentResult _rv)")}, - {"GraphicsExportGetCompressionQuality", (PyCFunction)Qt_GraphicsExportGetCompressionQuality, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, CodecQ spatialQuality)")}, - {"GraphicsExportSetResolution", (PyCFunction)Qt_GraphicsExportSetResolution, 1, - PyDoc_STR("(GraphicsExportComponent ci, Fixed horizontalResolution, Fixed verticalResolution) -> (ComponentResult _rv)")}, - {"GraphicsExportGetResolution", (PyCFunction)Qt_GraphicsExportGetResolution, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, Fixed horizontalResolution, Fixed verticalResolution)")}, - {"GraphicsExportSetDepth", (PyCFunction)Qt_GraphicsExportSetDepth, 1, - PyDoc_STR("(GraphicsExportComponent ci, long depth) -> (ComponentResult _rv)")}, - {"GraphicsExportGetDepth", (PyCFunction)Qt_GraphicsExportGetDepth, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, long depth)")}, - {"GraphicsExportSetColorSyncProfile", (PyCFunction)Qt_GraphicsExportSetColorSyncProfile, 1, - PyDoc_STR("(GraphicsExportComponent ci, Handle colorSyncProfile) -> (ComponentResult _rv)")}, - {"GraphicsExportGetColorSyncProfile", (PyCFunction)Qt_GraphicsExportGetColorSyncProfile, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, Handle colorSyncProfile)")}, - {"GraphicsExportSetInputDataReference", (PyCFunction)Qt_GraphicsExportSetInputDataReference, 1, - PyDoc_STR("(GraphicsExportComponent ci, Handle dataRef, OSType dataRefType, ImageDescriptionHandle desc) -> (ComponentResult _rv)")}, - {"GraphicsExportGetInputDataReference", (PyCFunction)Qt_GraphicsExportGetInputDataReference, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, Handle dataRef, OSType dataRefType)")}, - {"GraphicsExportSetInputFile", (PyCFunction)Qt_GraphicsExportSetInputFile, 1, - PyDoc_STR("(GraphicsExportComponent ci, FSSpec theFile, ImageDescriptionHandle desc) -> (ComponentResult _rv)")}, - {"GraphicsExportGetInputFile", (PyCFunction)Qt_GraphicsExportGetInputFile, 1, - PyDoc_STR("(GraphicsExportComponent ci, FSSpec theFile) -> (ComponentResult _rv)")}, - {"GraphicsExportSetInputHandle", (PyCFunction)Qt_GraphicsExportSetInputHandle, 1, - PyDoc_STR("(GraphicsExportComponent ci, Handle h, ImageDescriptionHandle desc) -> (ComponentResult _rv)")}, - {"GraphicsExportGetInputHandle", (PyCFunction)Qt_GraphicsExportGetInputHandle, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, Handle h)")}, - {"GraphicsExportSetInputPtr", (PyCFunction)Qt_GraphicsExportSetInputPtr, 1, - PyDoc_STR("(GraphicsExportComponent ci, Ptr p, unsigned long size, ImageDescriptionHandle desc) -> (ComponentResult _rv)")}, - {"GraphicsExportSetInputGraphicsImporter", (PyCFunction)Qt_GraphicsExportSetInputGraphicsImporter, 1, - PyDoc_STR("(GraphicsExportComponent ci, GraphicsImportComponent grip) -> (ComponentResult _rv)")}, - {"GraphicsExportGetInputGraphicsImporter", (PyCFunction)Qt_GraphicsExportGetInputGraphicsImporter, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, GraphicsImportComponent grip)")}, - {"GraphicsExportSetInputPicture", (PyCFunction)Qt_GraphicsExportSetInputPicture, 1, - PyDoc_STR("(GraphicsExportComponent ci, PicHandle picture) -> (ComponentResult _rv)")}, - {"GraphicsExportGetInputPicture", (PyCFunction)Qt_GraphicsExportGetInputPicture, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, PicHandle picture)")}, - {"GraphicsExportSetInputGWorld", (PyCFunction)Qt_GraphicsExportSetInputGWorld, 1, - PyDoc_STR("(GraphicsExportComponent ci, GWorldPtr gworld) -> (ComponentResult _rv)")}, - {"GraphicsExportGetInputGWorld", (PyCFunction)Qt_GraphicsExportGetInputGWorld, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, GWorldPtr gworld)")}, - {"GraphicsExportSetInputPixmap", (PyCFunction)Qt_GraphicsExportSetInputPixmap, 1, - PyDoc_STR("(GraphicsExportComponent ci, PixMapHandle pixmap) -> (ComponentResult _rv)")}, - {"GraphicsExportGetInputPixmap", (PyCFunction)Qt_GraphicsExportGetInputPixmap, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, PixMapHandle pixmap)")}, - {"GraphicsExportSetInputOffsetAndLimit", (PyCFunction)Qt_GraphicsExportSetInputOffsetAndLimit, 1, - PyDoc_STR("(GraphicsExportComponent ci, unsigned long offset, unsigned long limit) -> (ComponentResult _rv)")}, - {"GraphicsExportGetInputOffsetAndLimit", (PyCFunction)Qt_GraphicsExportGetInputOffsetAndLimit, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, unsigned long offset, unsigned long limit)")}, - {"GraphicsExportMayExporterReadInputData", (PyCFunction)Qt_GraphicsExportMayExporterReadInputData, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, Boolean mayReadInputData)")}, - {"GraphicsExportGetInputDataSize", (PyCFunction)Qt_GraphicsExportGetInputDataSize, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, unsigned long size)")}, - {"GraphicsExportReadInputData", (PyCFunction)Qt_GraphicsExportReadInputData, 1, - PyDoc_STR("(GraphicsExportComponent ci, void * dataPtr, unsigned long dataOffset, unsigned long dataSize) -> (ComponentResult _rv)")}, - {"GraphicsExportGetInputImageDescription", (PyCFunction)Qt_GraphicsExportGetInputImageDescription, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, ImageDescriptionHandle desc)")}, - {"GraphicsExportGetInputImageDimensions", (PyCFunction)Qt_GraphicsExportGetInputImageDimensions, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, Rect dimensions)")}, - {"GraphicsExportGetInputImageDepth", (PyCFunction)Qt_GraphicsExportGetInputImageDepth, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, long inputDepth)")}, - {"GraphicsExportDrawInputImage", (PyCFunction)Qt_GraphicsExportDrawInputImage, 1, - PyDoc_STR("(GraphicsExportComponent ci, CGrafPtr gw, GDHandle gd, Rect srcRect, Rect dstRect) -> (ComponentResult _rv)")}, - {"GraphicsExportSetOutputDataReference", (PyCFunction)Qt_GraphicsExportSetOutputDataReference, 1, - PyDoc_STR("(GraphicsExportComponent ci, Handle dataRef, OSType dataRefType) -> (ComponentResult _rv)")}, - {"GraphicsExportGetOutputDataReference", (PyCFunction)Qt_GraphicsExportGetOutputDataReference, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, Handle dataRef, OSType dataRefType)")}, - {"GraphicsExportSetOutputFile", (PyCFunction)Qt_GraphicsExportSetOutputFile, 1, - PyDoc_STR("(GraphicsExportComponent ci, FSSpec theFile) -> (ComponentResult _rv)")}, - {"GraphicsExportGetOutputFile", (PyCFunction)Qt_GraphicsExportGetOutputFile, 1, - PyDoc_STR("(GraphicsExportComponent ci, FSSpec theFile) -> (ComponentResult _rv)")}, - {"GraphicsExportSetOutputHandle", (PyCFunction)Qt_GraphicsExportSetOutputHandle, 1, - PyDoc_STR("(GraphicsExportComponent ci, Handle h) -> (ComponentResult _rv)")}, - {"GraphicsExportGetOutputHandle", (PyCFunction)Qt_GraphicsExportGetOutputHandle, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, Handle h)")}, - {"GraphicsExportSetOutputOffsetAndMaxSize", (PyCFunction)Qt_GraphicsExportSetOutputOffsetAndMaxSize, 1, - PyDoc_STR("(GraphicsExportComponent ci, unsigned long offset, unsigned long maxSize, Boolean truncateFile) -> (ComponentResult _rv)")}, - {"GraphicsExportGetOutputOffsetAndMaxSize", (PyCFunction)Qt_GraphicsExportGetOutputOffsetAndMaxSize, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, unsigned long offset, unsigned long maxSize, Boolean truncateFile)")}, - {"GraphicsExportSetOutputFileTypeAndCreator", (PyCFunction)Qt_GraphicsExportSetOutputFileTypeAndCreator, 1, - PyDoc_STR("(GraphicsExportComponent ci, OSType fileType, OSType fileCreator) -> (ComponentResult _rv)")}, - {"GraphicsExportGetOutputFileTypeAndCreator", (PyCFunction)Qt_GraphicsExportGetOutputFileTypeAndCreator, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, OSType fileType, OSType fileCreator)")}, - {"GraphicsExportSetOutputMark", (PyCFunction)Qt_GraphicsExportSetOutputMark, 1, - PyDoc_STR("(GraphicsExportComponent ci, unsigned long mark) -> (ComponentResult _rv)")}, - {"GraphicsExportGetOutputMark", (PyCFunction)Qt_GraphicsExportGetOutputMark, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, unsigned long mark)")}, - {"GraphicsExportReadOutputData", (PyCFunction)Qt_GraphicsExportReadOutputData, 1, - PyDoc_STR("(GraphicsExportComponent ci, void * dataPtr, unsigned long dataOffset, unsigned long dataSize) -> (ComponentResult _rv)")}, - {"GraphicsExportSetThumbnailEnabled", (PyCFunction)Qt_GraphicsExportSetThumbnailEnabled, 1, - PyDoc_STR("(GraphicsExportComponent ci, Boolean enableThumbnail, long maxThumbnailWidth, long maxThumbnailHeight) -> (ComponentResult _rv)")}, - {"GraphicsExportGetThumbnailEnabled", (PyCFunction)Qt_GraphicsExportGetThumbnailEnabled, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, Boolean thumbnailEnabled, long maxThumbnailWidth, long maxThumbnailHeight)")}, - {"GraphicsExportSetExifEnabled", (PyCFunction)Qt_GraphicsExportSetExifEnabled, 1, - PyDoc_STR("(GraphicsExportComponent ci, Boolean enableExif) -> (ComponentResult _rv)")}, - {"GraphicsExportGetExifEnabled", (PyCFunction)Qt_GraphicsExportGetExifEnabled, 1, - PyDoc_STR("(GraphicsExportComponent ci) -> (ComponentResult _rv, Boolean exifEnabled)")}, - {"ImageTranscoderBeginSequence", (PyCFunction)Qt_ImageTranscoderBeginSequence, 1, - PyDoc_STR("(ImageTranscoderComponent itc, ImageDescriptionHandle srcDesc, void * data, long dataSize) -> (ComponentResult _rv, ImageDescriptionHandle dstDesc)")}, - {"ImageTranscoderDisposeData", (PyCFunction)Qt_ImageTranscoderDisposeData, 1, - PyDoc_STR("(ImageTranscoderComponent itc, void * dstData) -> (ComponentResult _rv)")}, - {"ImageTranscoderEndSequence", (PyCFunction)Qt_ImageTranscoderEndSequence, 1, - PyDoc_STR("(ImageTranscoderComponent itc) -> (ComponentResult _rv)")}, - {"ClockGetTime", (PyCFunction)Qt_ClockGetTime, 1, - PyDoc_STR("(ComponentInstance aClock) -> (ComponentResult _rv, TimeRecord out)")}, - {"ClockSetTimeBase", (PyCFunction)Qt_ClockSetTimeBase, 1, - PyDoc_STR("(ComponentInstance aClock, TimeBase tb) -> (ComponentResult _rv)")}, - {"ClockGetRate", (PyCFunction)Qt_ClockGetRate, 1, - PyDoc_STR("(ComponentInstance aClock) -> (ComponentResult _rv, Fixed rate)")}, - {"SCPositionRect", (PyCFunction)Qt_SCPositionRect, 1, - PyDoc_STR("(ComponentInstance ci) -> (ComponentResult _rv, Rect rp, Point where)")}, - {"SCPositionDialog", (PyCFunction)Qt_SCPositionDialog, 1, - PyDoc_STR("(ComponentInstance ci, short id) -> (ComponentResult _rv, Point where)")}, - {"SCSetTestImagePictHandle", (PyCFunction)Qt_SCSetTestImagePictHandle, 1, - PyDoc_STR("(ComponentInstance ci, PicHandle testPict, short testFlags) -> (ComponentResult _rv, Rect testRect)")}, - {"SCSetTestImagePictFile", (PyCFunction)Qt_SCSetTestImagePictFile, 1, - PyDoc_STR("(ComponentInstance ci, short testFileRef, short testFlags) -> (ComponentResult _rv, Rect testRect)")}, - {"SCSetTestImagePixMap", (PyCFunction)Qt_SCSetTestImagePixMap, 1, - PyDoc_STR("(ComponentInstance ci, PixMapHandle testPixMap, short testFlags) -> (ComponentResult _rv, Rect testRect)")}, - {"SCGetBestDeviceRect", (PyCFunction)Qt_SCGetBestDeviceRect, 1, - PyDoc_STR("(ComponentInstance ci) -> (ComponentResult _rv, Rect r)")}, - {"SCRequestImageSettings", (PyCFunction)Qt_SCRequestImageSettings, 1, - PyDoc_STR("(ComponentInstance ci) -> (ComponentResult _rv)")}, - {"SCCompressImage", (PyCFunction)Qt_SCCompressImage, 1, - PyDoc_STR("(ComponentInstance ci, PixMapHandle src, Rect srcRect) -> (ComponentResult _rv, ImageDescriptionHandle desc, Handle data)")}, - {"SCCompressPicture", (PyCFunction)Qt_SCCompressPicture, 1, - PyDoc_STR("(ComponentInstance ci, PicHandle srcPicture, PicHandle dstPicture) -> (ComponentResult _rv)")}, - {"SCCompressPictureFile", (PyCFunction)Qt_SCCompressPictureFile, 1, - PyDoc_STR("(ComponentInstance ci, short srcRefNum, short dstRefNum) -> (ComponentResult _rv)")}, - {"SCRequestSequenceSettings", (PyCFunction)Qt_SCRequestSequenceSettings, 1, - PyDoc_STR("(ComponentInstance ci) -> (ComponentResult _rv)")}, - {"SCCompressSequenceBegin", (PyCFunction)Qt_SCCompressSequenceBegin, 1, - PyDoc_STR("(ComponentInstance ci, PixMapHandle src, Rect srcRect) -> (ComponentResult _rv, ImageDescriptionHandle desc)")}, - {"SCCompressSequenceFrame", (PyCFunction)Qt_SCCompressSequenceFrame, 1, - PyDoc_STR("(ComponentInstance ci, PixMapHandle src, Rect srcRect) -> (ComponentResult _rv, Handle data, long dataSize, short notSyncFlag)")}, - {"SCCompressSequenceEnd", (PyCFunction)Qt_SCCompressSequenceEnd, 1, - PyDoc_STR("(ComponentInstance ci) -> (ComponentResult _rv)")}, - {"SCDefaultPictHandleSettings", (PyCFunction)Qt_SCDefaultPictHandleSettings, 1, - PyDoc_STR("(ComponentInstance ci, PicHandle srcPicture, short motion) -> (ComponentResult _rv)")}, - {"SCDefaultPictFileSettings", (PyCFunction)Qt_SCDefaultPictFileSettings, 1, - PyDoc_STR("(ComponentInstance ci, short srcRef, short motion) -> (ComponentResult _rv)")}, - {"SCDefaultPixMapSettings", (PyCFunction)Qt_SCDefaultPixMapSettings, 1, - PyDoc_STR("(ComponentInstance ci, PixMapHandle src, short motion) -> (ComponentResult _rv)")}, - {"SCGetInfo", (PyCFunction)Qt_SCGetInfo, 1, - PyDoc_STR("(ComponentInstance ci, OSType infoType, void * info) -> (ComponentResult _rv)")}, - {"SCSetInfo", (PyCFunction)Qt_SCSetInfo, 1, - PyDoc_STR("(ComponentInstance ci, OSType infoType, void * info) -> (ComponentResult _rv)")}, - {"SCSetCompressFlags", (PyCFunction)Qt_SCSetCompressFlags, 1, - PyDoc_STR("(ComponentInstance ci, long flags) -> (ComponentResult _rv)")}, - {"SCGetCompressFlags", (PyCFunction)Qt_SCGetCompressFlags, 1, - PyDoc_STR("(ComponentInstance ci) -> (ComponentResult _rv, long flags)")}, - {"SCGetSettingsAsText", (PyCFunction)Qt_SCGetSettingsAsText, 1, - PyDoc_STR("(ComponentInstance ci) -> (ComponentResult _rv, Handle text)")}, - {"SCAsyncIdle", (PyCFunction)Qt_SCAsyncIdle, 1, - PyDoc_STR("(ComponentInstance ci) -> (ComponentResult _rv)")}, - {"TweenerReset", (PyCFunction)Qt_TweenerReset, 1, - PyDoc_STR("(TweenerComponent tc) -> (ComponentResult _rv)")}, - {"TCGetSourceRef", (PyCFunction)Qt_TCGetSourceRef, 1, - PyDoc_STR("(MediaHandler mh, TimeCodeDescriptionHandle tcdH) -> (HandlerError _rv, UserData srefH)")}, - {"TCSetSourceRef", (PyCFunction)Qt_TCSetSourceRef, 1, - PyDoc_STR("(MediaHandler mh, TimeCodeDescriptionHandle tcdH, UserData srefH) -> (HandlerError _rv)")}, - {"TCSetTimeCodeFlags", (PyCFunction)Qt_TCSetTimeCodeFlags, 1, - PyDoc_STR("(MediaHandler mh, long flags, long flagsMask) -> (HandlerError _rv)")}, - {"TCGetTimeCodeFlags", (PyCFunction)Qt_TCGetTimeCodeFlags, 1, - PyDoc_STR("(MediaHandler mh) -> (HandlerError _rv, long flags)")}, - {"MovieImportHandle", (PyCFunction)Qt_MovieImportHandle, 1, - PyDoc_STR("(MovieImportComponent ci, Handle dataH, Movie theMovie, Track targetTrack, TimeValue atTime, long inFlags) -> (ComponentResult _rv, Track usedTrack, TimeValue addedDuration, long outFlags)")}, - {"MovieImportFile", (PyCFunction)Qt_MovieImportFile, 1, - PyDoc_STR("(MovieImportComponent ci, FSSpec theFile, Movie theMovie, Track targetTrack, TimeValue atTime, long inFlags) -> (ComponentResult _rv, Track usedTrack, TimeValue addedDuration, long outFlags)")}, - {"MovieImportSetSampleDuration", (PyCFunction)Qt_MovieImportSetSampleDuration, 1, - PyDoc_STR("(MovieImportComponent ci, TimeValue duration, TimeScale scale) -> (ComponentResult _rv)")}, - {"MovieImportSetSampleDescription", (PyCFunction)Qt_MovieImportSetSampleDescription, 1, - PyDoc_STR("(MovieImportComponent ci, SampleDescriptionHandle desc, OSType mediaType) -> (ComponentResult _rv)")}, - {"MovieImportSetMediaFile", (PyCFunction)Qt_MovieImportSetMediaFile, 1, - PyDoc_STR("(MovieImportComponent ci, AliasHandle alias) -> (ComponentResult _rv)")}, - {"MovieImportSetDimensions", (PyCFunction)Qt_MovieImportSetDimensions, 1, - PyDoc_STR("(MovieImportComponent ci, Fixed width, Fixed height) -> (ComponentResult _rv)")}, - {"MovieImportSetChunkSize", (PyCFunction)Qt_MovieImportSetChunkSize, 1, - PyDoc_STR("(MovieImportComponent ci, long chunkSize) -> (ComponentResult _rv)")}, - {"MovieImportSetAuxiliaryData", (PyCFunction)Qt_MovieImportSetAuxiliaryData, 1, - PyDoc_STR("(MovieImportComponent ci, Handle data, OSType handleType) -> (ComponentResult _rv)")}, - {"MovieImportSetFromScrap", (PyCFunction)Qt_MovieImportSetFromScrap, 1, - PyDoc_STR("(MovieImportComponent ci, Boolean fromScrap) -> (ComponentResult _rv)")}, - {"MovieImportDoUserDialog", (PyCFunction)Qt_MovieImportDoUserDialog, 1, - PyDoc_STR("(MovieImportComponent ci, FSSpec theFile, Handle theData) -> (ComponentResult _rv, Boolean canceled)")}, - {"MovieImportSetDuration", (PyCFunction)Qt_MovieImportSetDuration, 1, - PyDoc_STR("(MovieImportComponent ci, TimeValue duration) -> (ComponentResult _rv)")}, - {"MovieImportGetAuxiliaryDataType", (PyCFunction)Qt_MovieImportGetAuxiliaryDataType, 1, - PyDoc_STR("(MovieImportComponent ci) -> (ComponentResult _rv, OSType auxType)")}, - {"MovieImportValidate", (PyCFunction)Qt_MovieImportValidate, 1, - PyDoc_STR("(MovieImportComponent ci, FSSpec theFile, Handle theData) -> (ComponentResult _rv, Boolean valid)")}, - {"MovieImportGetFileType", (PyCFunction)Qt_MovieImportGetFileType, 1, - PyDoc_STR("(MovieImportComponent ci) -> (ComponentResult _rv, OSType fileType)")}, - {"MovieImportDataRef", (PyCFunction)Qt_MovieImportDataRef, 1, - PyDoc_STR("(MovieImportComponent ci, Handle dataRef, OSType dataRefType, Movie theMovie, Track targetTrack, TimeValue atTime, long inFlags) -> (ComponentResult _rv, Track usedTrack, TimeValue addedDuration, long outFlags)")}, - {"MovieImportGetSampleDescription", (PyCFunction)Qt_MovieImportGetSampleDescription, 1, - PyDoc_STR("(MovieImportComponent ci) -> (ComponentResult _rv, SampleDescriptionHandle desc, OSType mediaType)")}, - {"MovieImportSetOffsetAndLimit", (PyCFunction)Qt_MovieImportSetOffsetAndLimit, 1, - PyDoc_STR("(MovieImportComponent ci, unsigned long offset, unsigned long limit) -> (ComponentResult _rv)")}, - {"MovieImportSetOffsetAndLimit64", (PyCFunction)Qt_MovieImportSetOffsetAndLimit64, 1, - PyDoc_STR("(MovieImportComponent ci, wide offset, wide limit) -> (ComponentResult _rv)")}, - {"MovieImportIdle", (PyCFunction)Qt_MovieImportIdle, 1, - PyDoc_STR("(MovieImportComponent ci, long inFlags) -> (ComponentResult _rv, long outFlags)")}, - {"MovieImportValidateDataRef", (PyCFunction)Qt_MovieImportValidateDataRef, 1, - PyDoc_STR("(MovieImportComponent ci, Handle dataRef, OSType dataRefType) -> (ComponentResult _rv, UInt8 valid)")}, - {"MovieImportGetLoadState", (PyCFunction)Qt_MovieImportGetLoadState, 1, - PyDoc_STR("(MovieImportComponent ci) -> (ComponentResult _rv, long importerLoadState)")}, - {"MovieImportGetMaxLoadedTime", (PyCFunction)Qt_MovieImportGetMaxLoadedTime, 1, - PyDoc_STR("(MovieImportComponent ci) -> (ComponentResult _rv, TimeValue time)")}, - {"MovieImportEstimateCompletionTime", (PyCFunction)Qt_MovieImportEstimateCompletionTime, 1, - PyDoc_STR("(MovieImportComponent ci) -> (ComponentResult _rv, TimeRecord time)")}, - {"MovieImportSetDontBlock", (PyCFunction)Qt_MovieImportSetDontBlock, 1, - PyDoc_STR("(MovieImportComponent ci, Boolean dontBlock) -> (ComponentResult _rv)")}, - {"MovieImportGetDontBlock", (PyCFunction)Qt_MovieImportGetDontBlock, 1, - PyDoc_STR("(MovieImportComponent ci) -> (ComponentResult _rv, Boolean willBlock)")}, - {"MovieImportSetIdleManager", (PyCFunction)Qt_MovieImportSetIdleManager, 1, - PyDoc_STR("(MovieImportComponent ci, IdleManager im) -> (ComponentResult _rv)")}, - {"MovieImportSetNewMovieFlags", (PyCFunction)Qt_MovieImportSetNewMovieFlags, 1, - PyDoc_STR("(MovieImportComponent ci, long newMovieFlags) -> (ComponentResult _rv)")}, - {"MovieImportGetDestinationMediaType", (PyCFunction)Qt_MovieImportGetDestinationMediaType, 1, - PyDoc_STR("(MovieImportComponent ci) -> (ComponentResult _rv, OSType mediaType)")}, - {"MovieExportToHandle", (PyCFunction)Qt_MovieExportToHandle, 1, - PyDoc_STR("(MovieExportComponent ci, Handle dataH, Movie theMovie, Track onlyThisTrack, TimeValue startTime, TimeValue duration) -> (ComponentResult _rv)")}, - {"MovieExportToFile", (PyCFunction)Qt_MovieExportToFile, 1, - PyDoc_STR("(MovieExportComponent ci, FSSpec theFile, Movie theMovie, Track onlyThisTrack, TimeValue startTime, TimeValue duration) -> (ComponentResult _rv)")}, - {"MovieExportGetAuxiliaryData", (PyCFunction)Qt_MovieExportGetAuxiliaryData, 1, - PyDoc_STR("(MovieExportComponent ci, Handle dataH) -> (ComponentResult _rv, OSType handleType)")}, - {"MovieExportSetSampleDescription", (PyCFunction)Qt_MovieExportSetSampleDescription, 1, - PyDoc_STR("(MovieExportComponent ci, SampleDescriptionHandle desc, OSType mediaType) -> (ComponentResult _rv)")}, - {"MovieExportDoUserDialog", (PyCFunction)Qt_MovieExportDoUserDialog, 1, - PyDoc_STR("(MovieExportComponent ci, Movie theMovie, Track onlyThisTrack, TimeValue startTime, TimeValue duration) -> (ComponentResult _rv, Boolean canceled)")}, - {"MovieExportGetCreatorType", (PyCFunction)Qt_MovieExportGetCreatorType, 1, - PyDoc_STR("(MovieExportComponent ci) -> (ComponentResult _rv, OSType creator)")}, - {"MovieExportToDataRef", (PyCFunction)Qt_MovieExportToDataRef, 1, - PyDoc_STR("(MovieExportComponent ci, Handle dataRef, OSType dataRefType, Movie theMovie, Track onlyThisTrack, TimeValue startTime, TimeValue duration) -> (ComponentResult _rv)")}, - {"MovieExportFromProceduresToDataRef", (PyCFunction)Qt_MovieExportFromProceduresToDataRef, 1, - PyDoc_STR("(MovieExportComponent ci, Handle dataRef, OSType dataRefType) -> (ComponentResult _rv)")}, - {"MovieExportValidate", (PyCFunction)Qt_MovieExportValidate, 1, - PyDoc_STR("(MovieExportComponent ci, Movie theMovie, Track onlyThisTrack) -> (ComponentResult _rv, Boolean valid)")}, - {"MovieExportGetFileNameExtension", (PyCFunction)Qt_MovieExportGetFileNameExtension, 1, - PyDoc_STR("(MovieExportComponent ci) -> (ComponentResult _rv, OSType extension)")}, - {"MovieExportGetShortFileTypeString", (PyCFunction)Qt_MovieExportGetShortFileTypeString, 1, - PyDoc_STR("(MovieExportComponent ci, Str255 typeString) -> (ComponentResult _rv)")}, - {"MovieExportGetSourceMediaType", (PyCFunction)Qt_MovieExportGetSourceMediaType, 1, - PyDoc_STR("(MovieExportComponent ci) -> (ComponentResult _rv, OSType mediaType)")}, - {"TextExportGetTimeFraction", (PyCFunction)Qt_TextExportGetTimeFraction, 1, - PyDoc_STR("(TextExportComponent ci) -> (ComponentResult _rv, long movieTimeFraction)")}, - {"TextExportSetTimeFraction", (PyCFunction)Qt_TextExportSetTimeFraction, 1, - PyDoc_STR("(TextExportComponent ci, long movieTimeFraction) -> (ComponentResult _rv)")}, - {"TextExportGetSettings", (PyCFunction)Qt_TextExportGetSettings, 1, - PyDoc_STR("(TextExportComponent ci) -> (ComponentResult _rv, long setting)")}, - {"TextExportSetSettings", (PyCFunction)Qt_TextExportSetSettings, 1, - PyDoc_STR("(TextExportComponent ci, long setting) -> (ComponentResult _rv)")}, - {"MIDIImportGetSettings", (PyCFunction)Qt_MIDIImportGetSettings, 1, - PyDoc_STR("(TextExportComponent ci) -> (ComponentResult _rv, long setting)")}, - {"MIDIImportSetSettings", (PyCFunction)Qt_MIDIImportSetSettings, 1, - PyDoc_STR("(TextExportComponent ci, long setting) -> (ComponentResult _rv)")}, - {"GraphicsImageImportSetSequenceEnabled", (PyCFunction)Qt_GraphicsImageImportSetSequenceEnabled, 1, - PyDoc_STR("(GraphicImageMovieImportComponent ci, Boolean enable) -> (ComponentResult _rv)")}, - {"GraphicsImageImportGetSequenceEnabled", (PyCFunction)Qt_GraphicsImageImportGetSequenceEnabled, 1, - PyDoc_STR("(GraphicImageMovieImportComponent ci) -> (ComponentResult _rv, Boolean enable)")}, - {"PreviewShowData", (PyCFunction)Qt_PreviewShowData, 1, - PyDoc_STR("(pnotComponent p, OSType dataType, Handle data, Rect inHere) -> (ComponentResult _rv)")}, - {"PreviewMakePreviewReference", (PyCFunction)Qt_PreviewMakePreviewReference, 1, - PyDoc_STR("(pnotComponent p, FSSpec sourceFile) -> (ComponentResult _rv, OSType previewType, short resID)")}, - {"PreviewEvent", (PyCFunction)Qt_PreviewEvent, 1, - PyDoc_STR("(pnotComponent p) -> (ComponentResult _rv, EventRecord e, Boolean handledEvent)")}, - {"DataCodecDecompress", (PyCFunction)Qt_DataCodecDecompress, 1, - PyDoc_STR("(DataCodecComponent dc, void * srcData, UInt32 srcSize, void * dstData, UInt32 dstBufferSize) -> (ComponentResult _rv)")}, - {"DataCodecGetCompressBufferSize", (PyCFunction)Qt_DataCodecGetCompressBufferSize, 1, - PyDoc_STR("(DataCodecComponent dc, UInt32 srcSize) -> (ComponentResult _rv, UInt32 dstSize)")}, - {"DataCodecCompress", (PyCFunction)Qt_DataCodecCompress, 1, - PyDoc_STR("(DataCodecComponent dc, void * srcData, UInt32 srcSize, void * dstData, UInt32 dstBufferSize) -> (ComponentResult _rv, UInt32 actualDstSize, UInt32 decompressSlop)")}, - {"DataCodecBeginInterruptSafe", (PyCFunction)Qt_DataCodecBeginInterruptSafe, 1, - PyDoc_STR("(DataCodecComponent dc, unsigned long maxSrcSize) -> (ComponentResult _rv)")}, - {"DataCodecEndInterruptSafe", (PyCFunction)Qt_DataCodecEndInterruptSafe, 1, - PyDoc_STR("(DataCodecComponent dc) -> (ComponentResult _rv)")}, - {"DataHGetData", (PyCFunction)Qt_DataHGetData, 1, - PyDoc_STR("(DataHandler dh, Handle h, long hOffset, long offset, long size) -> (ComponentResult _rv)")}, - {"DataHPutData", (PyCFunction)Qt_DataHPutData, 1, - PyDoc_STR("(DataHandler dh, Handle h, long hOffset, long size) -> (ComponentResult _rv, long offset)")}, - {"DataHFlushData", (PyCFunction)Qt_DataHFlushData, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv)")}, - {"DataHOpenForWrite", (PyCFunction)Qt_DataHOpenForWrite, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv)")}, - {"DataHCloseForWrite", (PyCFunction)Qt_DataHCloseForWrite, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv)")}, - {"DataHOpenForRead", (PyCFunction)Qt_DataHOpenForRead, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv)")}, - {"DataHCloseForRead", (PyCFunction)Qt_DataHCloseForRead, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv)")}, - {"DataHSetDataRef", (PyCFunction)Qt_DataHSetDataRef, 1, - PyDoc_STR("(DataHandler dh, Handle dataRef) -> (ComponentResult _rv)")}, - {"DataHGetDataRef", (PyCFunction)Qt_DataHGetDataRef, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, Handle dataRef)")}, - {"DataHCompareDataRef", (PyCFunction)Qt_DataHCompareDataRef, 1, - PyDoc_STR("(DataHandler dh, Handle dataRef) -> (ComponentResult _rv, Boolean equal)")}, - {"DataHTask", (PyCFunction)Qt_DataHTask, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv)")}, - {"DataHFinishData", (PyCFunction)Qt_DataHFinishData, 1, - PyDoc_STR("(DataHandler dh, Ptr PlaceToPutDataPtr, Boolean Cancel) -> (ComponentResult _rv)")}, - {"DataHFlushCache", (PyCFunction)Qt_DataHFlushCache, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv)")}, - {"DataHResolveDataRef", (PyCFunction)Qt_DataHResolveDataRef, 1, - PyDoc_STR("(DataHandler dh, Handle theDataRef, Boolean userInterfaceAllowed) -> (ComponentResult _rv, Boolean wasChanged)")}, - {"DataHGetFileSize", (PyCFunction)Qt_DataHGetFileSize, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, long fileSize)")}, - {"DataHCanUseDataRef", (PyCFunction)Qt_DataHCanUseDataRef, 1, - PyDoc_STR("(DataHandler dh, Handle dataRef) -> (ComponentResult _rv, long useFlags)")}, - {"DataHPreextend", (PyCFunction)Qt_DataHPreextend, 1, - PyDoc_STR("(DataHandler dh, unsigned long maxToAdd) -> (ComponentResult _rv, unsigned long spaceAdded)")}, - {"DataHSetFileSize", (PyCFunction)Qt_DataHSetFileSize, 1, - PyDoc_STR("(DataHandler dh, long fileSize) -> (ComponentResult _rv)")}, - {"DataHGetFreeSpace", (PyCFunction)Qt_DataHGetFreeSpace, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, unsigned long freeSize)")}, - {"DataHCreateFile", (PyCFunction)Qt_DataHCreateFile, 1, - PyDoc_STR("(DataHandler dh, OSType creator, Boolean deleteExisting) -> (ComponentResult _rv)")}, - {"DataHGetPreferredBlockSize", (PyCFunction)Qt_DataHGetPreferredBlockSize, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, long blockSize)")}, - {"DataHGetDeviceIndex", (PyCFunction)Qt_DataHGetDeviceIndex, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, long deviceIndex)")}, - {"DataHIsStreamingDataHandler", (PyCFunction)Qt_DataHIsStreamingDataHandler, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, Boolean yes)")}, - {"DataHGetDataInBuffer", (PyCFunction)Qt_DataHGetDataInBuffer, 1, - PyDoc_STR("(DataHandler dh, long startOffset) -> (ComponentResult _rv, long size)")}, - {"DataHGetScheduleAheadTime", (PyCFunction)Qt_DataHGetScheduleAheadTime, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, long millisecs)")}, - {"DataHSetCacheSizeLimit", (PyCFunction)Qt_DataHSetCacheSizeLimit, 1, - PyDoc_STR("(DataHandler dh, Size cacheSizeLimit) -> (ComponentResult _rv)")}, - {"DataHGetCacheSizeLimit", (PyCFunction)Qt_DataHGetCacheSizeLimit, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, Size cacheSizeLimit)")}, - {"DataHGetMovie", (PyCFunction)Qt_DataHGetMovie, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, Movie theMovie, short id)")}, - {"DataHAddMovie", (PyCFunction)Qt_DataHAddMovie, 1, - PyDoc_STR("(DataHandler dh, Movie theMovie) -> (ComponentResult _rv, short id)")}, - {"DataHUpdateMovie", (PyCFunction)Qt_DataHUpdateMovie, 1, - PyDoc_STR("(DataHandler dh, Movie theMovie, short id) -> (ComponentResult _rv)")}, - {"DataHDoesBuffer", (PyCFunction)Qt_DataHDoesBuffer, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, Boolean buffersReads, Boolean buffersWrites)")}, - {"DataHGetFileName", (PyCFunction)Qt_DataHGetFileName, 1, - PyDoc_STR("(DataHandler dh, Str255 str) -> (ComponentResult _rv)")}, - {"DataHGetAvailableFileSize", (PyCFunction)Qt_DataHGetAvailableFileSize, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, long fileSize)")}, - {"DataHGetMacOSFileType", (PyCFunction)Qt_DataHGetMacOSFileType, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, OSType fileType)")}, - {"DataHGetMIMEType", (PyCFunction)Qt_DataHGetMIMEType, 1, - PyDoc_STR("(DataHandler dh, Str255 mimeType) -> (ComponentResult _rv)")}, - {"DataHSetDataRefWithAnchor", (PyCFunction)Qt_DataHSetDataRefWithAnchor, 1, - PyDoc_STR("(DataHandler dh, Handle anchorDataRef, OSType dataRefType, Handle dataRef) -> (ComponentResult _rv)")}, - {"DataHGetDataRefWithAnchor", (PyCFunction)Qt_DataHGetDataRefWithAnchor, 1, - PyDoc_STR("(DataHandler dh, Handle anchorDataRef, OSType dataRefType) -> (ComponentResult _rv, Handle dataRef)")}, - {"DataHSetMacOSFileType", (PyCFunction)Qt_DataHSetMacOSFileType, 1, - PyDoc_STR("(DataHandler dh, OSType fileType) -> (ComponentResult _rv)")}, - {"DataHSetTimeBase", (PyCFunction)Qt_DataHSetTimeBase, 1, - PyDoc_STR("(DataHandler dh, TimeBase tb) -> (ComponentResult _rv)")}, - {"DataHGetInfoFlags", (PyCFunction)Qt_DataHGetInfoFlags, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, UInt32 flags)")}, - {"DataHGetFileSize64", (PyCFunction)Qt_DataHGetFileSize64, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, wide fileSize)")}, - {"DataHPreextend64", (PyCFunction)Qt_DataHPreextend64, 1, - PyDoc_STR("(DataHandler dh, wide maxToAdd) -> (ComponentResult _rv, wide spaceAdded)")}, - {"DataHSetFileSize64", (PyCFunction)Qt_DataHSetFileSize64, 1, - PyDoc_STR("(DataHandler dh, wide fileSize) -> (ComponentResult _rv)")}, - {"DataHGetFreeSpace64", (PyCFunction)Qt_DataHGetFreeSpace64, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, wide freeSize)")}, - {"DataHAppend64", (PyCFunction)Qt_DataHAppend64, 1, - PyDoc_STR("(DataHandler dh, void * data, unsigned long size) -> (ComponentResult _rv, wide fileOffset)")}, - {"DataHPollRead", (PyCFunction)Qt_DataHPollRead, 1, - PyDoc_STR("(DataHandler dh, void * dataPtr) -> (ComponentResult _rv, UInt32 dataSizeSoFar)")}, - {"DataHGetDataAvailability", (PyCFunction)Qt_DataHGetDataAvailability, 1, - PyDoc_STR("(DataHandler dh, long offset, long len) -> (ComponentResult _rv, long missing_offset, long missing_len)")}, - {"DataHGetDataRefAsType", (PyCFunction)Qt_DataHGetDataRefAsType, 1, - PyDoc_STR("(DataHandler dh, OSType requestedType) -> (ComponentResult _rv, Handle dataRef)")}, - {"DataHSetDataRefExtension", (PyCFunction)Qt_DataHSetDataRefExtension, 1, - PyDoc_STR("(DataHandler dh, Handle extension, OSType idType) -> (ComponentResult _rv)")}, - {"DataHGetDataRefExtension", (PyCFunction)Qt_DataHGetDataRefExtension, 1, - PyDoc_STR("(DataHandler dh, OSType idType) -> (ComponentResult _rv, Handle extension)")}, - {"DataHGetMovieWithFlags", (PyCFunction)Qt_DataHGetMovieWithFlags, 1, - PyDoc_STR("(DataHandler dh, short flags) -> (ComponentResult _rv, Movie theMovie, short id)")}, - {"DataHGetFileTypeOrdering", (PyCFunction)Qt_DataHGetFileTypeOrdering, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, DataHFileTypeOrderingHandle orderingListHandle)")}, - {"DataHCreateFileWithFlags", (PyCFunction)Qt_DataHCreateFileWithFlags, 1, - PyDoc_STR("(DataHandler dh, OSType creator, Boolean deleteExisting, UInt32 flags) -> (ComponentResult _rv)")}, - {"DataHGetInfo", (PyCFunction)Qt_DataHGetInfo, 1, - PyDoc_STR("(DataHandler dh, OSType what, void * info) -> (ComponentResult _rv)")}, - {"DataHSetIdleManager", (PyCFunction)Qt_DataHSetIdleManager, 1, - PyDoc_STR("(DataHandler dh, IdleManager im) -> (ComponentResult _rv)")}, - {"DataHDeleteFile", (PyCFunction)Qt_DataHDeleteFile, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv)")}, - {"DataHSetMovieUsageFlags", (PyCFunction)Qt_DataHSetMovieUsageFlags, 1, - PyDoc_STR("(DataHandler dh, long flags) -> (ComponentResult _rv)")}, - {"DataHUseTemporaryDataRef", (PyCFunction)Qt_DataHUseTemporaryDataRef, 1, - PyDoc_STR("(DataHandler dh, long inFlags) -> (ComponentResult _rv)")}, - {"DataHGetTemporaryDataRefCapabilities", (PyCFunction)Qt_DataHGetTemporaryDataRefCapabilities, 1, - PyDoc_STR("(DataHandler dh) -> (ComponentResult _rv, long outUnderstoodFlags)")}, - {"DataHRenameFile", (PyCFunction)Qt_DataHRenameFile, 1, - PyDoc_STR("(DataHandler dh, Handle newDataRef) -> (ComponentResult _rv)")}, - {"DataHPlaybackHints", (PyCFunction)Qt_DataHPlaybackHints, 1, - PyDoc_STR("(DataHandler dh, long flags, unsigned long minFileOffset, unsigned long maxFileOffset, long bytesPerSecond) -> (ComponentResult _rv)")}, - {"DataHPlaybackHints64", (PyCFunction)Qt_DataHPlaybackHints64, 1, - PyDoc_STR("(DataHandler dh, long flags, wide minFileOffset, wide maxFileOffset, long bytesPerSecond) -> (ComponentResult _rv)")}, - {"DataHGetDataRate", (PyCFunction)Qt_DataHGetDataRate, 1, - PyDoc_STR("(DataHandler dh, long flags) -> (ComponentResult _rv, long bytesPerSecond)")}, - {"DataHSetTimeHints", (PyCFunction)Qt_DataHSetTimeHints, 1, - PyDoc_STR("(DataHandler dh, long flags, long bandwidthPriority, TimeScale scale, TimeValue minTime, TimeValue maxTime) -> (ComponentResult _rv)")}, - {"VDGetMaxSrcRect", (PyCFunction)Qt_VDGetMaxSrcRect, 1, - PyDoc_STR("(VideoDigitizerComponent ci, short inputStd) -> (ComponentResult _rv, Rect maxSrcRect)")}, - {"VDGetActiveSrcRect", (PyCFunction)Qt_VDGetActiveSrcRect, 1, - PyDoc_STR("(VideoDigitizerComponent ci, short inputStd) -> (ComponentResult _rv, Rect activeSrcRect)")}, - {"VDSetDigitizerRect", (PyCFunction)Qt_VDSetDigitizerRect, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, Rect digitizerRect)")}, - {"VDGetDigitizerRect", (PyCFunction)Qt_VDGetDigitizerRect, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, Rect digitizerRect)")}, - {"VDGetVBlankRect", (PyCFunction)Qt_VDGetVBlankRect, 1, - PyDoc_STR("(VideoDigitizerComponent ci, short inputStd) -> (ComponentResult _rv, Rect vBlankRect)")}, - {"VDGetMaskPixMap", (PyCFunction)Qt_VDGetMaskPixMap, 1, - PyDoc_STR("(VideoDigitizerComponent ci, PixMapHandle maskPixMap) -> (ComponentResult _rv)")}, - {"VDUseThisCLUT", (PyCFunction)Qt_VDUseThisCLUT, 1, - PyDoc_STR("(VideoDigitizerComponent ci, CTabHandle colorTableHandle) -> (ComponentResult _rv)")}, - {"VDSetInputGammaValue", (PyCFunction)Qt_VDSetInputGammaValue, 1, - PyDoc_STR("(VideoDigitizerComponent ci, Fixed channel1, Fixed channel2, Fixed channel3) -> (ComponentResult _rv)")}, - {"VDGetInputGammaValue", (PyCFunction)Qt_VDGetInputGammaValue, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, Fixed channel1, Fixed channel2, Fixed channel3)")}, - {"VDSetBrightness", (PyCFunction)Qt_VDSetBrightness, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short brightness)")}, - {"VDGetBrightness", (PyCFunction)Qt_VDGetBrightness, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short brightness)")}, - {"VDSetContrast", (PyCFunction)Qt_VDSetContrast, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short contrast)")}, - {"VDSetHue", (PyCFunction)Qt_VDSetHue, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short hue)")}, - {"VDSetSharpness", (PyCFunction)Qt_VDSetSharpness, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short sharpness)")}, - {"VDSetSaturation", (PyCFunction)Qt_VDSetSaturation, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short saturation)")}, - {"VDGetContrast", (PyCFunction)Qt_VDGetContrast, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short contrast)")}, - {"VDGetHue", (PyCFunction)Qt_VDGetHue, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short hue)")}, - {"VDGetSharpness", (PyCFunction)Qt_VDGetSharpness, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short sharpness)")}, - {"VDGetSaturation", (PyCFunction)Qt_VDGetSaturation, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short saturation)")}, - {"VDGrabOneFrame", (PyCFunction)Qt_VDGrabOneFrame, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv)")}, - {"VDGetMaxAuxBuffer", (PyCFunction)Qt_VDGetMaxAuxBuffer, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, PixMapHandle pm, Rect r)")}, - {"VDGetCurrentFlags", (PyCFunction)Qt_VDGetCurrentFlags, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, long inputCurrentFlag, long outputCurrentFlag)")}, - {"VDSetKeyColor", (PyCFunction)Qt_VDSetKeyColor, 1, - PyDoc_STR("(VideoDigitizerComponent ci, long index) -> (ComponentResult _rv)")}, - {"VDGetKeyColor", (PyCFunction)Qt_VDGetKeyColor, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, long index)")}, - {"VDAddKeyColor", (PyCFunction)Qt_VDAddKeyColor, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, long index)")}, - {"VDGetNextKeyColor", (PyCFunction)Qt_VDGetNextKeyColor, 1, - PyDoc_STR("(VideoDigitizerComponent ci, long index) -> (ComponentResult _rv)")}, - {"VDSetKeyColorRange", (PyCFunction)Qt_VDSetKeyColorRange, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, RGBColor minRGB, RGBColor maxRGB)")}, - {"VDGetKeyColorRange", (PyCFunction)Qt_VDGetKeyColorRange, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, RGBColor minRGB, RGBColor maxRGB)")}, - {"VDSetInputColorSpaceMode", (PyCFunction)Qt_VDSetInputColorSpaceMode, 1, - PyDoc_STR("(VideoDigitizerComponent ci, short colorSpaceMode) -> (ComponentResult _rv)")}, - {"VDGetInputColorSpaceMode", (PyCFunction)Qt_VDGetInputColorSpaceMode, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, short colorSpaceMode)")}, - {"VDSetClipState", (PyCFunction)Qt_VDSetClipState, 1, - PyDoc_STR("(VideoDigitizerComponent ci, short clipEnable) -> (ComponentResult _rv)")}, - {"VDGetClipState", (PyCFunction)Qt_VDGetClipState, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, short clipEnable)")}, - {"VDSetClipRgn", (PyCFunction)Qt_VDSetClipRgn, 1, - PyDoc_STR("(VideoDigitizerComponent ci, RgnHandle clipRegion) -> (ComponentResult _rv)")}, - {"VDClearClipRgn", (PyCFunction)Qt_VDClearClipRgn, 1, - PyDoc_STR("(VideoDigitizerComponent ci, RgnHandle clipRegion) -> (ComponentResult _rv)")}, - {"VDGetCLUTInUse", (PyCFunction)Qt_VDGetCLUTInUse, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, CTabHandle colorTableHandle)")}, - {"VDSetPLLFilterType", (PyCFunction)Qt_VDSetPLLFilterType, 1, - PyDoc_STR("(VideoDigitizerComponent ci, short pllType) -> (ComponentResult _rv)")}, - {"VDGetPLLFilterType", (PyCFunction)Qt_VDGetPLLFilterType, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, short pllType)")}, - {"VDGetMaskandValue", (PyCFunction)Qt_VDGetMaskandValue, 1, - PyDoc_STR("(VideoDigitizerComponent ci, unsigned short blendLevel) -> (ComponentResult _rv, long mask, long value)")}, - {"VDSetMasterBlendLevel", (PyCFunction)Qt_VDSetMasterBlendLevel, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short blendLevel)")}, - {"VDSetPlayThruOnOff", (PyCFunction)Qt_VDSetPlayThruOnOff, 1, - PyDoc_STR("(VideoDigitizerComponent ci, short state) -> (ComponentResult _rv)")}, - {"VDSetFieldPreference", (PyCFunction)Qt_VDSetFieldPreference, 1, - PyDoc_STR("(VideoDigitizerComponent ci, short fieldFlag) -> (ComponentResult _rv)")}, - {"VDGetFieldPreference", (PyCFunction)Qt_VDGetFieldPreference, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, short fieldFlag)")}, - {"VDPreflightGlobalRect", (PyCFunction)Qt_VDPreflightGlobalRect, 1, - PyDoc_STR("(VideoDigitizerComponent ci, GrafPtr theWindow) -> (ComponentResult _rv, Rect globalRect)")}, - {"VDSetPlayThruGlobalRect", (PyCFunction)Qt_VDSetPlayThruGlobalRect, 1, - PyDoc_STR("(VideoDigitizerComponent ci, GrafPtr theWindow) -> (ComponentResult _rv, Rect globalRect)")}, - {"VDSetBlackLevelValue", (PyCFunction)Qt_VDSetBlackLevelValue, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short blackLevel)")}, - {"VDGetBlackLevelValue", (PyCFunction)Qt_VDGetBlackLevelValue, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short blackLevel)")}, - {"VDSetWhiteLevelValue", (PyCFunction)Qt_VDSetWhiteLevelValue, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short whiteLevel)")}, - {"VDGetWhiteLevelValue", (PyCFunction)Qt_VDGetWhiteLevelValue, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short whiteLevel)")}, - {"VDGetVideoDefaults", (PyCFunction)Qt_VDGetVideoDefaults, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, unsigned short blackLevel, unsigned short whiteLevel, unsigned short brightness, unsigned short hue, unsigned short saturation, unsigned short contrast, unsigned short sharpness)")}, - {"VDGetNumberOfInputs", (PyCFunction)Qt_VDGetNumberOfInputs, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, short inputs)")}, - {"VDGetInputFormat", (PyCFunction)Qt_VDGetInputFormat, 1, - PyDoc_STR("(VideoDigitizerComponent ci, short input) -> (ComponentResult _rv, short format)")}, - {"VDSetInput", (PyCFunction)Qt_VDSetInput, 1, - PyDoc_STR("(VideoDigitizerComponent ci, short input) -> (ComponentResult _rv)")}, - {"VDGetInput", (PyCFunction)Qt_VDGetInput, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, short input)")}, - {"VDSetInputStandard", (PyCFunction)Qt_VDSetInputStandard, 1, - PyDoc_STR("(VideoDigitizerComponent ci, short inputStandard) -> (ComponentResult _rv)")}, - {"VDSetupBuffers", (PyCFunction)Qt_VDSetupBuffers, 1, - PyDoc_STR("(VideoDigitizerComponent ci, VdigBufferRecListHandle bufferList) -> (ComponentResult _rv)")}, - {"VDGrabOneFrameAsync", (PyCFunction)Qt_VDGrabOneFrameAsync, 1, - PyDoc_STR("(VideoDigitizerComponent ci, short buffer) -> (ComponentResult _rv)")}, - {"VDDone", (PyCFunction)Qt_VDDone, 1, - PyDoc_STR("(VideoDigitizerComponent ci, short buffer) -> (ComponentResult _rv)")}, - {"VDSetCompression", (PyCFunction)Qt_VDSetCompression, 1, - PyDoc_STR("(VideoDigitizerComponent ci, OSType compressType, short depth, CodecQ spatialQuality, CodecQ temporalQuality, long keyFrameRate) -> (ComponentResult _rv, Rect bounds)")}, - {"VDCompressOneFrameAsync", (PyCFunction)Qt_VDCompressOneFrameAsync, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv)")}, - {"VDGetImageDescription", (PyCFunction)Qt_VDGetImageDescription, 1, - PyDoc_STR("(VideoDigitizerComponent ci, ImageDescriptionHandle desc) -> (ComponentResult _rv)")}, - {"VDResetCompressSequence", (PyCFunction)Qt_VDResetCompressSequence, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv)")}, - {"VDSetCompressionOnOff", (PyCFunction)Qt_VDSetCompressionOnOff, 1, - PyDoc_STR("(VideoDigitizerComponent ci, Boolean state) -> (ComponentResult _rv)")}, - {"VDGetCompressionTypes", (PyCFunction)Qt_VDGetCompressionTypes, 1, - PyDoc_STR("(VideoDigitizerComponent ci, VDCompressionListHandle h) -> (ComponentResult _rv)")}, - {"VDSetTimeBase", (PyCFunction)Qt_VDSetTimeBase, 1, - PyDoc_STR("(VideoDigitizerComponent ci, TimeBase t) -> (ComponentResult _rv)")}, - {"VDSetFrameRate", (PyCFunction)Qt_VDSetFrameRate, 1, - PyDoc_STR("(VideoDigitizerComponent ci, Fixed framesPerSecond) -> (ComponentResult _rv)")}, - {"VDGetDataRate", (PyCFunction)Qt_VDGetDataRate, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, long milliSecPerFrame, Fixed framesPerSecond, long bytesPerSecond)")}, - {"VDGetSoundInputDriver", (PyCFunction)Qt_VDGetSoundInputDriver, 1, - PyDoc_STR("(VideoDigitizerComponent ci, Str255 soundDriverName) -> (ComponentResult _rv)")}, - {"VDGetDMADepths", (PyCFunction)Qt_VDGetDMADepths, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, long depthArray, long preferredDepth)")}, - {"VDGetPreferredTimeScale", (PyCFunction)Qt_VDGetPreferredTimeScale, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, TimeScale preferred)")}, - {"VDReleaseAsyncBuffers", (PyCFunction)Qt_VDReleaseAsyncBuffers, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv)")}, - {"VDSetDataRate", (PyCFunction)Qt_VDSetDataRate, 1, - PyDoc_STR("(VideoDigitizerComponent ci, long bytesPerSecond) -> (ComponentResult _rv)")}, - {"VDGetTimeCode", (PyCFunction)Qt_VDGetTimeCode, 1, - PyDoc_STR("(VideoDigitizerComponent ci, void * timeCodeFormat, void * timeCodeTime) -> (ComponentResult _rv, TimeRecord atTime)")}, - {"VDUseSafeBuffers", (PyCFunction)Qt_VDUseSafeBuffers, 1, - PyDoc_STR("(VideoDigitizerComponent ci, Boolean useSafeBuffers) -> (ComponentResult _rv)")}, - {"VDGetSoundInputSource", (PyCFunction)Qt_VDGetSoundInputSource, 1, - PyDoc_STR("(VideoDigitizerComponent ci, long videoInput) -> (ComponentResult _rv, long soundInput)")}, - {"VDGetCompressionTime", (PyCFunction)Qt_VDGetCompressionTime, 1, - PyDoc_STR("(VideoDigitizerComponent ci, OSType compressionType, short depth) -> (ComponentResult _rv, Rect srcRect, CodecQ spatialQuality, CodecQ temporalQuality, unsigned long compressTime)")}, - {"VDSetPreferredPacketSize", (PyCFunction)Qt_VDSetPreferredPacketSize, 1, - PyDoc_STR("(VideoDigitizerComponent ci, long preferredPacketSizeInBytes) -> (ComponentResult _rv)")}, - {"VDSetPreferredImageDimensions", (PyCFunction)Qt_VDSetPreferredImageDimensions, 1, - PyDoc_STR("(VideoDigitizerComponent ci, long width, long height) -> (ComponentResult _rv)")}, - {"VDGetPreferredImageDimensions", (PyCFunction)Qt_VDGetPreferredImageDimensions, 1, - PyDoc_STR("(VideoDigitizerComponent ci) -> (ComponentResult _rv, long width, long height)")}, - {"VDGetInputName", (PyCFunction)Qt_VDGetInputName, 1, - PyDoc_STR("(VideoDigitizerComponent ci, long videoInput, Str255 name) -> (ComponentResult _rv)")}, - {"VDSetDestinationPort", (PyCFunction)Qt_VDSetDestinationPort, 1, - PyDoc_STR("(VideoDigitizerComponent ci, CGrafPtr destPort) -> (ComponentResult _rv)")}, - {"VDGetDeviceNameAndFlags", (PyCFunction)Qt_VDGetDeviceNameAndFlags, 1, - PyDoc_STR("(VideoDigitizerComponent ci, Str255 outName) -> (ComponentResult _rv, UInt32 outNameFlags)")}, - {"VDCaptureStateChanging", (PyCFunction)Qt_VDCaptureStateChanging, 1, - PyDoc_STR("(VideoDigitizerComponent ci, UInt32 inStateFlags) -> (ComponentResult _rv)")}, - {"XMLParseGetDetailedParseError", (PyCFunction)Qt_XMLParseGetDetailedParseError, 1, - PyDoc_STR("(ComponentInstance aParser, StringPtr errDesc) -> (ComponentResult _rv, long errorLine)")}, - {"XMLParseAddElement", (PyCFunction)Qt_XMLParseAddElement, 1, - PyDoc_STR("(ComponentInstance aParser, UInt32 nameSpaceID, long elementFlags) -> (ComponentResult _rv, char elementName, UInt32 elementID)")}, - {"XMLParseAddAttribute", (PyCFunction)Qt_XMLParseAddAttribute, 1, - PyDoc_STR("(ComponentInstance aParser, UInt32 elementID, UInt32 nameSpaceID) -> (ComponentResult _rv, char attributeName, UInt32 attributeID)")}, - {"XMLParseAddMultipleAttributes", (PyCFunction)Qt_XMLParseAddMultipleAttributes, 1, - PyDoc_STR("(ComponentInstance aParser, UInt32 elementID) -> (ComponentResult _rv, UInt32 nameSpaceIDs, char attributeNames, UInt32 attributeIDs)")}, - {"XMLParseAddAttributeAndValue", (PyCFunction)Qt_XMLParseAddAttributeAndValue, 1, - PyDoc_STR("(ComponentInstance aParser, UInt32 elementID, UInt32 nameSpaceID, UInt32 attributeValueKind, void * attributeValueKindInfo) -> (ComponentResult _rv, char attributeName, UInt32 attributeID)")}, - {"XMLParseAddAttributeValueKind", (PyCFunction)Qt_XMLParseAddAttributeValueKind, 1, - PyDoc_STR("(ComponentInstance aParser, UInt32 elementID, UInt32 attributeID, UInt32 attributeValueKind, void * attributeValueKindInfo) -> (ComponentResult _rv)")}, - {"XMLParseAddNameSpace", (PyCFunction)Qt_XMLParseAddNameSpace, 1, - PyDoc_STR("(ComponentInstance aParser) -> (ComponentResult _rv, char nameSpaceURL, UInt32 nameSpaceID)")}, - {"XMLParseSetOffsetAndLimit", (PyCFunction)Qt_XMLParseSetOffsetAndLimit, 1, - PyDoc_STR("(ComponentInstance aParser, UInt32 offset, UInt32 limit) -> (ComponentResult _rv)")}, - {"XMLParseSetEventParseRefCon", (PyCFunction)Qt_XMLParseSetEventParseRefCon, 1, - PyDoc_STR("(ComponentInstance aParser, long refcon) -> (ComponentResult _rv)")}, - {"SGInitialize", (PyCFunction)Qt_SGInitialize, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv)")}, - {"SGSetDataOutput", (PyCFunction)Qt_SGSetDataOutput, 1, - PyDoc_STR("(SeqGrabComponent s, FSSpec movieFile, long whereFlags) -> (ComponentResult _rv)")}, - {"SGGetDataOutput", (PyCFunction)Qt_SGGetDataOutput, 1, - PyDoc_STR("(SeqGrabComponent s, FSSpec movieFile) -> (ComponentResult _rv, long whereFlags)")}, - {"SGSetGWorld", (PyCFunction)Qt_SGSetGWorld, 1, - PyDoc_STR("(SeqGrabComponent s, CGrafPtr gp, GDHandle gd) -> (ComponentResult _rv)")}, - {"SGGetGWorld", (PyCFunction)Qt_SGGetGWorld, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, CGrafPtr gp, GDHandle gd)")}, - {"SGNewChannel", (PyCFunction)Qt_SGNewChannel, 1, - PyDoc_STR("(SeqGrabComponent s, OSType channelType) -> (ComponentResult _rv, SGChannel ref)")}, - {"SGDisposeChannel", (PyCFunction)Qt_SGDisposeChannel, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c) -> (ComponentResult _rv)")}, - {"SGStartPreview", (PyCFunction)Qt_SGStartPreview, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv)")}, - {"SGStartRecord", (PyCFunction)Qt_SGStartRecord, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv)")}, - {"SGIdle", (PyCFunction)Qt_SGIdle, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv)")}, - {"SGStop", (PyCFunction)Qt_SGStop, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv)")}, - {"SGPause", (PyCFunction)Qt_SGPause, 1, - PyDoc_STR("(SeqGrabComponent s, Boolean pause) -> (ComponentResult _rv)")}, - {"SGPrepare", (PyCFunction)Qt_SGPrepare, 1, - PyDoc_STR("(SeqGrabComponent s, Boolean prepareForPreview, Boolean prepareForRecord) -> (ComponentResult _rv)")}, - {"SGRelease", (PyCFunction)Qt_SGRelease, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv)")}, - {"SGGetMovie", (PyCFunction)Qt_SGGetMovie, 1, - PyDoc_STR("(SeqGrabComponent s) -> (Movie _rv)")}, - {"SGSetMaximumRecordTime", (PyCFunction)Qt_SGSetMaximumRecordTime, 1, - PyDoc_STR("(SeqGrabComponent s, unsigned long ticks) -> (ComponentResult _rv)")}, - {"SGGetMaximumRecordTime", (PyCFunction)Qt_SGGetMaximumRecordTime, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, unsigned long ticks)")}, - {"SGGetStorageSpaceRemaining", (PyCFunction)Qt_SGGetStorageSpaceRemaining, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, unsigned long bytes)")}, - {"SGGetTimeRemaining", (PyCFunction)Qt_SGGetTimeRemaining, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, long ticksLeft)")}, - {"SGGrabPict", (PyCFunction)Qt_SGGrabPict, 1, - PyDoc_STR("(SeqGrabComponent s, Rect bounds, short offscreenDepth, long grabPictFlags) -> (ComponentResult _rv, PicHandle p)")}, - {"SGGetLastMovieResID", (PyCFunction)Qt_SGGetLastMovieResID, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, short resID)")}, - {"SGSetFlags", (PyCFunction)Qt_SGSetFlags, 1, - PyDoc_STR("(SeqGrabComponent s, long sgFlags) -> (ComponentResult _rv)")}, - {"SGGetFlags", (PyCFunction)Qt_SGGetFlags, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, long sgFlags)")}, - {"SGNewChannelFromComponent", (PyCFunction)Qt_SGNewChannelFromComponent, 1, - PyDoc_STR("(SeqGrabComponent s, Component sgChannelComponent) -> (ComponentResult _rv, SGChannel newChannel)")}, - {"SGSetSettings", (PyCFunction)Qt_SGSetSettings, 1, - PyDoc_STR("(SeqGrabComponent s, UserData ud, long flags) -> (ComponentResult _rv)")}, - {"SGGetSettings", (PyCFunction)Qt_SGGetSettings, 1, - PyDoc_STR("(SeqGrabComponent s, long flags) -> (ComponentResult _rv, UserData ud)")}, - {"SGGetIndChannel", (PyCFunction)Qt_SGGetIndChannel, 1, - PyDoc_STR("(SeqGrabComponent s, short index) -> (ComponentResult _rv, SGChannel ref, OSType chanType)")}, - {"SGUpdate", (PyCFunction)Qt_SGUpdate, 1, - PyDoc_STR("(SeqGrabComponent s, RgnHandle updateRgn) -> (ComponentResult _rv)")}, - {"SGGetPause", (PyCFunction)Qt_SGGetPause, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, Boolean paused)")}, - {"SGSetChannelSettings", (PyCFunction)Qt_SGSetChannelSettings, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c, UserData ud, long flags) -> (ComponentResult _rv)")}, - {"SGGetChannelSettings", (PyCFunction)Qt_SGGetChannelSettings, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c, long flags) -> (ComponentResult _rv, UserData ud)")}, - {"SGGetMode", (PyCFunction)Qt_SGGetMode, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, Boolean previewMode, Boolean recordMode)")}, - {"SGSetDataRef", (PyCFunction)Qt_SGSetDataRef, 1, - PyDoc_STR("(SeqGrabComponent s, Handle dataRef, OSType dataRefType, long whereFlags) -> (ComponentResult _rv)")}, - {"SGGetDataRef", (PyCFunction)Qt_SGGetDataRef, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, Handle dataRef, OSType dataRefType, long whereFlags)")}, - {"SGNewOutput", (PyCFunction)Qt_SGNewOutput, 1, - PyDoc_STR("(SeqGrabComponent s, Handle dataRef, OSType dataRefType, long whereFlags) -> (ComponentResult _rv, SGOutput sgOut)")}, - {"SGDisposeOutput", (PyCFunction)Qt_SGDisposeOutput, 1, - PyDoc_STR("(SeqGrabComponent s, SGOutput sgOut) -> (ComponentResult _rv)")}, - {"SGSetOutputFlags", (PyCFunction)Qt_SGSetOutputFlags, 1, - PyDoc_STR("(SeqGrabComponent s, SGOutput sgOut, long whereFlags) -> (ComponentResult _rv)")}, - {"SGSetChannelOutput", (PyCFunction)Qt_SGSetChannelOutput, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c, SGOutput sgOut) -> (ComponentResult _rv)")}, - {"SGGetDataOutputStorageSpaceRemaining", (PyCFunction)Qt_SGGetDataOutputStorageSpaceRemaining, 1, - PyDoc_STR("(SeqGrabComponent s, SGOutput sgOut) -> (ComponentResult _rv, unsigned long space)")}, - {"SGHandleUpdateEvent", (PyCFunction)Qt_SGHandleUpdateEvent, 1, - PyDoc_STR("(SeqGrabComponent s, EventRecord event) -> (ComponentResult _rv, Boolean handled)")}, - {"SGSetOutputNextOutput", (PyCFunction)Qt_SGSetOutputNextOutput, 1, - PyDoc_STR("(SeqGrabComponent s, SGOutput sgOut, SGOutput nextOut) -> (ComponentResult _rv)")}, - {"SGGetOutputNextOutput", (PyCFunction)Qt_SGGetOutputNextOutput, 1, - PyDoc_STR("(SeqGrabComponent s, SGOutput sgOut) -> (ComponentResult _rv, SGOutput nextOut)")}, - {"SGSetOutputMaximumOffset", (PyCFunction)Qt_SGSetOutputMaximumOffset, 1, - PyDoc_STR("(SeqGrabComponent s, SGOutput sgOut, wide maxOffset) -> (ComponentResult _rv)")}, - {"SGGetOutputMaximumOffset", (PyCFunction)Qt_SGGetOutputMaximumOffset, 1, - PyDoc_STR("(SeqGrabComponent s, SGOutput sgOut) -> (ComponentResult _rv, wide maxOffset)")}, - {"SGGetOutputDataReference", (PyCFunction)Qt_SGGetOutputDataReference, 1, - PyDoc_STR("(SeqGrabComponent s, SGOutput sgOut) -> (ComponentResult _rv, Handle dataRef, OSType dataRefType)")}, - {"SGWriteExtendedMovieData", (PyCFunction)Qt_SGWriteExtendedMovieData, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c, Ptr p, long len) -> (ComponentResult _rv, wide offset, SGOutput sgOut)")}, - {"SGGetStorageSpaceRemaining64", (PyCFunction)Qt_SGGetStorageSpaceRemaining64, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, wide bytes)")}, - {"SGGetDataOutputStorageSpaceRemaining64", (PyCFunction)Qt_SGGetDataOutputStorageSpaceRemaining64, 1, - PyDoc_STR("(SeqGrabComponent s, SGOutput sgOut) -> (ComponentResult _rv, wide space)")}, - {"SGWriteMovieData", (PyCFunction)Qt_SGWriteMovieData, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c, Ptr p, long len) -> (ComponentResult _rv, long offset)")}, - {"SGGetTimeBase", (PyCFunction)Qt_SGGetTimeBase, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, TimeBase tb)")}, - {"SGAddMovieData", (PyCFunction)Qt_SGAddMovieData, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c, Ptr p, long len, long chRefCon, TimeValue time, short writeType) -> (ComponentResult _rv, long offset)")}, - {"SGChangedSource", (PyCFunction)Qt_SGChangedSource, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c) -> (ComponentResult _rv)")}, - {"SGAddExtendedMovieData", (PyCFunction)Qt_SGAddExtendedMovieData, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c, Ptr p, long len, long chRefCon, TimeValue time, short writeType) -> (ComponentResult _rv, wide offset, SGOutput whichOutput)")}, - {"SGAddOutputDataRefToMedia", (PyCFunction)Qt_SGAddOutputDataRefToMedia, 1, - PyDoc_STR("(SeqGrabComponent s, SGOutput sgOut, Media theMedia, SampleDescriptionHandle desc) -> (ComponentResult _rv)")}, - {"SGSetSettingsSummary", (PyCFunction)Qt_SGSetSettingsSummary, 1, - PyDoc_STR("(SeqGrabComponent s, Handle summaryText) -> (ComponentResult _rv)")}, - {"SGSetChannelUsage", (PyCFunction)Qt_SGSetChannelUsage, 1, - PyDoc_STR("(SGChannel c, long usage) -> (ComponentResult _rv)")}, - {"SGGetChannelUsage", (PyCFunction)Qt_SGGetChannelUsage, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, long usage)")}, - {"SGSetChannelBounds", (PyCFunction)Qt_SGSetChannelBounds, 1, - PyDoc_STR("(SGChannel c, Rect bounds) -> (ComponentResult _rv)")}, - {"SGGetChannelBounds", (PyCFunction)Qt_SGGetChannelBounds, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, Rect bounds)")}, - {"SGSetChannelVolume", (PyCFunction)Qt_SGSetChannelVolume, 1, - PyDoc_STR("(SGChannel c, short volume) -> (ComponentResult _rv)")}, - {"SGGetChannelVolume", (PyCFunction)Qt_SGGetChannelVolume, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, short volume)")}, - {"SGGetChannelInfo", (PyCFunction)Qt_SGGetChannelInfo, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, long channelInfo)")}, - {"SGSetChannelPlayFlags", (PyCFunction)Qt_SGSetChannelPlayFlags, 1, - PyDoc_STR("(SGChannel c, long playFlags) -> (ComponentResult _rv)")}, - {"SGGetChannelPlayFlags", (PyCFunction)Qt_SGGetChannelPlayFlags, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, long playFlags)")}, - {"SGSetChannelMaxFrames", (PyCFunction)Qt_SGSetChannelMaxFrames, 1, - PyDoc_STR("(SGChannel c, long frameCount) -> (ComponentResult _rv)")}, - {"SGGetChannelMaxFrames", (PyCFunction)Qt_SGGetChannelMaxFrames, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, long frameCount)")}, - {"SGSetChannelRefCon", (PyCFunction)Qt_SGSetChannelRefCon, 1, - PyDoc_STR("(SGChannel c, long refCon) -> (ComponentResult _rv)")}, - {"SGSetChannelClip", (PyCFunction)Qt_SGSetChannelClip, 1, - PyDoc_STR("(SGChannel c, RgnHandle theClip) -> (ComponentResult _rv)")}, - {"SGGetChannelClip", (PyCFunction)Qt_SGGetChannelClip, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, RgnHandle theClip)")}, - {"SGGetChannelSampleDescription", (PyCFunction)Qt_SGGetChannelSampleDescription, 1, - PyDoc_STR("(SGChannel c, Handle sampleDesc) -> (ComponentResult _rv)")}, - {"SGSetChannelDevice", (PyCFunction)Qt_SGSetChannelDevice, 1, - PyDoc_STR("(SGChannel c, StringPtr name) -> (ComponentResult _rv)")}, - {"SGGetChannelTimeScale", (PyCFunction)Qt_SGGetChannelTimeScale, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, TimeScale scale)")}, - {"SGChannelPutPicture", (PyCFunction)Qt_SGChannelPutPicture, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv)")}, - {"SGChannelSetRequestedDataRate", (PyCFunction)Qt_SGChannelSetRequestedDataRate, 1, - PyDoc_STR("(SGChannel c, long bytesPerSecond) -> (ComponentResult _rv)")}, - {"SGChannelGetRequestedDataRate", (PyCFunction)Qt_SGChannelGetRequestedDataRate, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, long bytesPerSecond)")}, - {"SGChannelSetDataSourceName", (PyCFunction)Qt_SGChannelSetDataSourceName, 1, - PyDoc_STR("(SGChannel c, Str255 name, ScriptCode scriptTag) -> (ComponentResult _rv)")}, - {"SGChannelGetDataSourceName", (PyCFunction)Qt_SGChannelGetDataSourceName, 1, - PyDoc_STR("(SGChannel c, Str255 name) -> (ComponentResult _rv, ScriptCode scriptTag)")}, - {"SGChannelSetCodecSettings", (PyCFunction)Qt_SGChannelSetCodecSettings, 1, - PyDoc_STR("(SGChannel c, Handle settings) -> (ComponentResult _rv)")}, - {"SGChannelGetCodecSettings", (PyCFunction)Qt_SGChannelGetCodecSettings, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, Handle settings)")}, - {"SGGetChannelTimeBase", (PyCFunction)Qt_SGGetChannelTimeBase, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, TimeBase tb)")}, - {"SGGetChannelRefCon", (PyCFunction)Qt_SGGetChannelRefCon, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, long refCon)")}, - {"SGGetChannelDeviceAndInputNames", (PyCFunction)Qt_SGGetChannelDeviceAndInputNames, 1, - PyDoc_STR("(SGChannel c, Str255 outDeviceName, Str255 outInputName) -> (ComponentResult _rv, short outInputNumber)")}, - {"SGSetChannelDeviceInput", (PyCFunction)Qt_SGSetChannelDeviceInput, 1, - PyDoc_STR("(SGChannel c, short inInputNumber) -> (ComponentResult _rv)")}, - {"SGSetChannelSettingsStateChanging", (PyCFunction)Qt_SGSetChannelSettingsStateChanging, 1, - PyDoc_STR("(SGChannel c, UInt32 inFlags) -> (ComponentResult _rv)")}, - {"SGInitChannel", (PyCFunction)Qt_SGInitChannel, 1, - PyDoc_STR("(SGChannel c, SeqGrabComponent owner) -> (ComponentResult _rv)")}, - {"SGWriteSamples", (PyCFunction)Qt_SGWriteSamples, 1, - PyDoc_STR("(SGChannel c, Movie m, AliasHandle theFile) -> (ComponentResult _rv)")}, - {"SGGetDataRate", (PyCFunction)Qt_SGGetDataRate, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, long bytesPerSecond)")}, - {"SGAlignChannelRect", (PyCFunction)Qt_SGAlignChannelRect, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, Rect r)")}, - {"SGPanelGetDitl", (PyCFunction)Qt_SGPanelGetDitl, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, Handle ditl)")}, - {"SGPanelGetTitle", (PyCFunction)Qt_SGPanelGetTitle, 1, - PyDoc_STR("(SeqGrabComponent s, Str255 title) -> (ComponentResult _rv)")}, - {"SGPanelCanRun", (PyCFunction)Qt_SGPanelCanRun, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c) -> (ComponentResult _rv)")}, - {"SGPanelInstall", (PyCFunction)Qt_SGPanelInstall, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c, DialogPtr d, short itemOffset) -> (ComponentResult _rv)")}, - {"SGPanelEvent", (PyCFunction)Qt_SGPanelEvent, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c, DialogPtr d, short itemOffset, EventRecord theEvent) -> (ComponentResult _rv, short itemHit, Boolean handled)")}, - {"SGPanelItem", (PyCFunction)Qt_SGPanelItem, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c, DialogPtr d, short itemOffset, short itemNum) -> (ComponentResult _rv)")}, - {"SGPanelRemove", (PyCFunction)Qt_SGPanelRemove, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c, DialogPtr d, short itemOffset) -> (ComponentResult _rv)")}, - {"SGPanelSetGrabber", (PyCFunction)Qt_SGPanelSetGrabber, 1, - PyDoc_STR("(SeqGrabComponent s, SeqGrabComponent sg) -> (ComponentResult _rv)")}, - {"SGPanelSetResFile", (PyCFunction)Qt_SGPanelSetResFile, 1, - PyDoc_STR("(SeqGrabComponent s, short resRef) -> (ComponentResult _rv)")}, - {"SGPanelGetSettings", (PyCFunction)Qt_SGPanelGetSettings, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c, long flags) -> (ComponentResult _rv, UserData ud)")}, - {"SGPanelSetSettings", (PyCFunction)Qt_SGPanelSetSettings, 1, - PyDoc_STR("(SeqGrabComponent s, SGChannel c, UserData ud, long flags) -> (ComponentResult _rv)")}, - {"SGPanelValidateInput", (PyCFunction)Qt_SGPanelValidateInput, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, Boolean ok)")}, - {"SGPanelGetDITLForSize", (PyCFunction)Qt_SGPanelGetDITLForSize, 1, - PyDoc_STR("(SeqGrabComponent s) -> (ComponentResult _rv, Handle ditl, Point requestedSize)")}, - {"SGGetSrcVideoBounds", (PyCFunction)Qt_SGGetSrcVideoBounds, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, Rect r)")}, - {"SGSetVideoRect", (PyCFunction)Qt_SGSetVideoRect, 1, - PyDoc_STR("(SGChannel c, Rect r) -> (ComponentResult _rv)")}, - {"SGGetVideoRect", (PyCFunction)Qt_SGGetVideoRect, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, Rect r)")}, - {"SGGetVideoCompressorType", (PyCFunction)Qt_SGGetVideoCompressorType, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, OSType compressorType)")}, - {"SGSetVideoCompressorType", (PyCFunction)Qt_SGSetVideoCompressorType, 1, - PyDoc_STR("(SGChannel c, OSType compressorType) -> (ComponentResult _rv)")}, - {"SGSetVideoCompressor", (PyCFunction)Qt_SGSetVideoCompressor, 1, - PyDoc_STR("(SGChannel c, short depth, CompressorComponent compressor, CodecQ spatialQuality, CodecQ temporalQuality, long keyFrameRate) -> (ComponentResult _rv)")}, - {"SGGetVideoCompressor", (PyCFunction)Qt_SGGetVideoCompressor, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, short depth, CompressorComponent compressor, CodecQ spatialQuality, CodecQ temporalQuality, long keyFrameRate)")}, - {"SGGetVideoDigitizerComponent", (PyCFunction)Qt_SGGetVideoDigitizerComponent, 1, - PyDoc_STR("(SGChannel c) -> (ComponentInstance _rv)")}, - {"SGSetVideoDigitizerComponent", (PyCFunction)Qt_SGSetVideoDigitizerComponent, 1, - PyDoc_STR("(SGChannel c, ComponentInstance vdig) -> (ComponentResult _rv)")}, - {"SGVideoDigitizerChanged", (PyCFunction)Qt_SGVideoDigitizerChanged, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv)")}, - {"SGGrabFrame", (PyCFunction)Qt_SGGrabFrame, 1, - PyDoc_STR("(SGChannel c, short bufferNum) -> (ComponentResult _rv)")}, - {"SGGrabFrameComplete", (PyCFunction)Qt_SGGrabFrameComplete, 1, - PyDoc_STR("(SGChannel c, short bufferNum) -> (ComponentResult _rv, Boolean done)")}, - {"SGCompressFrame", (PyCFunction)Qt_SGCompressFrame, 1, - PyDoc_STR("(SGChannel c, short bufferNum) -> (ComponentResult _rv)")}, - {"SGSetCompressBuffer", (PyCFunction)Qt_SGSetCompressBuffer, 1, - PyDoc_STR("(SGChannel c, short depth, Rect compressSize) -> (ComponentResult _rv)")}, - {"SGGetCompressBuffer", (PyCFunction)Qt_SGGetCompressBuffer, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, short depth, Rect compressSize)")}, - {"SGGetBufferInfo", (PyCFunction)Qt_SGGetBufferInfo, 1, - PyDoc_STR("(SGChannel c, short bufferNum) -> (ComponentResult _rv, PixMapHandle bufferPM, Rect bufferRect, GWorldPtr compressBuffer, Rect compressBufferRect)")}, - {"SGSetUseScreenBuffer", (PyCFunction)Qt_SGSetUseScreenBuffer, 1, - PyDoc_STR("(SGChannel c, Boolean useScreenBuffer) -> (ComponentResult _rv)")}, - {"SGGetUseScreenBuffer", (PyCFunction)Qt_SGGetUseScreenBuffer, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, Boolean useScreenBuffer)")}, - {"SGSetFrameRate", (PyCFunction)Qt_SGSetFrameRate, 1, - PyDoc_STR("(SGChannel c, Fixed frameRate) -> (ComponentResult _rv)")}, - {"SGGetFrameRate", (PyCFunction)Qt_SGGetFrameRate, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, Fixed frameRate)")}, - {"SGSetPreferredPacketSize", (PyCFunction)Qt_SGSetPreferredPacketSize, 1, - PyDoc_STR("(SGChannel c, long preferredPacketSizeInBytes) -> (ComponentResult _rv)")}, - {"SGGetPreferredPacketSize", (PyCFunction)Qt_SGGetPreferredPacketSize, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, long preferredPacketSizeInBytes)")}, - {"SGSetUserVideoCompressorList", (PyCFunction)Qt_SGSetUserVideoCompressorList, 1, - PyDoc_STR("(SGChannel c, Handle compressorTypes) -> (ComponentResult _rv)")}, - {"SGGetUserVideoCompressorList", (PyCFunction)Qt_SGGetUserVideoCompressorList, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, Handle compressorTypes)")}, - {"SGSetSoundInputDriver", (PyCFunction)Qt_SGSetSoundInputDriver, 1, - PyDoc_STR("(SGChannel c, Str255 driverName) -> (ComponentResult _rv)")}, - {"SGGetSoundInputDriver", (PyCFunction)Qt_SGGetSoundInputDriver, 1, - PyDoc_STR("(SGChannel c) -> (long _rv)")}, - {"SGSoundInputDriverChanged", (PyCFunction)Qt_SGSoundInputDriverChanged, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv)")}, - {"SGSetSoundRecordChunkSize", (PyCFunction)Qt_SGSetSoundRecordChunkSize, 1, - PyDoc_STR("(SGChannel c, long seconds) -> (ComponentResult _rv)")}, - {"SGGetSoundRecordChunkSize", (PyCFunction)Qt_SGGetSoundRecordChunkSize, 1, - PyDoc_STR("(SGChannel c) -> (long _rv)")}, - {"SGSetSoundInputRate", (PyCFunction)Qt_SGSetSoundInputRate, 1, - PyDoc_STR("(SGChannel c, Fixed rate) -> (ComponentResult _rv)")}, - {"SGGetSoundInputRate", (PyCFunction)Qt_SGGetSoundInputRate, 1, - PyDoc_STR("(SGChannel c) -> (Fixed _rv)")}, - {"SGSetSoundInputParameters", (PyCFunction)Qt_SGSetSoundInputParameters, 1, - PyDoc_STR("(SGChannel c, short sampleSize, short numChannels, OSType compressionType) -> (ComponentResult _rv)")}, - {"SGGetSoundInputParameters", (PyCFunction)Qt_SGGetSoundInputParameters, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, short sampleSize, short numChannels, OSType compressionType)")}, - {"SGSetAdditionalSoundRates", (PyCFunction)Qt_SGSetAdditionalSoundRates, 1, - PyDoc_STR("(SGChannel c, Handle rates) -> (ComponentResult _rv)")}, - {"SGGetAdditionalSoundRates", (PyCFunction)Qt_SGGetAdditionalSoundRates, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, Handle rates)")}, - {"SGSetFontName", (PyCFunction)Qt_SGSetFontName, 1, - PyDoc_STR("(SGChannel c, StringPtr pstr) -> (ComponentResult _rv)")}, - {"SGSetFontSize", (PyCFunction)Qt_SGSetFontSize, 1, - PyDoc_STR("(SGChannel c, short fontSize) -> (ComponentResult _rv)")}, - {"SGSetTextForeColor", (PyCFunction)Qt_SGSetTextForeColor, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, RGBColor theColor)")}, - {"SGSetTextBackColor", (PyCFunction)Qt_SGSetTextBackColor, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, RGBColor theColor)")}, - {"SGSetJustification", (PyCFunction)Qt_SGSetJustification, 1, - PyDoc_STR("(SGChannel c, short just) -> (ComponentResult _rv)")}, - {"SGGetTextReturnToSpaceValue", (PyCFunction)Qt_SGGetTextReturnToSpaceValue, 1, - PyDoc_STR("(SGChannel c) -> (ComponentResult _rv, short rettospace)")}, - {"SGSetTextReturnToSpaceValue", (PyCFunction)Qt_SGSetTextReturnToSpaceValue, 1, - PyDoc_STR("(SGChannel c, short rettospace) -> (ComponentResult _rv)")}, - {"QTVideoOutputGetCurrentClientName", (PyCFunction)Qt_QTVideoOutputGetCurrentClientName, 1, - PyDoc_STR("(QTVideoOutputComponent vo, Str255 str) -> (ComponentResult _rv)")}, - {"QTVideoOutputSetClientName", (PyCFunction)Qt_QTVideoOutputSetClientName, 1, - PyDoc_STR("(QTVideoOutputComponent vo, Str255 str) -> (ComponentResult _rv)")}, - {"QTVideoOutputGetClientName", (PyCFunction)Qt_QTVideoOutputGetClientName, 1, - PyDoc_STR("(QTVideoOutputComponent vo, Str255 str) -> (ComponentResult _rv)")}, - {"QTVideoOutputBegin", (PyCFunction)Qt_QTVideoOutputBegin, 1, - PyDoc_STR("(QTVideoOutputComponent vo) -> (ComponentResult _rv)")}, - {"QTVideoOutputEnd", (PyCFunction)Qt_QTVideoOutputEnd, 1, - PyDoc_STR("(QTVideoOutputComponent vo) -> (ComponentResult _rv)")}, - {"QTVideoOutputSetDisplayMode", (PyCFunction)Qt_QTVideoOutputSetDisplayMode, 1, - PyDoc_STR("(QTVideoOutputComponent vo, long displayModeID) -> (ComponentResult _rv)")}, - {"QTVideoOutputGetDisplayMode", (PyCFunction)Qt_QTVideoOutputGetDisplayMode, 1, - PyDoc_STR("(QTVideoOutputComponent vo) -> (ComponentResult _rv, long displayModeID)")}, - {"QTVideoOutputGetGWorld", (PyCFunction)Qt_QTVideoOutputGetGWorld, 1, - PyDoc_STR("(QTVideoOutputComponent vo) -> (ComponentResult _rv, GWorldPtr gw)")}, - {"QTVideoOutputGetIndSoundOutput", (PyCFunction)Qt_QTVideoOutputGetIndSoundOutput, 1, - PyDoc_STR("(QTVideoOutputComponent vo, long index) -> (ComponentResult _rv, Component outputComponent)")}, - {"QTVideoOutputGetClock", (PyCFunction)Qt_QTVideoOutputGetClock, 1, - PyDoc_STR("(QTVideoOutputComponent vo) -> (ComponentResult _rv, ComponentInstance clock)")}, - {"QTVideoOutputSetEchoPort", (PyCFunction)Qt_QTVideoOutputSetEchoPort, 1, - PyDoc_STR("(QTVideoOutputComponent vo, CGrafPtr echoPort) -> (ComponentResult _rv)")}, - {"QTVideoOutputGetIndImageDecompressor", (PyCFunction)Qt_QTVideoOutputGetIndImageDecompressor, 1, - PyDoc_STR("(QTVideoOutputComponent vo, long index) -> (ComponentResult _rv, Component codec)")}, - {"QTVideoOutputBaseSetEchoPort", (PyCFunction)Qt_QTVideoOutputBaseSetEchoPort, 1, - PyDoc_STR("(QTVideoOutputComponent vo, CGrafPtr echoPort) -> (ComponentResult _rv)")}, - {"MediaSetChunkManagementFlags", (PyCFunction)Qt_MediaSetChunkManagementFlags, 1, - PyDoc_STR("(MediaHandler mh, UInt32 flags, UInt32 flagsMask) -> (ComponentResult _rv)")}, - {"MediaGetChunkManagementFlags", (PyCFunction)Qt_MediaGetChunkManagementFlags, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, UInt32 flags)")}, - {"MediaSetPurgeableChunkMemoryAllowance", (PyCFunction)Qt_MediaSetPurgeableChunkMemoryAllowance, 1, - PyDoc_STR("(MediaHandler mh, Size allowance) -> (ComponentResult _rv)")}, - {"MediaGetPurgeableChunkMemoryAllowance", (PyCFunction)Qt_MediaGetPurgeableChunkMemoryAllowance, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, Size allowance)")}, - {"MediaEmptyAllPurgeableChunks", (PyCFunction)Qt_MediaEmptyAllPurgeableChunks, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv)")}, - {"MediaSetHandlerCapabilities", (PyCFunction)Qt_MediaSetHandlerCapabilities, 1, - PyDoc_STR("(MediaHandler mh, long flags, long flagsMask) -> (ComponentResult _rv)")}, - {"MediaIdle", (PyCFunction)Qt_MediaIdle, 1, - PyDoc_STR("(MediaHandler mh, TimeValue atMediaTime, long flagsIn, TimeRecord movieTime) -> (ComponentResult _rv, long flagsOut)")}, - {"MediaGetMediaInfo", (PyCFunction)Qt_MediaGetMediaInfo, 1, - PyDoc_STR("(MediaHandler mh, Handle h) -> (ComponentResult _rv)")}, - {"MediaPutMediaInfo", (PyCFunction)Qt_MediaPutMediaInfo, 1, - PyDoc_STR("(MediaHandler mh, Handle h) -> (ComponentResult _rv)")}, - {"MediaSetActive", (PyCFunction)Qt_MediaSetActive, 1, - PyDoc_STR("(MediaHandler mh, Boolean enableMedia) -> (ComponentResult _rv)")}, - {"MediaSetRate", (PyCFunction)Qt_MediaSetRate, 1, - PyDoc_STR("(MediaHandler mh, Fixed rate) -> (ComponentResult _rv)")}, - {"MediaGGetStatus", (PyCFunction)Qt_MediaGGetStatus, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, ComponentResult statusErr)")}, - {"MediaTrackEdited", (PyCFunction)Qt_MediaTrackEdited, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv)")}, - {"MediaSetMediaTimeScale", (PyCFunction)Qt_MediaSetMediaTimeScale, 1, - PyDoc_STR("(MediaHandler mh, TimeScale newTimeScale) -> (ComponentResult _rv)")}, - {"MediaSetMovieTimeScale", (PyCFunction)Qt_MediaSetMovieTimeScale, 1, - PyDoc_STR("(MediaHandler mh, TimeScale newTimeScale) -> (ComponentResult _rv)")}, - {"MediaSetGWorld", (PyCFunction)Qt_MediaSetGWorld, 1, - PyDoc_STR("(MediaHandler mh, CGrafPtr aPort, GDHandle aGD) -> (ComponentResult _rv)")}, - {"MediaSetDimensions", (PyCFunction)Qt_MediaSetDimensions, 1, - PyDoc_STR("(MediaHandler mh, Fixed width, Fixed height) -> (ComponentResult _rv)")}, - {"MediaSetClip", (PyCFunction)Qt_MediaSetClip, 1, - PyDoc_STR("(MediaHandler mh, RgnHandle theClip) -> (ComponentResult _rv)")}, - {"MediaGetTrackOpaque", (PyCFunction)Qt_MediaGetTrackOpaque, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, Boolean trackIsOpaque)")}, - {"MediaSetGraphicsMode", (PyCFunction)Qt_MediaSetGraphicsMode, 1, - PyDoc_STR("(MediaHandler mh, long mode, RGBColor opColor) -> (ComponentResult _rv)")}, - {"MediaGetGraphicsMode", (PyCFunction)Qt_MediaGetGraphicsMode, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, long mode, RGBColor opColor)")}, - {"MediaGSetVolume", (PyCFunction)Qt_MediaGSetVolume, 1, - PyDoc_STR("(MediaHandler mh, short volume) -> (ComponentResult _rv)")}, - {"MediaSetSoundBalance", (PyCFunction)Qt_MediaSetSoundBalance, 1, - PyDoc_STR("(MediaHandler mh, short balance) -> (ComponentResult _rv)")}, - {"MediaGetSoundBalance", (PyCFunction)Qt_MediaGetSoundBalance, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, short balance)")}, - {"MediaGetNextBoundsChange", (PyCFunction)Qt_MediaGetNextBoundsChange, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, TimeValue when)")}, - {"MediaGetSrcRgn", (PyCFunction)Qt_MediaGetSrcRgn, 1, - PyDoc_STR("(MediaHandler mh, RgnHandle rgn, TimeValue atMediaTime) -> (ComponentResult _rv)")}, - {"MediaPreroll", (PyCFunction)Qt_MediaPreroll, 1, - PyDoc_STR("(MediaHandler mh, TimeValue time, Fixed rate) -> (ComponentResult _rv)")}, - {"MediaSampleDescriptionChanged", (PyCFunction)Qt_MediaSampleDescriptionChanged, 1, - PyDoc_STR("(MediaHandler mh, long index) -> (ComponentResult _rv)")}, - {"MediaHasCharacteristic", (PyCFunction)Qt_MediaHasCharacteristic, 1, - PyDoc_STR("(MediaHandler mh, OSType characteristic) -> (ComponentResult _rv, Boolean hasIt)")}, - {"MediaGetOffscreenBufferSize", (PyCFunction)Qt_MediaGetOffscreenBufferSize, 1, - PyDoc_STR("(MediaHandler mh, short depth, CTabHandle ctab) -> (ComponentResult _rv, Rect bounds)")}, - {"MediaSetHints", (PyCFunction)Qt_MediaSetHints, 1, - PyDoc_STR("(MediaHandler mh, long hints) -> (ComponentResult _rv)")}, - {"MediaGetName", (PyCFunction)Qt_MediaGetName, 1, - PyDoc_STR("(MediaHandler mh, Str255 name, long requestedLanguage) -> (ComponentResult _rv, long actualLanguage)")}, - {"MediaForceUpdate", (PyCFunction)Qt_MediaForceUpdate, 1, - PyDoc_STR("(MediaHandler mh, long forceUpdateFlags) -> (ComponentResult _rv)")}, - {"MediaGetDrawingRgn", (PyCFunction)Qt_MediaGetDrawingRgn, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, RgnHandle partialRgn)")}, - {"MediaGSetActiveSegment", (PyCFunction)Qt_MediaGSetActiveSegment, 1, - PyDoc_STR("(MediaHandler mh, TimeValue activeStart, TimeValue activeDuration) -> (ComponentResult _rv)")}, - {"MediaInvalidateRegion", (PyCFunction)Qt_MediaInvalidateRegion, 1, - PyDoc_STR("(MediaHandler mh, RgnHandle invalRgn) -> (ComponentResult _rv)")}, - {"MediaGetNextStepTime", (PyCFunction)Qt_MediaGetNextStepTime, 1, - PyDoc_STR("(MediaHandler mh, short flags, TimeValue mediaTimeIn, Fixed rate) -> (ComponentResult _rv, TimeValue mediaTimeOut)")}, - {"MediaChangedNonPrimarySource", (PyCFunction)Qt_MediaChangedNonPrimarySource, 1, - PyDoc_STR("(MediaHandler mh, long inputIndex) -> (ComponentResult _rv)")}, - {"MediaTrackReferencesChanged", (PyCFunction)Qt_MediaTrackReferencesChanged, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv)")}, - {"MediaReleaseSampleDataPointer", (PyCFunction)Qt_MediaReleaseSampleDataPointer, 1, - PyDoc_STR("(MediaHandler mh, long sampleNum) -> (ComponentResult _rv)")}, - {"MediaTrackPropertyAtomChanged", (PyCFunction)Qt_MediaTrackPropertyAtomChanged, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv)")}, - {"MediaSetVideoParam", (PyCFunction)Qt_MediaSetVideoParam, 1, - PyDoc_STR("(MediaHandler mh, long whichParam) -> (ComponentResult _rv, unsigned short value)")}, - {"MediaGetVideoParam", (PyCFunction)Qt_MediaGetVideoParam, 1, - PyDoc_STR("(MediaHandler mh, long whichParam) -> (ComponentResult _rv, unsigned short value)")}, - {"MediaCompare", (PyCFunction)Qt_MediaCompare, 1, - PyDoc_STR("(MediaHandler mh, Media srcMedia, ComponentInstance srcMediaComponent) -> (ComponentResult _rv, Boolean isOK)")}, - {"MediaGetClock", (PyCFunction)Qt_MediaGetClock, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, ComponentInstance clock)")}, - {"MediaSetSoundOutputComponent", (PyCFunction)Qt_MediaSetSoundOutputComponent, 1, - PyDoc_STR("(MediaHandler mh, Component outputComponent) -> (ComponentResult _rv)")}, - {"MediaGetSoundOutputComponent", (PyCFunction)Qt_MediaGetSoundOutputComponent, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, Component outputComponent)")}, - {"MediaSetSoundLocalizationData", (PyCFunction)Qt_MediaSetSoundLocalizationData, 1, - PyDoc_STR("(MediaHandler mh, Handle data) -> (ComponentResult _rv)")}, - {"MediaGetInvalidRegion", (PyCFunction)Qt_MediaGetInvalidRegion, 1, - PyDoc_STR("(MediaHandler mh, RgnHandle rgn) -> (ComponentResult _rv)")}, - {"MediaSampleDescriptionB2N", (PyCFunction)Qt_MediaSampleDescriptionB2N, 1, - PyDoc_STR("(MediaHandler mh, SampleDescriptionHandle sampleDescriptionH) -> (ComponentResult _rv)")}, - {"MediaSampleDescriptionN2B", (PyCFunction)Qt_MediaSampleDescriptionN2B, 1, - PyDoc_STR("(MediaHandler mh, SampleDescriptionHandle sampleDescriptionH) -> (ComponentResult _rv)")}, - {"MediaFlushNonPrimarySourceData", (PyCFunction)Qt_MediaFlushNonPrimarySourceData, 1, - PyDoc_STR("(MediaHandler mh, long inputIndex) -> (ComponentResult _rv)")}, - {"MediaGetURLLink", (PyCFunction)Qt_MediaGetURLLink, 1, - PyDoc_STR("(MediaHandler mh, Point displayWhere) -> (ComponentResult _rv, Handle urlLink)")}, - {"MediaHitTestForTargetRefCon", (PyCFunction)Qt_MediaHitTestForTargetRefCon, 1, - PyDoc_STR("(MediaHandler mh, long flags, Point loc) -> (ComponentResult _rv, long targetRefCon)")}, - {"MediaHitTestTargetRefCon", (PyCFunction)Qt_MediaHitTestTargetRefCon, 1, - PyDoc_STR("(MediaHandler mh, long targetRefCon, long flags, Point loc) -> (ComponentResult _rv, Boolean wasHit)")}, - {"MediaDisposeTargetRefCon", (PyCFunction)Qt_MediaDisposeTargetRefCon, 1, - PyDoc_STR("(MediaHandler mh, long targetRefCon) -> (ComponentResult _rv)")}, - {"MediaTargetRefConsEqual", (PyCFunction)Qt_MediaTargetRefConsEqual, 1, - PyDoc_STR("(MediaHandler mh, long firstRefCon, long secondRefCon) -> (ComponentResult _rv, Boolean equal)")}, - {"MediaPrePrerollCancel", (PyCFunction)Qt_MediaPrePrerollCancel, 1, - PyDoc_STR("(MediaHandler mh, void * refcon) -> (ComponentResult _rv)")}, - {"MediaEnterEmptyEdit", (PyCFunction)Qt_MediaEnterEmptyEdit, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv)")}, - {"MediaCurrentMediaQueuedData", (PyCFunction)Qt_MediaCurrentMediaQueuedData, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, long milliSecs)")}, - {"MediaGetEffectiveVolume", (PyCFunction)Qt_MediaGetEffectiveVolume, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, short volume)")}, - {"MediaGetSoundLevelMeteringEnabled", (PyCFunction)Qt_MediaGetSoundLevelMeteringEnabled, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, Boolean enabled)")}, - {"MediaSetSoundLevelMeteringEnabled", (PyCFunction)Qt_MediaSetSoundLevelMeteringEnabled, 1, - PyDoc_STR("(MediaHandler mh, Boolean enable) -> (ComponentResult _rv)")}, - {"MediaGetEffectiveSoundBalance", (PyCFunction)Qt_MediaGetEffectiveSoundBalance, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, short balance)")}, - {"MediaSetScreenLock", (PyCFunction)Qt_MediaSetScreenLock, 1, - PyDoc_STR("(MediaHandler mh, Boolean lockIt) -> (ComponentResult _rv)")}, - {"MediaGetErrorString", (PyCFunction)Qt_MediaGetErrorString, 1, - PyDoc_STR("(MediaHandler mh, ComponentResult theError, Str255 errorString) -> (ComponentResult _rv)")}, - {"MediaGetSoundEqualizerBandLevels", (PyCFunction)Qt_MediaGetSoundEqualizerBandLevels, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, UInt8 bandLevels)")}, - {"MediaDoIdleActions", (PyCFunction)Qt_MediaDoIdleActions, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv)")}, - {"MediaSetSoundBassAndTreble", (PyCFunction)Qt_MediaSetSoundBassAndTreble, 1, - PyDoc_STR("(MediaHandler mh, short bass, short treble) -> (ComponentResult _rv)")}, - {"MediaGetSoundBassAndTreble", (PyCFunction)Qt_MediaGetSoundBassAndTreble, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, short bass, short treble)")}, - {"MediaTimeBaseChanged", (PyCFunction)Qt_MediaTimeBaseChanged, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv)")}, - {"MediaMCIsPlayerEvent", (PyCFunction)Qt_MediaMCIsPlayerEvent, 1, - PyDoc_STR("(MediaHandler mh, EventRecord e) -> (ComponentResult _rv, Boolean handledIt)")}, - {"MediaGetMediaLoadState", (PyCFunction)Qt_MediaGetMediaLoadState, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, long mediaLoadState)")}, - {"MediaVideoOutputChanged", (PyCFunction)Qt_MediaVideoOutputChanged, 1, - PyDoc_STR("(MediaHandler mh, ComponentInstance vout) -> (ComponentResult _rv)")}, - {"MediaEmptySampleCache", (PyCFunction)Qt_MediaEmptySampleCache, 1, - PyDoc_STR("(MediaHandler mh, long sampleNum, long sampleCount) -> (ComponentResult _rv)")}, - {"MediaGetPublicInfo", (PyCFunction)Qt_MediaGetPublicInfo, 1, - PyDoc_STR("(MediaHandler mh, OSType infoSelector, void * infoDataPtr) -> (ComponentResult _rv, Size ioDataSize)")}, - {"MediaSetPublicInfo", (PyCFunction)Qt_MediaSetPublicInfo, 1, - PyDoc_STR("(MediaHandler mh, OSType infoSelector, void * infoDataPtr, Size dataSize) -> (ComponentResult _rv)")}, - {"MediaRefConSetProperty", (PyCFunction)Qt_MediaRefConSetProperty, 1, - PyDoc_STR("(MediaHandler mh, long refCon, long propertyType, void * propertyValue) -> (ComponentResult _rv)")}, - {"MediaRefConGetProperty", (PyCFunction)Qt_MediaRefConGetProperty, 1, - PyDoc_STR("(MediaHandler mh, long refCon, long propertyType, void * propertyValue) -> (ComponentResult _rv)")}, - {"MediaNavigateTargetRefCon", (PyCFunction)Qt_MediaNavigateTargetRefCon, 1, - PyDoc_STR("(MediaHandler mh, long navigation) -> (ComponentResult _rv, long refCon)")}, - {"MediaGGetIdleManager", (PyCFunction)Qt_MediaGGetIdleManager, 1, - PyDoc_STR("(MediaHandler mh) -> (ComponentResult _rv, IdleManager pim)")}, - {"MediaGSetIdleManager", (PyCFunction)Qt_MediaGSetIdleManager, 1, - PyDoc_STR("(MediaHandler mh, IdleManager im) -> (ComponentResult _rv)")}, - {"QTMIDIGetMIDIPorts", (PyCFunction)Qt_QTMIDIGetMIDIPorts, 1, - PyDoc_STR("(QTMIDIComponent ci) -> (ComponentResult _rv, QTMIDIPortListHandle inputPorts, QTMIDIPortListHandle outputPorts)")}, - {"QTMIDIUseSendPort", (PyCFunction)Qt_QTMIDIUseSendPort, 1, - PyDoc_STR("(QTMIDIComponent ci, long portIndex, long inUse) -> (ComponentResult _rv)")}, - {"QTMIDISendMIDI", (PyCFunction)Qt_QTMIDISendMIDI, 1, - PyDoc_STR("(QTMIDIComponent ci, long portIndex, MusicMIDIPacket mp) -> (ComponentResult _rv)")}, - {"MusicGetPart", (PyCFunction)Qt_MusicGetPart, 1, - PyDoc_STR("(MusicComponent mc, long part) -> (ComponentResult _rv, long midiChannel, long polyphony)")}, - {"MusicSetPart", (PyCFunction)Qt_MusicSetPart, 1, - PyDoc_STR("(MusicComponent mc, long part, long midiChannel, long polyphony) -> (ComponentResult _rv)")}, - {"MusicSetPartInstrumentNumber", (PyCFunction)Qt_MusicSetPartInstrumentNumber, 1, - PyDoc_STR("(MusicComponent mc, long part, long instrumentNumber) -> (ComponentResult _rv)")}, - {"MusicGetPartInstrumentNumber", (PyCFunction)Qt_MusicGetPartInstrumentNumber, 1, - PyDoc_STR("(MusicComponent mc, long part) -> (ComponentResult _rv)")}, - {"MusicStorePartInstrument", (PyCFunction)Qt_MusicStorePartInstrument, 1, - PyDoc_STR("(MusicComponent mc, long part, long instrumentNumber) -> (ComponentResult _rv)")}, - {"MusicGetPartAtomicInstrument", (PyCFunction)Qt_MusicGetPartAtomicInstrument, 1, - PyDoc_STR("(MusicComponent mc, long part, long flags) -> (ComponentResult _rv, AtomicInstrument ai)")}, - {"MusicSetPartAtomicInstrument", (PyCFunction)Qt_MusicSetPartAtomicInstrument, 1, - PyDoc_STR("(MusicComponent mc, long part, AtomicInstrumentPtr aiP, long flags) -> (ComponentResult _rv)")}, - {"MusicGetPartKnob", (PyCFunction)Qt_MusicGetPartKnob, 1, - PyDoc_STR("(MusicComponent mc, long part, long knobID) -> (ComponentResult _rv)")}, - {"MusicSetPartKnob", (PyCFunction)Qt_MusicSetPartKnob, 1, - PyDoc_STR("(MusicComponent mc, long part, long knobID, long knobValue) -> (ComponentResult _rv)")}, - {"MusicGetKnob", (PyCFunction)Qt_MusicGetKnob, 1, - PyDoc_STR("(MusicComponent mc, long knobID) -> (ComponentResult _rv)")}, - {"MusicSetKnob", (PyCFunction)Qt_MusicSetKnob, 1, - PyDoc_STR("(MusicComponent mc, long knobID, long knobValue) -> (ComponentResult _rv)")}, - {"MusicGetPartName", (PyCFunction)Qt_MusicGetPartName, 1, - PyDoc_STR("(MusicComponent mc, long part, StringPtr name) -> (ComponentResult _rv)")}, - {"MusicSetPartName", (PyCFunction)Qt_MusicSetPartName, 1, - PyDoc_STR("(MusicComponent mc, long part, StringPtr name) -> (ComponentResult _rv)")}, - {"MusicPlayNote", (PyCFunction)Qt_MusicPlayNote, 1, - PyDoc_STR("(MusicComponent mc, long part, long pitch, long velocity) -> (ComponentResult _rv)")}, - {"MusicResetPart", (PyCFunction)Qt_MusicResetPart, 1, - PyDoc_STR("(MusicComponent mc, long part) -> (ComponentResult _rv)")}, - {"MusicSetPartController", (PyCFunction)Qt_MusicSetPartController, 1, - PyDoc_STR("(MusicComponent mc, long part, MusicController controllerNumber, long controllerValue) -> (ComponentResult _rv)")}, - {"MusicGetPartController", (PyCFunction)Qt_MusicGetPartController, 1, - PyDoc_STR("(MusicComponent mc, long part, MusicController controllerNumber) -> (ComponentResult _rv)")}, - {"MusicGetInstrumentNames", (PyCFunction)Qt_MusicGetInstrumentNames, 1, - PyDoc_STR("(MusicComponent mc, long modifiableInstruments) -> (ComponentResult _rv, Handle instrumentNames, Handle instrumentCategoryLasts, Handle instrumentCategoryNames)")}, - {"MusicGetDrumNames", (PyCFunction)Qt_MusicGetDrumNames, 1, - PyDoc_STR("(MusicComponent mc, long modifiableInstruments) -> (ComponentResult _rv, Handle instrumentNumbers, Handle instrumentNames)")}, - {"MusicGetMasterTune", (PyCFunction)Qt_MusicGetMasterTune, 1, - PyDoc_STR("(MusicComponent mc) -> (ComponentResult _rv)")}, - {"MusicSetMasterTune", (PyCFunction)Qt_MusicSetMasterTune, 1, - PyDoc_STR("(MusicComponent mc, long masterTune) -> (ComponentResult _rv)")}, - {"MusicGetDeviceConnection", (PyCFunction)Qt_MusicGetDeviceConnection, 1, - PyDoc_STR("(MusicComponent mc, long index) -> (ComponentResult _rv, long id1, long id2)")}, - {"MusicUseDeviceConnection", (PyCFunction)Qt_MusicUseDeviceConnection, 1, - PyDoc_STR("(MusicComponent mc, long id1, long id2) -> (ComponentResult _rv)")}, - {"MusicGetKnobSettingStrings", (PyCFunction)Qt_MusicGetKnobSettingStrings, 1, - PyDoc_STR("(MusicComponent mc, long knobIndex, long isGlobal) -> (ComponentResult _rv, Handle settingsNames, Handle settingsCategoryLasts, Handle settingsCategoryNames)")}, - {"MusicGetMIDIPorts", (PyCFunction)Qt_MusicGetMIDIPorts, 1, - PyDoc_STR("(MusicComponent mc) -> (ComponentResult _rv, long inputPortCount, long outputPortCount)")}, - {"MusicSendMIDI", (PyCFunction)Qt_MusicSendMIDI, 1, - PyDoc_STR("(MusicComponent mc, long portIndex, MusicMIDIPacket mp) -> (ComponentResult _rv)")}, - {"MusicSetOfflineTimeTo", (PyCFunction)Qt_MusicSetOfflineTimeTo, 1, - PyDoc_STR("(MusicComponent mc, long newTimeStamp) -> (ComponentResult _rv)")}, - {"MusicGetInfoText", (PyCFunction)Qt_MusicGetInfoText, 1, - PyDoc_STR("(MusicComponent mc, long selector) -> (ComponentResult _rv, Handle textH, Handle styleH)")}, - {"MusicGetInstrumentInfo", (PyCFunction)Qt_MusicGetInstrumentInfo, 1, - PyDoc_STR("(MusicComponent mc, long getInstrumentInfoFlags) -> (ComponentResult _rv, InstrumentInfoListHandle infoListH)")}, - {"MusicTask", (PyCFunction)Qt_MusicTask, 1, - PyDoc_STR("(MusicComponent mc) -> (ComponentResult _rv)")}, - {"MusicSetPartInstrumentNumberInterruptSafe", (PyCFunction)Qt_MusicSetPartInstrumentNumberInterruptSafe, 1, - PyDoc_STR("(MusicComponent mc, long part, long instrumentNumber) -> (ComponentResult _rv)")}, - {"MusicSetPartSoundLocalization", (PyCFunction)Qt_MusicSetPartSoundLocalization, 1, - PyDoc_STR("(MusicComponent mc, long part, Handle data) -> (ComponentResult _rv)")}, - {"MusicGenericConfigure", (PyCFunction)Qt_MusicGenericConfigure, 1, - PyDoc_STR("(MusicComponent mc, long mode, long flags, long baseResID) -> (ComponentResult _rv)")}, - {"MusicGenericGetKnobList", (PyCFunction)Qt_MusicGenericGetKnobList, 1, - PyDoc_STR("(MusicComponent mc, long knobType) -> (ComponentResult _rv, GenericKnobDescriptionListHandle gkdlH)")}, - {"MusicGenericSetResourceNumbers", (PyCFunction)Qt_MusicGenericSetResourceNumbers, 1, - PyDoc_STR("(MusicComponent mc, Handle resourceIDH) -> (ComponentResult _rv)")}, - {"MusicDerivedMIDISend", (PyCFunction)Qt_MusicDerivedMIDISend, 1, - PyDoc_STR("(MusicComponent mc, MusicMIDIPacket packet) -> (ComponentResult _rv)")}, - {"MusicDerivedOpenResFile", (PyCFunction)Qt_MusicDerivedOpenResFile, 1, - PyDoc_STR("(MusicComponent mc) -> (ComponentResult _rv)")}, - {"MusicDerivedCloseResFile", (PyCFunction)Qt_MusicDerivedCloseResFile, 1, - PyDoc_STR("(MusicComponent mc, short resRefNum) -> (ComponentResult _rv)")}, - {"NAUnregisterMusicDevice", (PyCFunction)Qt_NAUnregisterMusicDevice, 1, - PyDoc_STR("(NoteAllocator na, long index) -> (ComponentResult _rv)")}, - {"NASaveMusicConfiguration", (PyCFunction)Qt_NASaveMusicConfiguration, 1, - PyDoc_STR("(NoteAllocator na) -> (ComponentResult _rv)")}, - {"NAGetMIDIPorts", (PyCFunction)Qt_NAGetMIDIPorts, 1, - PyDoc_STR("(NoteAllocator na) -> (ComponentResult _rv, QTMIDIPortListHandle inputPorts, QTMIDIPortListHandle outputPorts)")}, - {"NATask", (PyCFunction)Qt_NATask, 1, - PyDoc_STR("(NoteAllocator na) -> (ComponentResult _rv)")}, - {"TuneSetHeader", (PyCFunction)Qt_TuneSetHeader, 1, - PyDoc_STR("(TunePlayer tp, unsigned long * header) -> (ComponentResult _rv)")}, - {"TuneGetTimeBase", (PyCFunction)Qt_TuneGetTimeBase, 1, - PyDoc_STR("(TunePlayer tp) -> (ComponentResult _rv, TimeBase tb)")}, - {"TuneSetTimeScale", (PyCFunction)Qt_TuneSetTimeScale, 1, - PyDoc_STR("(TunePlayer tp, TimeScale scale) -> (ComponentResult _rv)")}, - {"TuneGetTimeScale", (PyCFunction)Qt_TuneGetTimeScale, 1, - PyDoc_STR("(TunePlayer tp) -> (ComponentResult _rv, TimeScale scale)")}, - {"TuneInstant", (PyCFunction)Qt_TuneInstant, 1, - PyDoc_STR("(TunePlayer tp, unsigned long tunePosition) -> (ComponentResult _rv, unsigned long tune)")}, - {"TuneStop", (PyCFunction)Qt_TuneStop, 1, - PyDoc_STR("(TunePlayer tp, long stopFlags) -> (ComponentResult _rv)")}, - {"TuneSetVolume", (PyCFunction)Qt_TuneSetVolume, 1, - PyDoc_STR("(TunePlayer tp, Fixed volume) -> (ComponentResult _rv)")}, - {"TuneGetVolume", (PyCFunction)Qt_TuneGetVolume, 1, - PyDoc_STR("(TunePlayer tp) -> (ComponentResult _rv)")}, - {"TunePreroll", (PyCFunction)Qt_TunePreroll, 1, - PyDoc_STR("(TunePlayer tp) -> (ComponentResult _rv)")}, - {"TuneUnroll", (PyCFunction)Qt_TuneUnroll, 1, - PyDoc_STR("(TunePlayer tp) -> (ComponentResult _rv)")}, - {"TuneSetPartTranspose", (PyCFunction)Qt_TuneSetPartTranspose, 1, - PyDoc_STR("(TunePlayer tp, unsigned long part, long transpose, long velocityShift) -> (ComponentResult _rv)")}, - {"TuneGetNoteAllocator", (PyCFunction)Qt_TuneGetNoteAllocator, 1, - PyDoc_STR("(TunePlayer tp) -> (NoteAllocator _rv)")}, - {"TuneSetSofter", (PyCFunction)Qt_TuneSetSofter, 1, - PyDoc_STR("(TunePlayer tp, long softer) -> (ComponentResult _rv)")}, - {"TuneTask", (PyCFunction)Qt_TuneTask, 1, - PyDoc_STR("(TunePlayer tp) -> (ComponentResult _rv)")}, - {"TuneSetBalance", (PyCFunction)Qt_TuneSetBalance, 1, - PyDoc_STR("(TunePlayer tp, long balance) -> (ComponentResult _rv)")}, - {"TuneSetSoundLocalization", (PyCFunction)Qt_TuneSetSoundLocalization, 1, - PyDoc_STR("(TunePlayer tp, Handle data) -> (ComponentResult _rv)")}, - {"TuneSetHeaderWithSize", (PyCFunction)Qt_TuneSetHeaderWithSize, 1, - PyDoc_STR("(TunePlayer tp, unsigned long * header, unsigned long size) -> (ComponentResult _rv)")}, - {"TuneSetPartMix", (PyCFunction)Qt_TuneSetPartMix, 1, - PyDoc_STR("(TunePlayer tp, unsigned long partNumber, long volume, long balance, long mixFlags) -> (ComponentResult _rv)")}, - {"TuneGetPartMix", (PyCFunction)Qt_TuneGetPartMix, 1, - PyDoc_STR("(TunePlayer tp, unsigned long partNumber) -> (ComponentResult _rv, long volumeOut, long balanceOut, long mixFlagsOut)")}, - {"AlignWindow", (PyCFunction)Qt_AlignWindow, 1, - PyDoc_STR("(WindowPtr wp, Boolean front) -> None")}, - {"DragAlignedWindow", (PyCFunction)Qt_DragAlignedWindow, 1, - PyDoc_STR("(WindowPtr wp, Point startPt, Rect boundsRect) -> None")}, - {"MoviesTask", (PyCFunction)Qt_MoviesTask, 1, - PyDoc_STR("(long maxMilliSecToUse) -> None")}, -#endif /* __LP64__ */ - {NULL, NULL, 0} -}; - - - - -void init_Qt(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; - - - - PyMac_INIT_TOOLBOX_OBJECT_NEW(Track, TrackObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Track, TrackObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(Movie, MovieObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Movie, MovieObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(MovieController, MovieCtlObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MovieController, MovieCtlObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(TimeBase, TimeBaseObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TimeBase, TimeBaseObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(UserData, UserDataObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(UserData, UserDataObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(Media, MediaObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Media, MediaObj_Convert); -#endif /* __LP64__ */ - - - m = Py_InitModule("_Qt", Qt_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - Qt_Error = PyMac_GetOSErrException(); - if (Qt_Error == NULL || - PyDict_SetItemString(d, "Error", Qt_Error) != 0) - return; - IdleManager_Type.ob_type = &PyType_Type; - if (PyType_Ready(&IdleManager_Type) < 0) return; - Py_INCREF(&IdleManager_Type); - PyModule_AddObject(m, "IdleManager", (PyObject *)&IdleManager_Type); - /* Backward-compatible name */ - Py_INCREF(&IdleManager_Type); - PyModule_AddObject(m, "IdleManagerType", (PyObject *)&IdleManager_Type); - MovieController_Type.ob_type = &PyType_Type; - if (PyType_Ready(&MovieController_Type) < 0) return; - Py_INCREF(&MovieController_Type); - PyModule_AddObject(m, "MovieController", (PyObject *)&MovieController_Type); - /* Backward-compatible name */ - Py_INCREF(&MovieController_Type); - PyModule_AddObject(m, "MovieControllerType", (PyObject *)&MovieController_Type); - TimeBase_Type.ob_type = &PyType_Type; - if (PyType_Ready(&TimeBase_Type) < 0) return; - Py_INCREF(&TimeBase_Type); - PyModule_AddObject(m, "TimeBase", (PyObject *)&TimeBase_Type); - /* Backward-compatible name */ - Py_INCREF(&TimeBase_Type); - PyModule_AddObject(m, "TimeBaseType", (PyObject *)&TimeBase_Type); - UserData_Type.ob_type = &PyType_Type; - if (PyType_Ready(&UserData_Type) < 0) return; - Py_INCREF(&UserData_Type); - PyModule_AddObject(m, "UserData", (PyObject *)&UserData_Type); - /* Backward-compatible name */ - Py_INCREF(&UserData_Type); - PyModule_AddObject(m, "UserDataType", (PyObject *)&UserData_Type); - Media_Type.ob_type = &PyType_Type; - if (PyType_Ready(&Media_Type) < 0) return; - Py_INCREF(&Media_Type); - PyModule_AddObject(m, "Media", (PyObject *)&Media_Type); - /* Backward-compatible name */ - Py_INCREF(&Media_Type); - PyModule_AddObject(m, "MediaType", (PyObject *)&Media_Type); - Track_Type.ob_type = &PyType_Type; - if (PyType_Ready(&Track_Type) < 0) return; - Py_INCREF(&Track_Type); - PyModule_AddObject(m, "Track", (PyObject *)&Track_Type); - /* Backward-compatible name */ - Py_INCREF(&Track_Type); - PyModule_AddObject(m, "TrackType", (PyObject *)&Track_Type); - Movie_Type.ob_type = &PyType_Type; - if (PyType_Ready(&Movie_Type) < 0) return; - Py_INCREF(&Movie_Type); - PyModule_AddObject(m, "Movie", (PyObject *)&Movie_Type); - /* Backward-compatible name */ - Py_INCREF(&Movie_Type); - PyModule_AddObject(m, "MovieType", (PyObject *)&Movie_Type); - SGOutput_Type.ob_type = &PyType_Type; - if (PyType_Ready(&SGOutput_Type) < 0) return; - Py_INCREF(&SGOutput_Type); - PyModule_AddObject(m, "SGOutput", (PyObject *)&SGOutput_Type); - /* Backward-compatible name */ - Py_INCREF(&SGOutput_Type); - PyModule_AddObject(m, "SGOutputType", (PyObject *)&SGOutput_Type); -#endif /* __LP64__ */ -} - -/* ========================= End module _Qt ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/qt/qtscan.py b/project/jni/python/src/Mac/Modules/qt/qtscan.py deleted file mode 100644 index cd001244f..000000000 --- a/project/jni/python/src/Mac/Modules/qt/qtscan.py +++ /dev/null @@ -1,318 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner - -LONG = "QuickTime" -SHORT = "qt" -HEADERFILES= ( -# "Components.h" -- In Carbon.Cm - "Movies.h", - "ImageCompression.h", - "QuickTimeComponents.h", -# "ImageCodec.h" -- seems not too useful, and difficult. -# "IsochronousDataHandlers.h" -- Is this useful? - "MediaHandlers.h", -# "QTML.h", -- Windows only, needs separate module -# "QuickTimeStreaming.h", -- Difficult -# "QTStreamingComponents.h", -- Needs QTStreaming - "QuickTimeMusic.h", -# "QuickTimeVR.h", -- Not done yet -# "Sound.h", -- In Carbon.Snd - ) -OBJECTS = ("Movie", "Track", "Media", "UserData", "TimeBase", "MovieController", - "IdleManager", "SGOutput") - -def main(): - input = HEADERFILES - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - scanner.gentypetest(SHORT+"typetest.py") - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t in OBJECTS and m == "InMode": - classname = "Method" - listname = t + "_methods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - self.defsfile.write("xmlIdentifierUnrecognized = -1\n") - self.defsfile.write("kControllerMinimum = -0xf777\n") - self.defsfile.write("notImplementedMusicOSErr = -2071\n") - self.defsfile.write("cantSendToSynthesizerOSErr = -2072\n") - self.defsfile.write("cantReceiveFromSynthesizerOSErr = -2073\n") - self.defsfile.write("illegalVoiceAllocationOSErr = -2074\n") - self.defsfile.write("illegalPartOSErr = -2075\n") - self.defsfile.write("illegalChannelOSErr = -2076\n") - self.defsfile.write("illegalKnobOSErr = -2077\n") - self.defsfile.write("illegalKnobValueOSErr = -2078\n") - self.defsfile.write("illegalInstrumentOSErr = -2079\n") - self.defsfile.write("illegalControllerOSErr = -2080\n") - self.defsfile.write("midiManagerAbsentOSErr = -2081\n") - self.defsfile.write("synthesizerNotRespondingOSErr = -2082\n") - self.defsfile.write("synthesizerOSErr = -2083\n") - self.defsfile.write("illegalNoteChannelOSErr = -2084\n") - self.defsfile.write("noteChannelNotAllocatedOSErr = -2085\n") - self.defsfile.write("tunePlayerFullOSErr = -2086\n") - self.defsfile.write("tuneParseOSErr = -2087\n") - - def makeblacklistnames(self): - return [ - "xmlIdentifierUnrecognized", # const with incompatible definition - "DisposeMovie", # Done on python-object disposal - "DisposeMovieTrack", # ditto - "DisposeTrackMedia", # ditto - "DisposeUserData", # ditto -# "DisposeTimeBase", # ditto - "DisposeMovieController", # ditto - - # The following 4 use 'void *' in an uncontrolled way - # TBD when I've read the manual... - "GetUserDataItem", - "SetUserDataItem", - "SetTextSampleData", - "BeginFullScreen", - # bgen gets the argument in/out wrong.. - "AddTextSample", - "AddTESample", - "AddHiliteSample", - "HiliteTextSample", - - "MakeTrackTimeTable", # Uses long * return? - "MakeMediaTimeTable", # ditto -## "VideoMediaGetStallCount", # Undefined in CW Pro 3 library - # OS8 only: - 'SpriteMediaGetIndImageProperty', # XXXX Why isn't this in carbon? - 'CheckQuickTimeRegistration', - 'SetMovieAnchorDataRef', - 'GetMovieAnchorDataRef', - 'GetMovieLoadState', - 'OpenADataHandler', - 'MovieMediaGetCurrentMovieProperty', - 'MovieMediaGetCurrentTrackProperty', - 'MovieMediaGetChildMovieDataReference', - 'MovieMediaSetChildMovieDataReference', - 'MovieMediaLoadChildMovieFromDataReference', - 'Media3DGetViewObject', - - # these are ImageCompression blacklists - "GraphicsExportGetInputPtr", - - # QuickTimeComponents - # These two need some help: the first returns a point to a databuffer that - # the second disposes. Generate manually? - "VDCompressDone", - "VDReleaseCompressBuffer", - "QTVideoOutputGetGWorldParameters", # How useful is this? - - # MediaHandlers - "MediaMakeMediaTimeTable", # just lazy - "MediaGetSampleDataPointer", # funny output pointer - - # QuickTimeMusic - "kControllerMinimum", - # These are artefacts of a macro definition - "ulen", - "_ext", - "x", - "w1", - "w2", - ] - - def makeblacklisttypes(self): - return [ - # I don't think we want to do these - "QTSyncTaskPtr", - # We dont do callbacks yet, so no need for these - "QTCallBack", - # Skipped for now, due to laziness - "TrackEditState", - "MovieEditState", - "MatrixRecord", - "MatrixRecord_ptr", - "SampleReferencePtr", - "QTTweener", - "QTErrorReplacementPtr", - "QTRestrictionSet", - "QTUUID", - "QTUUID_ptr", - - # Routine pointers, not yet. - "MoviesErrorUPP", - "MoviePreviewCallOutUPP", - "MovieDrawingCompleteUPP", - "QTCallBackUPP", - "TextMediaUPP", - "MovieProgressUPP", - "MovieRgnCoverUPP", - "MCActionFilterUPP", - "MCActionFilterWithRefConUPP", - "GetMovieUPP", - "ModalFilterUPP", - "TrackTransferUPP", - "MoviePrePrerollCompleteUPP", - "MovieExecuteWiredActionsUPP", - "QTBandwidthNotificationUPP", - "DoMCActionUPP", - "QTNextTaskNeededSoonerCallbackUPP", - - "SampleReference64Ptr", # Don't know what this does, yet - "QTRuntimeSpriteDescPtr", - "QTBandwidthReference", - "QTScheduledBandwidthReference", - "QTAtomContainer", - "SpriteWorld", - "Sprite", - - # these are ImageCompression blacklists - "ICMDataUPP", - "ICMFlushUPP", - "ICMCompletionUPP", - "ICMProgressUPP", - "StdPixUPP", - "QDPixUPP", - "ICMAlignmentUPP", - "ICMCursorShieldedUPP", - "ICMMemoryDisposedUPP", - "ICMConvertDataFormatUPP", - "ModalFilterYDUPP", - "FileFilterUPP", - - "CodecNameSpecListPtr", - "CodecInfo", - "ImageSequence", - "MatrixRecordPtr", - "ICMDataProcRecordPtr", - "OpenCPicParams", - "ICMProgressProcRecordPtr", - "ICMAlignmentProcRecordPtr", - "ICMPixelFormatInfoPtr", - "ImageSequenceDataSource", - "ConstStrFileNameParam", - "ImageTranscodeSequence", - "ImageFieldSequence", - "Fract", - "PixMapPtr", - "GWorldFlags", - "void_ptr", # XXX Being lazy, this one is doable. - - # These are from QuickTimeComponents - "CDataHandlerUPP", - "CharDataHandlerUPP", - "CommentHandlerUPP", - "DataHCompletionUPP", - "'MovieExportGetDataUPP", - "MovieExportGetPropertyUPP", - "PreprocessInstructionHandlerUPP", - "SGModalFilterUPP", - "StartDocumentHandlerUPP", - "StartElementHandlerUPP", - "VdigIntUPP", - "SGDataUPP", - "EndDocumentHandlerUPP", - "EndElementHandlerUPP", - "VideoBottles", # Record full of UPPs - - "SCParams", - "ICMCompletionProcRecordPtr", - "DataHVolumeList", - "DigitizerInfo", - "SGCompressInfo", - "SeqGrabExtendedFrameInfoPtr", - "SeqGrabFrameInfoPtr", - "TCTextOptionsPtr", - "SGCompressInfo_ptr", - "SGDeviceList", - "TextDisplayData", - "TimeCodeDef", - "TimeCodeRecord", - "TweenRecord", - "VDGamRecPtr", - "ToneDescription", # XXXX Just lazy: this one is easy. - "XMLDoc", - "UInt64", # XXXX lazy - "UInt64_ptr", # XXXX lazy - - # From MediaHandlers - "ActionsUPP", - "PrePrerollCompleteUPP", - "CodecComponentHandle", # Difficult: handle containing list of components. - "GetMovieCompleteParams", # Immense struct - "LevelMeterInfoPtr", # Lazy. Also: can be an output parameter!! - "MediaEQSpectrumBandsRecordPtr", # ditto - - # From QuickTimeMusic - "MusicMIDISendUPP", - "MusicOfflineDataUPP", - "TuneCallBackUPP", - "TunePlayCallBackUPP", - "GCPart", # Struct with lots of fields - "GCPart_ptr", - "GenericKnobDescription", # Struct with lots of fields - "KnobDescription", # Struct with lots of fields - "InstrumentAboutInfo", # Struct, not too difficult - "NoteChannel", # XXXX Lazy. Could be opaque, I think - "NoteRequest", # XXXX Lazy. Not-too-difficult struct - "SynthesizerConnections", # Struct with lots of fields - "SynthesizerDescription", # Struct with lots of fields - "TuneStatus", # Struct with lots of fields - - ] - - def makerepairinstructions(self): - return [ - ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]), - - # Movie controller creation - ([('ComponentInstance', 'NewMovieController', 'ReturnMode')], - [('MovieController', '*', 'ReturnMode')]), - - # NewMovieFromFile - ([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')], - [('short', 'resId', 'InOutMode'), ('dummyStringPtr', 'resName', 'InMode')]), - - # MCDoAction and more - ([('void', '*', 'OutMode')], [('mcactionparams', '*', 'InMode')]), - - # SetTimeBaseZero. Does not handle NULLs, unfortunately - ([('TimeRecord', 'zero', 'OutMode')], [('TimeRecord', 'zero', 'InMode')]), - - # ConvertTime and ConvertTimeScale - ([('TimeRecord', 'inout', 'OutMode')], [('TimeRecord', 'inout', 'InOutMode')]), - ([('TimeRecord', 'theTime', 'OutMode')], [('TimeRecord', 'theTime', 'InOutMode')]), - - # AddTime and SubtractTime - ([('TimeRecord', 'dst', 'OutMode')], [('TimeRecord', 'dst', 'InOutMode')]), - - # Funny definitions - ([('char_ptr', '*', 'InMode')], [('stringptr', '*', 'InMode')]), - ([('FSSpecPtr', '*', 'InMode')], [('FSSpec_ptr', '*', 'InMode')]), - ([('unsigned_char', 'swfVersion', 'OutMode')], [('UInt8', 'swfVersion', 'OutMode')]), - - # It seems MusicMIDIPacket if never flagged with const but always used - # for sending only. If that ever changes this needs to be fixed. - ([('MusicMIDIPacket', '*', 'OutMode')], [('MusicMIDIPacket_ptr', '*', 'InMode')]), - - # QTMusic const-less input parameters - ([('unsigned_long', 'header', 'OutMode')], [('UnsignedLongPtr', 'header', 'InMode')]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/qt/qtsupport.py b/project/jni/python/src/Mac/Modules/qt/qtsupport.py deleted file mode 100644 index 14e6d1660..000000000 --- a/project/jni/python/src/Mac/Modules/qt/qtsupport.py +++ /dev/null @@ -1,382 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -#error missing SetActionFilter - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'Movies.h' # The Apple header file -MODNAME = '_Qt' # The name of the module -OBJECTNAME = 'Movie' # The basic name of the objects used here - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Qt' # The prefix for module-wide routines -OBJECTTYPE = "Movie" # The C type used to represent them -OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects - -includestuff = includestuff + """ -#include - - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_TrackObj_New(Track); -extern int _TrackObj_Convert(PyObject *, Track *); -extern PyObject *_MovieObj_New(Movie); -extern int _MovieObj_Convert(PyObject *, Movie *); -extern PyObject *_MovieCtlObj_New(MovieController); -extern int _MovieCtlObj_Convert(PyObject *, MovieController *); -extern PyObject *_TimeBaseObj_New(TimeBase); -extern int _TimeBaseObj_Convert(PyObject *, TimeBase *); -extern PyObject *_UserDataObj_New(UserData); -extern int _UserDataObj_Convert(PyObject *, UserData *); -extern PyObject *_MediaObj_New(Media); -extern int _MediaObj_Convert(PyObject *, Media *); - -#define TrackObj_New _TrackObj_New -#define TrackObj_Convert _TrackObj_Convert -#define MovieObj_New _MovieObj_New -#define MovieObj_Convert _MovieObj_Convert -#define MovieCtlObj_New _MovieCtlObj_New -#define MovieCtlObj_Convert _MovieCtlObj_Convert -#define TimeBaseObj_New _TimeBaseObj_New -#define TimeBaseObj_Convert _TimeBaseObj_Convert -#define UserDataObj_New _UserDataObj_New -#define UserDataObj_Convert _UserDataObj_Convert -#define MediaObj_New _MediaObj_New -#define MediaObj_Convert _MediaObj_Convert -#endif - -/* Macro to allow us to GetNextInterestingTime without duration */ -#define GetMediaNextInterestingTimeOnly(media, flags, time, rate, rv) \ - GetMediaNextInterestingTime(media, flags, time, rate, rv, NULL) - -/* -** Parse/generate time records -*/ -static PyObject * -QtTimeRecord_New(TimeRecord *itself) -{ - if (itself->base) - return Py_BuildValue("O&lO&", PyMac_Buildwide, &itself->value, itself->scale, - TimeBaseObj_New, itself->base); - else - return Py_BuildValue("O&lO", PyMac_Buildwide, &itself->value, itself->scale, - Py_None); -} - -static int -QtTimeRecord_Convert(PyObject *v, TimeRecord *p_itself) -{ - PyObject *base = NULL; - if( !PyArg_ParseTuple(v, "O&l|O", PyMac_Getwide, &p_itself->value, &p_itself->scale, - &base) ) - return 0; - if ( base == NULL || base == Py_None ) - p_itself->base = NULL; - else - if ( !TimeBaseObj_Convert(base, &p_itself->base) ) - return 0; - return 1; -} - -static int -QtMusicMIDIPacket_Convert(PyObject *v, MusicMIDIPacket *p_itself) -{ - int dummy; - - if( !PyArg_ParseTuple(v, "hls#", &p_itself->length, &p_itself->reserved, p_itself->data, dummy) ) - return 0; - return 1; -} - - - -""" - -initstuff = initstuff + """ - PyMac_INIT_TOOLBOX_OBJECT_NEW(Track, TrackObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Track, TrackObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(Movie, MovieObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Movie, MovieObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(MovieController, MovieCtlObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(MovieController, MovieCtlObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(TimeBase, TimeBaseObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TimeBase, TimeBaseObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(UserData, UserDataObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(UserData, UserDataObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(Media, MediaObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Media, MediaObj_Convert); -""" - -# Our (opaque) objects -Movie = OpaqueByValueType('Movie', 'MovieObj') -NullMovie = FakeType("(Movie)0") -Track = OpaqueByValueType('Track', 'TrackObj') -Media = OpaqueByValueType('Media', 'MediaObj') -UserData = OpaqueByValueType('UserData', 'UserDataObj') -TimeBase = OpaqueByValueType('TimeBase', 'TimeBaseObj') -MovieController = OpaqueByValueType('MovieController', 'MovieCtlObj') -IdleManager = OpaqueByValueType('IdleManager', 'IdleManagerObj') -SGOutput = OpaqueByValueType('SGOutput', 'SGOutputObj') - -# Other opaque objects -Component = OpaqueByValueType('Component', 'CmpObj') -MediaHandlerComponent = OpaqueByValueType('MediaHandlerComponent', 'CmpObj') -DataHandlerComponent = OpaqueByValueType('DataHandlerComponent', 'CmpObj') -CompressorComponent = OpaqueByValueType('CompressorComponent', 'CmpObj') -DecompressorComponent = OpaqueByValueType('DecompressorComponent', 'CmpObj') -CodecComponent = OpaqueByValueType('CodecComponent', 'CmpObj') - -# Despite their names, these are all ComponentInstance types -GraphicsImportComponent = OpaqueByValueType('GraphicsImportComponent', 'CmpInstObj') -GraphicsExportComponent = OpaqueByValueType('GraphicsExportComponent', 'CmpInstObj') -ImageTranscoderComponent = OpaqueByValueType('ImageTranscoderComponent', 'CmpInstObj') -MovieImportComponent = OpaqueByValueType('MovieImportComponent', 'CmpInstObj') -MovieExportComponent = OpaqueByValueType('MovieExportComponent', 'CmpInstObj') -TextExportComponent = OpaqueByValueType('TextExportComponent', 'CmpInstObj') -GraphicImageMovieImportComponent = OpaqueByValueType('GraphicImageMovieImportComponent', 'CmpInstObj') -pnotComponent = OpaqueByValueType('pnotComponent', 'CmpInstObj') -# DataCompressorComponent, DataDecompressorComponent would go here -DataCodecComponent = OpaqueByValueType('DataCodecComponent', 'CmpInstObj') -TweenerComponent = OpaqueByValueType('TweenerComponent', 'CmpInstObj') -QTVideoOutputComponent = OpaqueByValueType('QTVideoOutputComponent', 'CmpInstObj') -SeqGrabComponent = OpaqueByValueType('SeqGrabComponent', 'CmpInstObj') -VideoDigitizerComponent = OpaqueByValueType('VideoDigitizerComponent', 'CmpInstObj') - -ComponentInstance = OpaqueByValueType('ComponentInstance', 'CmpInstObj') -MediaHandler = OpaqueByValueType('MediaHandler', 'CmpInstObj') -DataHandler = OpaqueByValueType('DataHandler', 'CmpInstObj') -SGChannel = OpaqueByValueType('SGChannel', 'CmpInstObj') -TunePlayer = OpaqueByValueType('TunePlayer', 'CmpInstObj') -MusicComponent = OpaqueByValueType('MusicComponent', 'CmpInstObj') -NoteAllocator = OpaqueByValueType('NoteAllocator', 'CmpInstObj') -QTMIDIComponent = OpaqueByValueType('QTMIDIComponent', 'CmpInstObj') - -ConstFSSpecPtr = FSSpec_ptr -GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj") -Byte = Boolean # XXXX For GetPaused and SetPaused - -RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") -PicHandle = OpaqueByValueType("PicHandle", "ResObj") -CTabHandle = OpaqueByValueType("CTabHandle", "ResObj") -PixMapHandle = OpaqueByValueType("PixMapHandle", "ResObj") -SampleDescriptionHandle = OpaqueByValueType("SampleDescriptionHandle", "ResObj") -ImageDescriptionHandle = OpaqueByValueType("ImageDescriptionHandle", "ResObj") -TextDescriptionHandle = OpaqueByValueType("TextDescriptionHandle", "ResObj") -TEHandle = OpaqueByValueType("TEHandle", "ResObj") -CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj") -GDHandle = OpaqueByValueType("GDHandle", "OptResObj") -AliasHandle = OpaqueByValueType("AliasHandle", "ResObj") -SoundDescriptionHandle = OpaqueByValueType("SoundDescriptionHandle", "ResObj") -VdigBufferRecListHandle = OpaqueByValueType("VdigBufferRecListHandle", "ResObj") -VDCompressionListHandle = OpaqueByValueType("VDCompressionListHandle", "ResObj") -TimeCodeDescriptionHandle = OpaqueByValueType("TimeCodeDescriptionHandle", "ResObj") -DataHFileTypeOrderingHandle = OpaqueByValueType("DataHFileTypeOrderingHandle", "ResObj") -QTMIDIPortListHandle = OpaqueByValueType("QTMIDIPortListHandle", "ResObj") -GenericKnobDescriptionListHandle = OpaqueByValueType("GenericKnobDescriptionListHandle", "ResObj") -InstrumentInfoListHandle = OpaqueByValueType("InstrumentInfoListHandle", "ResObj") -# Silly Apple, passing an OStype by reference... -OSType_ptr = OpaqueType("OSType", "PyMac_BuildOSType", "PyMac_GetOSType") -# And even sillier: passing floats by address -float_ptr = ByAddressType("float", "f") - -RGBColor = OpaqueType("RGBColor", "QdRGB") -RGBColor_ptr = RGBColor -TimeRecord = OpaqueType("TimeRecord", "QtTimeRecord") -TimeRecord_ptr = TimeRecord -MusicMIDIPacket = OpaqueType("MusicMIDIPacket", "QtMusicMIDIPacket") -MusicMIDIPacket_ptr = MusicMIDIPacket - -# Non-opaque types, mostly integer-ish -TimeValue = Type("TimeValue", "l") -TimeScale = Type("TimeScale", "l") -TimeBaseFlags = Type("TimeBaseFlags", "l") -QTCallBackFlags = Type("QTCallBackFlags", "H") -TimeBaseStatus = Type("TimeBaseStatus", "l") -QTCallBackType = Type("QTCallBackType", "H") -nextTimeFlagsEnum = Type("nextTimeFlagsEnum", "H") -createMovieFileFlagsEnum = Type("createMovieFileFlagsEnum", "l") -movieFlattenFlagsEnum = Type("movieFlattenFlagsEnum", "l") -dataRefAttributesFlags = Type("dataRefAttributesFlags", "l") -playHintsEnum = Type("playHintsEnum", "l") -mediaHandlerFlagsEnum = Type("mediaHandlerFlagsEnum", "l") -ComponentResult = Type("ComponentResult", "l") -VideoDigitizerError = Type("ComponentResult", "l") -HandlerError = Type("HandlerError", "l") -Ptr = InputOnlyType("Ptr", "s") -StringPtr = Type("StringPtr", "s") -UnsignedLongPtr = Type("unsigned long *", "s") -mcactionparams = InputOnlyType("void *", "s") -QTParameterDialog = Type("QTParameterDialog", "l") -QTAtomID = Type("QTAtomID", "l") -MCInterfaceElement = Type("MCInterfaceElement", "l") -CodecType = OSTypeType("CodecType") -GWorldPtr = OpaqueByValueType("GWorldPtr", "GWorldObj") -QTFloatSingle = Type("QTFloatSingle", "f") -CodecQ = Type("CodecQ", "l") -MusicController = Type("MusicController", "l") - -# Could-not-be-bothered-types (NewMovieFromFile) -dummyshortptr = FakeType('(short *)0') -dummyStringPtr = FakeType('(StringPtr)0') - -# Not-quite-sure-this-is-okay types -AtomicInstrument = OpaqueByValueType("AtomicInstrument", "ResObj") -AtomicInstrumentPtr = InputOnlyType("AtomicInstrumentPtr", "s") - -# XXXX Need to override output_tp_newBody() to allow for None initializer. -class QtGlobalObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - def outputCheckNewArg(self): - # We don't allow NULL pointers to be returned by QuickTime API calls, - # in stead we raise an exception - Output("""if (itself == NULL) { - PyErr_SetString(Qt_Error,"Cannot create %s from NULL pointer"); - return NULL; - }""", self.name) - - def outputCheckConvertArg(self): - # But what we do allow is passing None whereever a quicktime object is - # expected, and pass this as NULL to the API routines. Note you can - # call methods too by creating an object with None as the initializer. - Output("if (v == Py_None)") - OutLbrace() - Output("*p_itself = NULL;") - Output("return 1;") - OutRbrace() - -class MovieObjectDefinition(QtGlobalObjectDefinition): - def outputFreeIt(self, itselfname): - Output("if (%s) DisposeMovie(%s);", itselfname, itselfname) - -class TrackObjectDefinition(QtGlobalObjectDefinition): - def outputFreeIt(self, itselfname): - Output("if (%s) DisposeMovieTrack(%s);", itselfname, itselfname) - -class MediaObjectDefinition(QtGlobalObjectDefinition): - def outputFreeIt(self, itselfname): - Output("if (%s) DisposeTrackMedia(%s);", itselfname, itselfname) - -class UserDataObjectDefinition(QtGlobalObjectDefinition): - def outputFreeIt(self, itselfname): - Output("if (%s) DisposeUserData(%s);", itselfname, itselfname) - -class TimeBaseObjectDefinition(QtGlobalObjectDefinition): - pass - -class MovieCtlObjectDefinition(QtGlobalObjectDefinition): - def outputFreeIt(self, itselfname): - Output("if (%s) DisposeMovieController(%s);", itselfname, itselfname) - -class IdleManagerObjectDefinition(QtGlobalObjectDefinition): - pass - -class SGOutputObjectDefinition(QtGlobalObjectDefinition): - # XXXX I'm not sure I fully understand how SGOutput works. It seems it's always tied - # to a specific SeqGrabComponent, but I'm not 100% sure. Also, I'm not sure all the - # routines that return an SGOutput actually return a *new* SGOutput. Need to read up on - # this. - pass - - -# From here on it's basically all boiler plate... - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -Movie_object = MovieObjectDefinition('Movie', 'MovieObj', 'Movie') -Track_object = TrackObjectDefinition('Track', 'TrackObj', 'Track') -Media_object = MediaObjectDefinition('Media', 'MediaObj', 'Media') -UserData_object = UserDataObjectDefinition('UserData', 'UserDataObj', 'UserData') -TimeBase_object = TimeBaseObjectDefinition('TimeBase', 'TimeBaseObj', 'TimeBase') -MovieController_object = MovieCtlObjectDefinition('MovieController', 'MovieCtlObj', 'MovieController') -IdleManager_object = IdleManagerObjectDefinition('IdleManager', 'IdleManagerObj', 'IdleManager') -SGOutput_object = SGOutputObjectDefinition('SGOutput', 'SGOutputObj', 'SGOutput') - -module.addobject(IdleManager_object) -module.addobject(MovieController_object) -module.addobject(TimeBase_object) -module.addobject(UserData_object) -module.addobject(Media_object) -module.addobject(Track_object) -module.addobject(Movie_object) -module.addobject(SGOutput_object) - -# Test which types we are still missing. -execfile(string.lower(MODPREFIX) + 'typetest.py') - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -Method = OSErrWeakLinkMethodGenerator - -# Create and populate the lists -functions = [] -IdleManager_methods = [] -MovieController_methods = [] -TimeBase_methods = [] -UserData_methods = [] -Media_methods = [] -Track_methods = [] -Movie_methods = [] -SGOutput_methods = [] -execfile(INPUTFILE) - -# -# Some functions from ImageCompression.h that we need: -ICMAlignmentProcRecordPtr = FakeType('(ICMAlignmentProcRecordPtr)0') -dummyRect = FakeType('(Rect *)0') - -f = Function(void, 'AlignWindow', - (WindowPtr, 'wp', InMode), - (Boolean, 'front', InMode), - (dummyRect, 'alignmentRect', InMode), - (ICMAlignmentProcRecordPtr, 'alignmentProc', InMode), -) -functions.append(f) - -f = Function(void, 'DragAlignedWindow', - (WindowPtr, 'wp', InMode), - (Point, 'startPt', InMode), - (Rect_ptr, 'boundsRect', InMode), - (dummyRect, 'alignmentRect', InMode), - (ICMAlignmentProcRecordPtr, 'alignmentProc', InMode), -) -functions.append(f) - -# And we want the version of MoviesTask without a movie argument -f = Function(void, 'MoviesTask', - (NullMovie, 'theMovie', InMode), - (long, 'maxMilliSecToUse', InMode), -) -functions.append(f) - -# And we want a GetMediaNextInterestingTime without duration -f = Method(void, 'GetMediaNextInterestingTimeOnly', - (Media, 'theMedia', InMode), - (short, 'interestingTimeFlags', InMode), - (TimeValue, 'time', InMode), - (Fixed, 'rate', InMode), - (TimeValue, 'interestingTime', OutMode), -) -Media_methods.append(f) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -for f in MovieController_methods: MovieController_object.add(f) -for f in TimeBase_methods: TimeBase_object.add(f) -for f in UserData_methods: UserData_object.add(f) -for f in Media_methods: Media_object.add(f) -for f in Track_methods: Track_object.add(f) -for f in Movie_methods: Movie_object.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/qt/setup.py b/project/jni/python/src/Mac/Modules/qt/setup.py deleted file mode 100644 index 8442011ab..000000000 --- a/project/jni/python/src/Mac/Modules/qt/setup.py +++ /dev/null @@ -1,13 +0,0 @@ -# This is a temporary setup script to allow distribution of -# MacPython 2.4 modules for MacPython 2.3. - -from distutils.core import Extension, setup - -setup(name="QuickTime", version="0.2", - ext_modules=[ - Extension('QuickTime._Qt', ['_Qtmodule.c'], - extra_link_args=['-framework', 'Carbon', '-framework', 'QuickTime']) - ], - py_modules=['QuickTime.Qt', 'QuickTime.QuickTime'], - package_dir={'QuickTime':'../../../Lib/plat-mac/Carbon'} - ) diff --git a/project/jni/python/src/Mac/Modules/res/_Resmodule.c b/project/jni/python/src/Mac/Modules/res/_Resmodule.c deleted file mode 100644 index 89fd02c4c..000000000 --- a/project/jni/python/src/Mac/Modules/res/_Resmodule.c +++ /dev/null @@ -1,1760 +0,0 @@ - -/* ========================== Module _Res =========================== */ - -#include "Python.h" - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_ResObj_New(Handle); -extern int _ResObj_Convert(PyObject *, Handle *); -extern PyObject *_OptResObj_New(Handle); -extern int _OptResObj_Convert(PyObject *, Handle *); -#define ResObj_New _ResObj_New -#define ResObj_Convert _ResObj_Convert -#define OptResObj_New _OptResObj_New -#define OptResObj_Convert _OptResObj_Convert -#endif - -/* Function to dispose a resource, with a "normal" calling sequence */ -static void -PyMac_AutoDisposeHandle(Handle h) -{ - DisposeHandle(h); -} - -static PyObject *Res_Error; - -/* ---------------------- Object type Resource ---------------------- */ - -PyTypeObject Resource_Type; - -#define ResObj_Check(x) ((x)->ob_type == &Resource_Type || PyObject_TypeCheck((x), &Resource_Type)) - -typedef struct ResourceObject { - PyObject_HEAD - Handle ob_itself; - void (*ob_freeit)(Handle ptr); -} ResourceObject; - -PyObject *ResObj_New(Handle itself) -{ - ResourceObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - it = PyObject_NEW(ResourceObject, &Resource_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - it->ob_freeit = NULL; - return (PyObject *)it; -} - -int ResObj_Convert(PyObject *v, Handle *p_itself) -{ - if (!ResObj_Check(v)) - { - PyObject *tmp; - if ( (tmp=PyObject_CallMethod(v, "as_Resource", "")) ) - { - *p_itself = ((ResourceObject *)tmp)->ob_itself; - Py_DECREF(tmp); - return 1; - } - PyErr_Clear(); - } - if (!ResObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "Resource required"); - return 0; - } - *p_itself = ((ResourceObject *)v)->ob_itself; - return 1; -} - -static void ResObj_dealloc(ResourceObject *self) -{ - if (self->ob_freeit && self->ob_itself) - { - self->ob_freeit(self->ob_itself); - } - self->ob_itself = NULL; - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *ResObj_HomeResFile(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef HomeResFile - PyMac_PRECHECK(HomeResFile); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = HomeResFile(_self->ob_itself); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *ResObj_MacLoadResource(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef MacLoadResource - PyMac_PRECHECK(MacLoadResource); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - MacLoadResource(_self->ob_itself); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ResObj_ReleaseResource(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ReleaseResource - PyMac_PRECHECK(ReleaseResource); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ReleaseResource(_self->ob_itself); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ResObj_DetachResource(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef DetachResource - PyMac_PRECHECK(DetachResource); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - DetachResource(_self->ob_itself); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ResObj_GetResAttrs(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetResAttrs - PyMac_PRECHECK(GetResAttrs); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetResAttrs(_self->ob_itself); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *ResObj_GetResInfo(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short theID; - ResType theType; - Str255 name; -#ifndef GetResInfo - PyMac_PRECHECK(GetResInfo); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetResInfo(_self->ob_itself, - &theID, - &theType, - name); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("hO&O&", - theID, - PyMac_BuildOSType, theType, - PyMac_BuildStr255, name); - return _res; -} - -static PyObject *ResObj_SetResInfo(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short theID; - Str255 name; -#ifndef SetResInfo - PyMac_PRECHECK(SetResInfo); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &theID, - PyMac_GetStr255, name)) - return NULL; - SetResInfo(_self->ob_itself, - theID, - name); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ResObj_AddResource(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ResType theType; - short theID; - Str255 name; -#ifndef AddResource - PyMac_PRECHECK(AddResource); -#endif - if (!PyArg_ParseTuple(_args, "O&hO&", - PyMac_GetOSType, &theType, - &theID, - PyMac_GetStr255, name)) - return NULL; - AddResource(_self->ob_itself, - theType, - theID, - name); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ResObj_GetResourceSizeOnDisk(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetResourceSizeOnDisk - PyMac_PRECHECK(GetResourceSizeOnDisk); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetResourceSizeOnDisk(_self->ob_itself); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *ResObj_GetMaxResourceSize(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetMaxResourceSize - PyMac_PRECHECK(GetMaxResourceSize); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetMaxResourceSize(_self->ob_itself); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *ResObj_SetResAttrs(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short attrs; -#ifndef SetResAttrs - PyMac_PRECHECK(SetResAttrs); -#endif - if (!PyArg_ParseTuple(_args, "h", - &attrs)) - return NULL; - SetResAttrs(_self->ob_itself, - attrs); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ResObj_ChangedResource(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ChangedResource - PyMac_PRECHECK(ChangedResource); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ChangedResource(_self->ob_itself); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ResObj_RemoveResource(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef RemoveResource - PyMac_PRECHECK(RemoveResource); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - RemoveResource(_self->ob_itself); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ResObj_WriteResource(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef WriteResource - PyMac_PRECHECK(WriteResource); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - WriteResource(_self->ob_itself); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ResObj_SetResourceSize(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long newSize; -#ifndef SetResourceSize - PyMac_PRECHECK(SetResourceSize); -#endif - if (!PyArg_ParseTuple(_args, "l", - &newSize)) - return NULL; - SetResourceSize(_self->ob_itself, - newSize); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ResObj_GetNextFOND(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; -#ifndef GetNextFOND - PyMac_PRECHECK(GetNextFOND); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetNextFOND(_self->ob_itself); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -#ifndef __LP64__ -static PyObject *ResObj_as_Control(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - _res = CtlObj_New((ControlHandle)_self->ob_itself); - return _res; - -} - -static PyObject *ResObj_as_Menu(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - _res = MenuObj_New((MenuHandle)_self->ob_itself); - return _res; - -} -#endif /* !__LP64__ */ - -static PyObject *ResObj_LoadResource(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef LoadResource - PyMac_PRECHECK(LoadResource); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - LoadResource(_self->ob_itself); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ResObj_AutoDispose(ResourceObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - int onoff, old = 0; - if (!PyArg_ParseTuple(_args, "i", &onoff)) - return NULL; - if ( _self->ob_freeit ) - old = 1; - if ( onoff ) - _self->ob_freeit = PyMac_AutoDisposeHandle; - else - _self->ob_freeit = NULL; - _res = Py_BuildValue("i", old); - return _res; - -} - -static PyMethodDef ResObj_methods[] = { - {"HomeResFile", (PyCFunction)ResObj_HomeResFile, 1, - PyDoc_STR("() -> (short _rv)")}, - {"MacLoadResource", (PyCFunction)ResObj_MacLoadResource, 1, - PyDoc_STR("() -> None")}, - {"ReleaseResource", (PyCFunction)ResObj_ReleaseResource, 1, - PyDoc_STR("() -> None")}, - {"DetachResource", (PyCFunction)ResObj_DetachResource, 1, - PyDoc_STR("() -> None")}, - {"GetResAttrs", (PyCFunction)ResObj_GetResAttrs, 1, - PyDoc_STR("() -> (short _rv)")}, - {"GetResInfo", (PyCFunction)ResObj_GetResInfo, 1, - PyDoc_STR("() -> (short theID, ResType theType, Str255 name)")}, - {"SetResInfo", (PyCFunction)ResObj_SetResInfo, 1, - PyDoc_STR("(short theID, Str255 name) -> None")}, - {"AddResource", (PyCFunction)ResObj_AddResource, 1, - PyDoc_STR("(ResType theType, short theID, Str255 name) -> None")}, - {"GetResourceSizeOnDisk", (PyCFunction)ResObj_GetResourceSizeOnDisk, 1, - PyDoc_STR("() -> (long _rv)")}, - {"GetMaxResourceSize", (PyCFunction)ResObj_GetMaxResourceSize, 1, - PyDoc_STR("() -> (long _rv)")}, - {"SetResAttrs", (PyCFunction)ResObj_SetResAttrs, 1, - PyDoc_STR("(short attrs) -> None")}, - {"ChangedResource", (PyCFunction)ResObj_ChangedResource, 1, - PyDoc_STR("() -> None")}, - {"RemoveResource", (PyCFunction)ResObj_RemoveResource, 1, - PyDoc_STR("() -> None")}, - {"WriteResource", (PyCFunction)ResObj_WriteResource, 1, - PyDoc_STR("() -> None")}, - {"SetResourceSize", (PyCFunction)ResObj_SetResourceSize, 1, - PyDoc_STR("(long newSize) -> None")}, - {"GetNextFOND", (PyCFunction)ResObj_GetNextFOND, 1, - PyDoc_STR("() -> (Handle _rv)")}, -#ifndef __LP64__ - {"as_Control", (PyCFunction)ResObj_as_Control, 1, - PyDoc_STR("Return this resource/handle as a Control")}, - {"as_Menu", (PyCFunction)ResObj_as_Menu, 1, - PyDoc_STR("Return this resource/handle as a Menu")}, -#endif /* !__LP64__ */ - {"LoadResource", (PyCFunction)ResObj_LoadResource, 1, - PyDoc_STR("() -> None")}, - {"AutoDispose", (PyCFunction)ResObj_AutoDispose, 1, - PyDoc_STR("(int)->int. Automatically DisposeHandle the object on Python object cleanup")}, - {NULL, NULL, 0} -}; - -static PyObject *ResObj_get_data(ResourceObject *self, void *closure) -{ - - PyObject *res; - char state; - - state = HGetState(self->ob_itself); - HLock(self->ob_itself); - res = PyString_FromStringAndSize( - *self->ob_itself, - GetHandleSize(self->ob_itself)); - HUnlock(self->ob_itself); - HSetState(self->ob_itself, state); - return res; - -} - -static int ResObj_set_data(ResourceObject *self, PyObject *v, void *closure) -{ - - char *data; - long size; - - if ( v == NULL ) - return -1; - if ( !PyString_Check(v) ) - return -1; - size = PyString_Size(v); - data = PyString_AsString(v); - /* XXXX Do I need the GetState/SetState calls? */ - SetHandleSize(self->ob_itself, size); - if ( MemError()) - return -1; - HLock(self->ob_itself); - memcpy((char *)*self->ob_itself, data, size); - HUnlock(self->ob_itself); - /* XXXX Should I do the Changed call immedeately? */ - return 0; - - return 0; -} - -static PyObject *ResObj_get_size(ResourceObject *self, void *closure) -{ - return PyInt_FromLong(GetHandleSize(self->ob_itself)); -} - -#define ResObj_set_size NULL - -static PyGetSetDef ResObj_getsetlist[] = { - {"data", (getter)ResObj_get_data, (setter)ResObj_set_data, "The resource data"}, - {"size", (getter)ResObj_get_size, (setter)ResObj_set_size, "The length of the resource data"}, - {NULL, NULL, NULL, NULL}, -}; - - -#define ResObj_compare NULL - -#define ResObj_repr NULL - -#define ResObj_hash NULL -static int ResObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) -{ - char *srcdata = NULL; - int srclen = 0; - Handle itself; - char *kw[] = {"itself", 0}; - - if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, ResObj_Convert, &itself)) - { - ((ResourceObject *)_self)->ob_itself = itself; - return 0; - } - PyErr_Clear(); - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "|s#", kw, &srcdata, &srclen)) return -1; - if ((itself = NewHandle(srclen)) == NULL) - { - PyErr_NoMemory(); - return 0; - } - ((ResourceObject *)_self)->ob_itself = itself; - if (srclen && srcdata) - { - HLock(itself); - memcpy(*itself, srcdata, srclen); - HUnlock(itself); - } - return 0; -} - -#define ResObj_tp_alloc PyType_GenericAlloc - -static PyObject *ResObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *self; - if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((ResourceObject *)self)->ob_itself = NULL; - ((ResourceObject *)self)->ob_freeit = NULL; - return self; -} - -#define ResObj_tp_free PyObject_Del - - -PyTypeObject Resource_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Res.Resource", /*tp_name*/ - sizeof(ResourceObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) ResObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) ResObj_compare, /*tp_compare*/ - (reprfunc) ResObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) ResObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - ResObj_methods, /* tp_methods */ - 0, /*tp_members*/ - ResObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - ResObj_tp_init, /* tp_init */ - ResObj_tp_alloc, /* tp_alloc */ - ResObj_tp_new, /* tp_new */ - ResObj_tp_free, /* tp_free */ -}; - -/* -------------------- End object type Resource -------------------- */ - - -static PyObject *Res_CloseResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short refNum; -#ifndef CloseResFile - PyMac_PRECHECK(CloseResFile); -#endif - if (!PyArg_ParseTuple(_args, "h", - &refNum)) - return NULL; - CloseResFile(refNum); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Res_ResError(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef ResError - PyMac_PRECHECK(ResError); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Res_CurResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef CurResFile - PyMac_PRECHECK(CurResFile); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CurResFile(); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Res_UseResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short refNum; -#ifndef UseResFile - PyMac_PRECHECK(UseResFile); -#endif - if (!PyArg_ParseTuple(_args, "h", - &refNum)) - return NULL; - UseResFile(refNum); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Res_CountTypes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef CountTypes - PyMac_PRECHECK(CountTypes); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CountTypes(); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Res_Count1Types(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef Count1Types - PyMac_PRECHECK(Count1Types); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = Count1Types(); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Res_GetIndType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ResType theType; - short index; -#ifndef GetIndType - PyMac_PRECHECK(GetIndType); -#endif - if (!PyArg_ParseTuple(_args, "h", - &index)) - return NULL; - GetIndType(&theType, - index); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("O&", - PyMac_BuildOSType, theType); - return _res; -} - -static PyObject *Res_Get1IndType(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ResType theType; - short index; -#ifndef Get1IndType - PyMac_PRECHECK(Get1IndType); -#endif - if (!PyArg_ParseTuple(_args, "h", - &index)) - return NULL; - Get1IndType(&theType, - index); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("O&", - PyMac_BuildOSType, theType); - return _res; -} - -static PyObject *Res_SetResLoad(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean load; -#ifndef SetResLoad - PyMac_PRECHECK(SetResLoad); -#endif - if (!PyArg_ParseTuple(_args, "b", - &load)) - return NULL; - SetResLoad(load); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Res_CountResources(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - ResType theType; -#ifndef CountResources - PyMac_PRECHECK(CountResources); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &theType)) - return NULL; - _rv = CountResources(theType); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Res_Count1Resources(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - ResType theType; -#ifndef Count1Resources - PyMac_PRECHECK(Count1Resources); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &theType)) - return NULL; - _rv = Count1Resources(theType); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Res_GetIndResource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; - ResType theType; - short index; -#ifndef GetIndResource - PyMac_PRECHECK(GetIndResource); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetOSType, &theType, - &index)) - return NULL; - _rv = GetIndResource(theType, - index); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Res_Get1IndResource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; - ResType theType; - short index; -#ifndef Get1IndResource - PyMac_PRECHECK(Get1IndResource); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetOSType, &theType, - &index)) - return NULL; - _rv = Get1IndResource(theType, - index); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Res_GetResource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; - ResType theType; - short theID; -#ifndef GetResource - PyMac_PRECHECK(GetResource); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetOSType, &theType, - &theID)) - return NULL; - _rv = GetResource(theType, - theID); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Res_Get1Resource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; - ResType theType; - short theID; -#ifndef Get1Resource - PyMac_PRECHECK(Get1Resource); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetOSType, &theType, - &theID)) - return NULL; - _rv = Get1Resource(theType, - theID); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Res_GetNamedResource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; - ResType theType; - Str255 name; -#ifndef GetNamedResource - PyMac_PRECHECK(GetNamedResource); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &theType, - PyMac_GetStr255, name)) - return NULL; - _rv = GetNamedResource(theType, - name); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Res_Get1NamedResource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; - ResType theType; - Str255 name; -#ifndef Get1NamedResource - PyMac_PRECHECK(Get1NamedResource); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &theType, - PyMac_GetStr255, name)) - return NULL; - _rv = Get1NamedResource(theType, - name); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Res_UniqueID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - ResType theType; -#ifndef UniqueID - PyMac_PRECHECK(UniqueID); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &theType)) - return NULL; - _rv = UniqueID(theType); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Res_Unique1ID(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - ResType theType; -#ifndef Unique1ID - PyMac_PRECHECK(Unique1ID); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &theType)) - return NULL; - _rv = Unique1ID(theType); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Res_UpdateResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short refNum; -#ifndef UpdateResFile - PyMac_PRECHECK(UpdateResFile); -#endif - if (!PyArg_ParseTuple(_args, "h", - &refNum)) - return NULL; - UpdateResFile(refNum); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Res_SetResPurge(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean install; -#ifndef SetResPurge - PyMac_PRECHECK(SetResPurge); -#endif - if (!PyArg_ParseTuple(_args, "b", - &install)) - return NULL; - SetResPurge(install); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Res_GetResFileAttrs(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - short refNum; -#ifndef GetResFileAttrs - PyMac_PRECHECK(GetResFileAttrs); -#endif - if (!PyArg_ParseTuple(_args, "h", - &refNum)) - return NULL; - _rv = GetResFileAttrs(refNum); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Res_SetResFileAttrs(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short refNum; - short attrs; -#ifndef SetResFileAttrs - PyMac_PRECHECK(SetResFileAttrs); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &refNum, - &attrs)) - return NULL; - SetResFileAttrs(refNum, - attrs); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -#ifndef __LP64__ -static PyObject *Res_OpenRFPerm(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - Str255 fileName; - short vRefNum; - SignedByte permission; -#ifndef OpenRFPerm - PyMac_PRECHECK(OpenRFPerm); -#endif - if (!PyArg_ParseTuple(_args, "O&hb", - PyMac_GetStr255, fileName, - &vRefNum, - &permission)) - return NULL; - _rv = OpenRFPerm(fileName, - vRefNum, - permission); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Res_HOpenResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - short vRefNum; - long dirID; - Str255 fileName; - SignedByte permission; -#ifndef HOpenResFile - PyMac_PRECHECK(HOpenResFile); -#endif - if (!PyArg_ParseTuple(_args, "hlO&b", - &vRefNum, - &dirID, - PyMac_GetStr255, fileName, - &permission)) - return NULL; - _rv = HOpenResFile(vRefNum, - dirID, - fileName, - permission); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Res_HCreateResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short vRefNum; - long dirID; - Str255 fileName; -#ifndef HCreateResFile - PyMac_PRECHECK(HCreateResFile); -#endif - if (!PyArg_ParseTuple(_args, "hlO&", - &vRefNum, - &dirID, - PyMac_GetStr255, fileName)) - return NULL; - HCreateResFile(vRefNum, - dirID, - fileName); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Res_FSpOpenResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - FSSpec spec; - SignedByte permission; -#ifndef FSpOpenResFile - PyMac_PRECHECK(FSpOpenResFile); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - PyMac_GetFSSpec, &spec, - &permission)) - return NULL; - _rv = FSpOpenResFile(&spec, - permission); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *Res_FSpCreateResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - FSSpec spec; - OSType creator; - OSType fileType; - ScriptCode scriptTag; -#ifndef FSpCreateResFile - PyMac_PRECHECK(FSpCreateResFile); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&h", - PyMac_GetFSSpec, &spec, - PyMac_GetOSType, &creator, - PyMac_GetOSType, &fileType, - &scriptTag)) - return NULL; - FSpCreateResFile(&spec, - creator, - fileType, - scriptTag); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} -#endif /* !__LP64__ */ - -static PyObject *Res_InsertResourceFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 refNum; - RsrcChainLocation where; -#ifndef InsertResourceFile - PyMac_PRECHECK(InsertResourceFile); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &refNum, - &where)) - return NULL; - _err = InsertResourceFile(refNum, - where); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Res_DetachResourceFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 refNum; -#ifndef DetachResourceFile - PyMac_PRECHECK(DetachResourceFile); -#endif - if (!PyArg_ParseTuple(_args, "h", - &refNum)) - return NULL; - _err = DetachResourceFile(refNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -#ifndef __LP64__ -static PyObject *Res_FSpResourceFileAlreadyOpen(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - FSSpec resourceFile; - Boolean inChain; - SInt16 refNum; -#ifndef FSpResourceFileAlreadyOpen - PyMac_PRECHECK(FSpResourceFileAlreadyOpen); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFSSpec, &resourceFile)) - return NULL; - _rv = FSpResourceFileAlreadyOpen(&resourceFile, - &inChain, - &refNum); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("bbh", - _rv, - inChain, - refNum); - return _res; -} - -static PyObject *Res_FSpOpenOrphanResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSSpec spec; - SignedByte permission; - SInt16 refNum; -#ifndef FSpOpenOrphanResFile - PyMac_PRECHECK(FSpOpenOrphanResFile); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - PyMac_GetFSSpec, &spec, - &permission)) - return NULL; - _err = FSpOpenOrphanResFile(&spec, - permission, - &refNum); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - refNum); - return _res; -} - -static PyObject *Res_GetTopResourceFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 refNum; -#ifndef GetTopResourceFile - PyMac_PRECHECK(GetTopResourceFile); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetTopResourceFile(&refNum); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - refNum); - return _res; -} - - -static PyObject *Res_GetNextResourceFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SInt16 curRefNum; - SInt16 nextRefNum; -#ifndef GetNextResourceFile - PyMac_PRECHECK(GetNextResourceFile); -#endif - if (!PyArg_ParseTuple(_args, "h", - &curRefNum)) - return NULL; - _err = GetNextResourceFile(curRefNum, - &nextRefNum); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - nextRefNum); - return _res; -} -#endif /* !__LP64__ */ - -static PyObject *Res_FSOpenResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - FSRef ref; - SignedByte permission; -#ifndef FSOpenResFile - PyMac_PRECHECK(FSOpenResFile); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - PyMac_GetFSRef, &ref, - &permission)) - return NULL; - _rv = FSOpenResFile(&ref, - permission); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("h", - _rv); - return _res; -} - - -#ifndef __LP64__ -static PyObject *Res_FSCreateResFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - FSRef parentRef; - UniChar *nameLength__in__; - UniCharCount nameLength__len__; - int nameLength__in_len__; - FSRef newRef; - FSSpec newSpec; -#ifndef FSCreateResFile - PyMac_PRECHECK(FSCreateResFile); -#endif - if (!PyArg_ParseTuple(_args, "O&u#", - PyMac_GetFSRef, &parentRef, - &nameLength__in__, &nameLength__in_len__)) - return NULL; - nameLength__len__ = nameLength__in_len__; - FSCreateResFile(&parentRef, - nameLength__len__, nameLength__in__, - 0, - (FSCatalogInfo *)0, - &newRef, - &newSpec); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("O&O&", - PyMac_BuildFSRef, &newRef, - PyMac_BuildFSSpec, &newSpec); - return _res; -} - -static PyObject *Res_FSResourceFileAlreadyOpen(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - FSRef resourceFileRef; - Boolean inChain; - SInt16 refNum; -#ifndef FSResourceFileAlreadyOpen - PyMac_PRECHECK(FSResourceFileAlreadyOpen); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFSRef, &resourceFileRef)) - return NULL; - _rv = FSResourceFileAlreadyOpen(&resourceFileRef, - &inChain, - &refNum); - { - OSErr _err = ResError(); - if (_err != noErr) return PyMac_Error(_err); - } - _res = Py_BuildValue("bbh", - _rv, - inChain, - refNum); - return _res; -} - -static PyObject *Res_FSCreateResourceFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSRef parentRef; - UniChar *nameLength__in__; - UniCharCount nameLength__len__; - int nameLength__in_len__; - UniChar *forkNameLength__in__; - UniCharCount forkNameLength__len__; - int forkNameLength__in_len__; - FSRef newRef; - FSSpec newSpec; -#ifndef FSCreateResourceFile - PyMac_PRECHECK(FSCreateResourceFile); -#endif - if (!PyArg_ParseTuple(_args, "O&u#u#", - PyMac_GetFSRef, &parentRef, - &nameLength__in__, &nameLength__in_len__, - &forkNameLength__in__, &forkNameLength__in_len__)) - return NULL; - nameLength__len__ = nameLength__in_len__; - forkNameLength__len__ = forkNameLength__in_len__; - _err = FSCreateResourceFile(&parentRef, - nameLength__len__, nameLength__in__, - 0, - (FSCatalogInfo *)0, - forkNameLength__len__, forkNameLength__in__, - &newRef, - &newSpec); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - PyMac_BuildFSRef, &newRef, - PyMac_BuildFSSpec, &newSpec); - return _res; -} -#endif /* __LP64__ */ - -static PyObject *Res_FSOpenResourceFile(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - FSRef ref; - UniChar *forkNameLength__in__; - UniCharCount forkNameLength__len__; - int forkNameLength__in_len__; - SignedByte permissions; - ResFileRefNum refNum; -#ifndef FSOpenResourceFile - PyMac_PRECHECK(FSOpenResourceFile); -#endif - if (!PyArg_ParseTuple(_args, "O&u#b", - PyMac_GetFSRef, &ref, - &forkNameLength__in__, &forkNameLength__in_len__, - &permissions)) - return NULL; - forkNameLength__len__ = forkNameLength__in_len__; - _err = FSOpenResourceFile(&ref, - forkNameLength__len__, forkNameLength__in__, - permissions, - &refNum); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - refNum); - return _res; -} - -static PyObject *Res_Handle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - char *buf; - int len; - Handle h; - ResourceObject *rv; - - if (!PyArg_ParseTuple(_args, "s#", &buf, &len)) - return NULL; - h = NewHandle(len); - if ( h == NULL ) { - PyErr_NoMemory(); - return NULL; - } - HLock(h); - memcpy(*h, buf, len); - HUnlock(h); - rv = (ResourceObject *)ResObj_New(h); - rv->ob_freeit = PyMac_AutoDisposeHandle; - _res = (PyObject *)rv; - return _res; - -} - -static PyMethodDef Res_methods[] = { - {"CloseResFile", (PyCFunction)Res_CloseResFile, 1, - PyDoc_STR("(short refNum) -> None")}, - {"ResError", (PyCFunction)Res_ResError, 1, - PyDoc_STR("() -> None")}, - {"CurResFile", (PyCFunction)Res_CurResFile, 1, - PyDoc_STR("() -> (short _rv)")}, - {"UseResFile", (PyCFunction)Res_UseResFile, 1, - PyDoc_STR("(short refNum) -> None")}, - {"CountTypes", (PyCFunction)Res_CountTypes, 1, - PyDoc_STR("() -> (short _rv)")}, - {"Count1Types", (PyCFunction)Res_Count1Types, 1, - PyDoc_STR("() -> (short _rv)")}, - {"GetIndType", (PyCFunction)Res_GetIndType, 1, - PyDoc_STR("(short index) -> (ResType theType)")}, - {"Get1IndType", (PyCFunction)Res_Get1IndType, 1, - PyDoc_STR("(short index) -> (ResType theType)")}, - {"SetResLoad", (PyCFunction)Res_SetResLoad, 1, - PyDoc_STR("(Boolean load) -> None")}, - {"CountResources", (PyCFunction)Res_CountResources, 1, - PyDoc_STR("(ResType theType) -> (short _rv)")}, - {"Count1Resources", (PyCFunction)Res_Count1Resources, 1, - PyDoc_STR("(ResType theType) -> (short _rv)")}, - {"GetIndResource", (PyCFunction)Res_GetIndResource, 1, - PyDoc_STR("(ResType theType, short index) -> (Handle _rv)")}, - {"Get1IndResource", (PyCFunction)Res_Get1IndResource, 1, - PyDoc_STR("(ResType theType, short index) -> (Handle _rv)")}, - {"GetResource", (PyCFunction)Res_GetResource, 1, - PyDoc_STR("(ResType theType, short theID) -> (Handle _rv)")}, - {"Get1Resource", (PyCFunction)Res_Get1Resource, 1, - PyDoc_STR("(ResType theType, short theID) -> (Handle _rv)")}, - {"GetNamedResource", (PyCFunction)Res_GetNamedResource, 1, - PyDoc_STR("(ResType theType, Str255 name) -> (Handle _rv)")}, - {"Get1NamedResource", (PyCFunction)Res_Get1NamedResource, 1, - PyDoc_STR("(ResType theType, Str255 name) -> (Handle _rv)")}, - {"UniqueID", (PyCFunction)Res_UniqueID, 1, - PyDoc_STR("(ResType theType) -> (short _rv)")}, - {"Unique1ID", (PyCFunction)Res_Unique1ID, 1, - PyDoc_STR("(ResType theType) -> (short _rv)")}, - {"UpdateResFile", (PyCFunction)Res_UpdateResFile, 1, - PyDoc_STR("(short refNum) -> None")}, - {"SetResPurge", (PyCFunction)Res_SetResPurge, 1, - PyDoc_STR("(Boolean install) -> None")}, - {"GetResFileAttrs", (PyCFunction)Res_GetResFileAttrs, 1, - PyDoc_STR("(short refNum) -> (short _rv)")}, - {"SetResFileAttrs", (PyCFunction)Res_SetResFileAttrs, 1, - PyDoc_STR("(short refNum, short attrs) -> None")}, -#ifndef __LP64__ - {"OpenRFPerm", (PyCFunction)Res_OpenRFPerm, 1, - PyDoc_STR("(Str255 fileName, short vRefNum, SignedByte permission) -> (short _rv)")}, - {"HOpenResFile", (PyCFunction)Res_HOpenResFile, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 fileName, SignedByte permission) -> (short _rv)")}, - {"HCreateResFile", (PyCFunction)Res_HCreateResFile, 1, - PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> None")}, - {"FSpOpenResFile", (PyCFunction)Res_FSpOpenResFile, 1, - PyDoc_STR("(FSSpec spec, SignedByte permission) -> (short _rv)")}, - {"FSpCreateResFile", (PyCFunction)Res_FSpCreateResFile, 1, - PyDoc_STR("(FSSpec spec, OSType creator, OSType fileType, ScriptCode scriptTag) -> None")}, -#endif /* !__LP64__ */ - {"InsertResourceFile", (PyCFunction)Res_InsertResourceFile, 1, - PyDoc_STR("(SInt16 refNum, RsrcChainLocation where) -> None")}, - {"DetachResourceFile", (PyCFunction)Res_DetachResourceFile, 1, - PyDoc_STR("(SInt16 refNum) -> None")}, -#ifndef __LP64__ - {"FSpResourceFileAlreadyOpen", (PyCFunction)Res_FSpResourceFileAlreadyOpen, 1, - PyDoc_STR("(FSSpec resourceFile) -> (Boolean _rv, Boolean inChain, SInt16 refNum)")}, - {"FSpOpenOrphanResFile", (PyCFunction)Res_FSpOpenOrphanResFile, 1, - PyDoc_STR("(FSSpec spec, SignedByte permission) -> (SInt16 refNum)")}, - {"GetTopResourceFile", (PyCFunction)Res_GetTopResourceFile, 1, - PyDoc_STR("() -> (SInt16 refNum)")}, - {"GetNextResourceFile", (PyCFunction)Res_GetNextResourceFile, 1, - PyDoc_STR("(SInt16 curRefNum) -> (SInt16 nextRefNum)")}, -#endif /* __LP64__ */ - {"FSOpenResFile", (PyCFunction)Res_FSOpenResFile, 1, - PyDoc_STR("(FSRef ref, SignedByte permission) -> (short _rv)")}, -#ifndef __LP64__ - {"FSCreateResFile", (PyCFunction)Res_FSCreateResFile, 1, - PyDoc_STR("(FSRef parentRef, Buffer nameLength) -> (FSRef newRef, FSSpec newSpec)")}, - {"FSResourceFileAlreadyOpen", (PyCFunction)Res_FSResourceFileAlreadyOpen, 1, - PyDoc_STR("(FSRef resourceFileRef) -> (Boolean _rv, Boolean inChain, SInt16 refNum)")}, - {"FSCreateResourceFile", (PyCFunction)Res_FSCreateResourceFile, 1, - PyDoc_STR("(FSRef parentRef, Buffer nameLength, Buffer forkNameLength) -> (FSRef newRef, FSSpec newSpec)")}, -#endif /* __LP64__ */ - {"FSOpenResourceFile", (PyCFunction)Res_FSOpenResourceFile, 1, - PyDoc_STR("(FSRef ref, Buffer forkNameLength, SignedByte permissions) -> (SInt16 refNum)")}, - {"Handle", (PyCFunction)Res_Handle, 1, - PyDoc_STR("Convert a string to a Handle object.\n\nResource() and Handle() are very similar, but objects created with Handle() are\nby default automatically DisposeHandle()d upon object cleanup. Use AutoDispose()\nto change this.\n")}, - {NULL, NULL, 0} -}; - - - -/* Alternative version of ResObj_New, which returns None for null argument */ -PyObject *OptResObj_New(Handle itself) -{ - if (itself == NULL) { - Py_INCREF(Py_None); - return Py_None; - } - return ResObj_New(itself); -} - -int OptResObj_Convert(PyObject *v, Handle *p_itself) -{ - PyObject *tmp; - - if ( v == Py_None ) { - *p_itself = NULL; - return 1; - } - if (ResObj_Check(v)) - { - *p_itself = ((ResourceObject *)v)->ob_itself; - return 1; - } - /* If it isn't a resource yet see whether it is convertible */ - if ( (tmp=PyObject_CallMethod(v, "as_Resource", "")) ) { - *p_itself = ((ResourceObject *)tmp)->ob_itself; - Py_DECREF(tmp); - return 1; - } - PyErr_Clear(); - PyErr_SetString(PyExc_TypeError, "Resource required"); - return 0; -} - - -void init_Res(void) -{ - PyObject *m; - PyObject *d; - - - - PyMac_INIT_TOOLBOX_OBJECT_NEW(Handle, ResObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Handle, ResObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(Handle, OptResObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Handle, OptResObj_Convert); - - - m = Py_InitModule("_Res", Res_methods); - d = PyModule_GetDict(m); - Res_Error = PyMac_GetOSErrException(); - if (Res_Error == NULL || - PyDict_SetItemString(d, "Error", Res_Error) != 0) - return; - Resource_Type.ob_type = &PyType_Type; - if (PyType_Ready(&Resource_Type) < 0) return; - Py_INCREF(&Resource_Type); - PyModule_AddObject(m, "Resource", (PyObject *)&Resource_Type); - /* Backward-compatible name */ - Py_INCREF(&Resource_Type); - PyModule_AddObject(m, "ResourceType", (PyObject *)&Resource_Type); -} - -/* ======================== End module _Res ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/res/resedit.py b/project/jni/python/src/Mac/Modules/res/resedit.py deleted file mode 100644 index b3ef79038..000000000 --- a/project/jni/python/src/Mac/Modules/res/resedit.py +++ /dev/null @@ -1,102 +0,0 @@ -##resource_body = """ -##char *buf; -##int len; -##Handle h; -## -##if (!PyArg_ParseTuple(_args, "s#", &buf, &len)) -## return NULL; -##h = NewHandle(len); -##if ( h == NULL ) { -## PyErr_NoMemory(); -## return NULL; -##} -##HLock(h); -##memcpy(*h, buf, len); -##HUnlock(h); -##_res = ResObj_New(h); -##return _res; -##""" -## -##f = ManualGenerator("Resource", resource_body) -##f.docstring = lambda: """Convert a string to a resource object. -## -##The created resource object is actually just a handle, -##apply AddResource() to write it to a resource file. -##See also the Handle() docstring. -##""" -##functions.append(f) - -handle_body = """ -char *buf; -int len; -Handle h; -ResourceObject *rv; - -if (!PyArg_ParseTuple(_args, "s#", &buf, &len)) - return NULL; -h = NewHandle(len); -if ( h == NULL ) { - PyErr_NoMemory(); - return NULL; -} -HLock(h); -memcpy(*h, buf, len); -HUnlock(h); -rv = (ResourceObject *)ResObj_New(h); -rv->ob_freeit = PyMac_AutoDisposeHandle; -_res = (PyObject *)rv; -return _res; -""" - -f = ManualGenerator("Handle", handle_body) -f.docstring = lambda: """Convert a string to a Handle object. - -Resource() and Handle() are very similar, but objects created with Handle() are -by default automatically DisposeHandle()d upon object cleanup. Use AutoDispose() -to change this. -""" -functions.append(f) - -# Convert resources to other things. - -as_xxx_body = """ -_res = %sObj_New((%sHandle)_self->ob_itself); -return _res; -""" - -def genresconverter(longname, shortname): - - f = ManualGenerator("as_%s"%longname, as_xxx_body%(shortname, longname)) - docstring = "Return this resource/handle as a %s"%longname - f.docstring = lambda docstring=docstring: docstring - return f - -resmethods.append(genresconverter("Control", "Ctl")) -resmethods.append(genresconverter("Menu", "Menu")) - -# The definition of this one is MacLoadResource, so we do it by hand... - -f = ResMethod(void, 'LoadResource', - (Handle, 'theResource', InMode), -) -resmethods.append(f) - -# -# A method to set the auto-dispose flag -# -AutoDispose_body = """ -int onoff, old = 0; -if (!PyArg_ParseTuple(_args, "i", &onoff)) - return NULL; -if ( _self->ob_freeit ) - old = 1; -if ( onoff ) - _self->ob_freeit = PyMac_AutoDisposeHandle; -else - _self->ob_freeit = NULL; -_res = Py_BuildValue("i", old); -return _res; -""" -f = ManualGenerator("AutoDispose", AutoDispose_body) -f.docstring = lambda: "(int)->int. Automatically DisposeHandle the object on Python object cleanup" -resmethods.append(f) diff --git a/project/jni/python/src/Mac/Modules/res/resscan.py b/project/jni/python/src/Mac/Modules/res/resscan.py deleted file mode 100644 index 6966e8581..000000000 --- a/project/jni/python/src/Mac/Modules/res/resscan.py +++ /dev/null @@ -1,83 +0,0 @@ -# Scan Resources.h header file, generate resgen.py and Resources.py files. -# Then run ressupport to generate Resmodule.c. -# (Should learn how to tell the compiler to compile it as well.) - -import sys -import MacOS - -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) - -from scantools import Scanner - -def main(): - input = "Resources.h" - output = "resgen.py" - defsoutput = TOOLBOXDIR + "Resources.py" - scanner = ResourcesScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now doing 'import ressupport' ===" - import ressupport - print "=== Done 'import ressupport'. It's up to you to compile Resmodule.c ===" - -class ResourcesScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "ResFunction" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t == "Handle" and m == "InMode": - classname = "ResMethod" - listname = "resmethods" - return classname, listname - - def makeblacklistnames(self): - return [ - "ReadPartialResource", - "WritePartialResource", - "TempInsertROMMap", -## "RmveResource", # RemoveResource -## "SizeResource", # GetResourceSizeOnDisk -## "MaxSizeRsrc", # GetMaxResourceSize - # OS8 only - 'RGetResource', - 'OpenResFile', - 'CreateResFile', - 'RsrcZoneInit', - 'InitResources', - 'RsrcMapEntry', - ] - - def makeblacklisttypes(self): - return [ - ] - - def makerepairinstructions(self): - return [ - ([("Str255", "*", "InMode")], - [("*", "*", "OutMode")]), - - ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")], - [("InBuffer", "*", "*")]), - - ([("void", "*", "OutMode"), ("long", "*", "InMode")], - [("InOutBuffer", "*", "*")]), - - ([("void", "*", "OutMode"), ("long", "*", "InMode"), - ("long", "*", "OutMode")], - [("OutBuffer", "*", "InOutMode")]), - - ([("SInt8", "*", "*")], - [("SignedByte", "*", "*")]), - - - ([("UniCharCount", "*", "InMode"), ("UniChar_ptr", "*", "InMode")], - [("UnicodeReverseInBuffer", "*", "*")]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/res/ressupport.py b/project/jni/python/src/Mac/Modules/res/ressupport.py deleted file mode 100644 index 9e42a4542..000000000 --- a/project/jni/python/src/Mac/Modules/res/ressupport.py +++ /dev/null @@ -1,221 +0,0 @@ -# This script will generate the Resources interface for Python. -# It uses the "bgen" package to generate C code. -# It execs the file resgen.py which contain the function definitions -# (resgen.py was generated by resscan.py, scanning the header file). - -from macsupport import * - -class ResMixIn: - - def checkit(self): - if self.returntype.__class__ != OSErrType: - OutLbrace() - Output("OSErr _err = ResError();") - Output("if (_err != noErr) return PyMac_Error(_err);") - OutRbrace() - FunctionGenerator.checkit(self) # XXX - -class ResFunction(ResMixIn, OSErrWeakLinkFunctionGenerator): pass -class ResMethod(ResMixIn, OSErrWeakLinkMethodGenerator): pass - -RsrcChainLocation = Type("RsrcChainLocation", "h") -FSCatalogInfoBitmap = FakeType("0") # Type("FSCatalogInfoBitmap", "l") -FSCatalogInfo_ptr = FakeType("(FSCatalogInfo *)0") - -# includestuff etc. are imported from macsupport - -includestuff = includestuff + """ -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_ResObj_New(Handle); -extern int _ResObj_Convert(PyObject *, Handle *); -extern PyObject *_OptResObj_New(Handle); -extern int _OptResObj_Convert(PyObject *, Handle *); -#define ResObj_New _ResObj_New -#define ResObj_Convert _ResObj_Convert -#define OptResObj_New _OptResObj_New -#define OptResObj_Convert _OptResObj_Convert -#endif - -/* Function to dispose a resource, with a "normal" calling sequence */ -static void -PyMac_AutoDisposeHandle(Handle h) -{ - DisposeHandle(h); -} -""" - -finalstuff = finalstuff + """ - -/* Alternative version of ResObj_New, which returns None for null argument */ -PyObject *OptResObj_New(Handle itself) -{ - if (itself == NULL) { - Py_INCREF(Py_None); - return Py_None; - } - return ResObj_New(itself); -} - -int OptResObj_Convert(PyObject *v, Handle *p_itself) -{ - PyObject *tmp; - - if ( v == Py_None ) { - *p_itself = NULL; - return 1; - } - if (ResObj_Check(v)) - { - *p_itself = ((ResourceObject *)v)->ob_itself; - return 1; - } - /* If it isn't a resource yet see whether it is convertible */ - if ( (tmp=PyObject_CallMethod(v, "as_Resource", "")) ) { - *p_itself = ((ResourceObject *)tmp)->ob_itself; - Py_DECREF(tmp); - return 1; - } - PyErr_Clear(); - PyErr_SetString(PyExc_TypeError, "Resource required"); - return 0; -} -""" - -initstuff = initstuff + """ - PyMac_INIT_TOOLBOX_OBJECT_NEW(Handle, ResObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Handle, ResObj_Convert); - PyMac_INIT_TOOLBOX_OBJECT_NEW(Handle, OptResObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Handle, OptResObj_Convert); -""" - -module = MacModule('_Res', 'Res', includestuff, finalstuff, initstuff) - -class ResDefinition(PEP253Mixin, GlobalObjectDefinition): - getsetlist = [ - ('data', - """ - PyObject *res; - char state; - - state = HGetState(self->ob_itself); - HLock(self->ob_itself); - res = PyString_FromStringAndSize( - *self->ob_itself, - GetHandleSize(self->ob_itself)); - HUnlock(self->ob_itself); - HSetState(self->ob_itself, state); - return res; - """, - """ - char *data; - long size; - - if ( v == NULL ) - return -1; - if ( !PyString_Check(v) ) - return -1; - size = PyString_Size(v); - data = PyString_AsString(v); - /* XXXX Do I need the GetState/SetState calls? */ - SetHandleSize(self->ob_itself, size); - if ( MemError()) - return -1; - HLock(self->ob_itself); - memcpy((char *)*self->ob_itself, data, size); - HUnlock(self->ob_itself); - /* XXXX Should I do the Changed call immedeately? */ - return 0; - """, - 'The resource data' - ), ( - 'size', - 'return PyInt_FromLong(GetHandleSize(self->ob_itself));', - None, - 'The length of the resource data' - )] - - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") - - def outputCheckConvertArg(self): - # if it isn't a resource we may be able to coerce it - Output("if (!%s_Check(v))", self.prefix) - OutLbrace() - Output("PyObject *tmp;") - Output('if ( (tmp=PyObject_CallMethod(v, "as_Resource", "")) )') - OutLbrace() - Output("*p_itself = ((ResourceObject *)tmp)->ob_itself;") - Output("Py_DECREF(tmp);") - Output("return 1;") - OutRbrace() - Output("PyErr_Clear();") - OutRbrace() - - def outputStructMembers(self): - GlobalObjectDefinition.outputStructMembers(self) - Output("void (*ob_freeit)(%s ptr);", self.itselftype) - - def outputInitStructMembers(self): - GlobalObjectDefinition.outputInitStructMembers(self) - Output("it->ob_freeit = NULL;") - - def outputCleanupStructMembers(self): - Output("if (self->ob_freeit && self->ob_itself)") - OutLbrace() - Output("self->ob_freeit(self->ob_itself);") - OutRbrace() - Output("self->ob_itself = NULL;") - - def output_tp_newBody(self): - Output("PyObject *self;") - Output - Output("if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;") - Output("((%s *)self)->ob_itself = NULL;", self.objecttype) - Output("((%s *)self)->ob_freeit = NULL;", self.objecttype) - Output("return self;") - - def output_tp_initBody(self): - Output("char *srcdata = NULL;") - Output("int srclen = 0;") - Output("%s itself;", self.itselftype); - Output("char *kw[] = {\"itself\", 0};") - Output() - Output("if (PyArg_ParseTupleAndKeywords(_args, _kwds, \"O&\", kw, %s_Convert, &itself))", - self.prefix); - OutLbrace() - Output("((%s *)_self)->ob_itself = itself;", self.objecttype) - Output("return 0;") - OutRbrace() - Output("PyErr_Clear();") - Output("if (!PyArg_ParseTupleAndKeywords(_args, _kwds, \"|s#\", kw, &srcdata, &srclen)) return -1;") - Output("if ((itself = NewHandle(srclen)) == NULL)") - OutLbrace() - Output("PyErr_NoMemory();") - Output("return 0;") - OutRbrace() - Output("((%s *)_self)->ob_itself = itself;", self.objecttype) -# XXXX Output("((%s *)self)->ob_freeit = PyMac_AutoDisposeHandle;") - Output("if (srclen && srcdata)") - OutLbrace() - Output("HLock(itself);") - Output("memcpy(*itself, srcdata, srclen);") - Output("HUnlock(itself);") - OutRbrace() - Output("return 0;") - -resobject = ResDefinition('Resource', 'ResObj', 'Handle') -module.addobject(resobject) - -functions = [] -resmethods = [] - -execfile('resgen.py') -execfile('resedit.py') - -for f in functions: module.add(f) -for f in resmethods: resobject.add(f) - -SetOutputFileName('_Resmodule.c') -module.generate() diff --git a/project/jni/python/src/Mac/Modules/scrap/_Scrapmodule.c b/project/jni/python/src/Mac/Modules/scrap/_Scrapmodule.c deleted file mode 100644 index 14e3fd24e..000000000 --- a/project/jni/python/src/Mac/Modules/scrap/_Scrapmodule.c +++ /dev/null @@ -1,365 +0,0 @@ - -/* ========================= Module _Scrap ========================== */ - -#include "Python.h" - - -#ifndef __LP64__ - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -static PyObject *Scrap_Error; - -/* ----------------------- Object type Scrap ------------------------ */ - -PyTypeObject Scrap_Type; - -#define ScrapObj_Check(x) ((x)->ob_type == &Scrap_Type || PyObject_TypeCheck((x), &Scrap_Type)) - -typedef struct ScrapObject { - PyObject_HEAD - ScrapRef ob_itself; -} ScrapObject; - -PyObject *ScrapObj_New(ScrapRef itself) -{ - ScrapObject *it; - it = PyObject_NEW(ScrapObject, &Scrap_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} -int ScrapObj_Convert(PyObject *v, ScrapRef *p_itself) -{ - if (!ScrapObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "Scrap required"); - return 0; - } - *p_itself = ((ScrapObject *)v)->ob_itself; - return 1; -} - -static void ScrapObj_dealloc(ScrapObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *ScrapObj_GetScrapFlavorFlags(ScrapObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ScrapFlavorType flavorType; - ScrapFlavorFlags flavorFlags; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &flavorType)) - return NULL; - _err = GetScrapFlavorFlags(_self->ob_itself, - flavorType, - &flavorFlags); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - flavorFlags); - return _res; -} - -static PyObject *ScrapObj_GetScrapFlavorSize(ScrapObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ScrapFlavorType flavorType; - Size byteCount; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &flavorType)) - return NULL; - _err = GetScrapFlavorSize(_self->ob_itself, - flavorType, - &byteCount); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - byteCount); - return _res; -} - -static PyObject *ScrapObj_GetScrapFlavorData(ScrapObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ScrapFlavorType flavorType; - Size byteCount; - - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &flavorType)) - return NULL; - _err = GetScrapFlavorSize(_self->ob_itself, - flavorType, - &byteCount); - if (_err != noErr) return PyMac_Error(_err); - _res = PyString_FromStringAndSize(NULL, (int)byteCount); - if ( _res == NULL ) return NULL; - _err = GetScrapFlavorData(_self->ob_itself, - flavorType, - &byteCount, - PyString_AS_STRING(_res)); - if (_err != noErr) { - Py_XDECREF(_res); - return PyMac_Error(_err); - } - return _res; -} - -static PyObject *ScrapObj_PutScrapFlavor(ScrapObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ScrapFlavorType flavorType; - ScrapFlavorFlags flavorFlags; - char *flavorData__in__; - int flavorData__in_len__; - if (!PyArg_ParseTuple(_args, "O&Ks#", - PyMac_GetOSType, &flavorType, - &flavorFlags, - &flavorData__in__, &flavorData__in_len__)) - return NULL; - _err = PutScrapFlavor(_self->ob_itself, - flavorType, - flavorFlags, - (Size)flavorData__in_len__, - flavorData__in__); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *ScrapObj_GetScrapFlavorCount(ScrapObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 infoCount; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetScrapFlavorCount(_self->ob_itself, - &infoCount); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - infoCount); - return _res; -} - -static PyObject *ScrapObj_GetScrapFlavorInfoList(ScrapObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PyObject *item; - OSStatus _err; - UInt32 infoCount; - ScrapFlavorInfo *infolist = NULL; - int i; - - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetScrapFlavorCount(_self->ob_itself, - &infoCount); - if (_err != noErr) return PyMac_Error(_err); - if (infoCount == 0) return Py_BuildValue("[]"); - - if ((infolist = (ScrapFlavorInfo *)malloc(infoCount*sizeof(ScrapFlavorInfo))) == NULL ) - return PyErr_NoMemory(); - - _err = GetScrapFlavorInfoList(_self->ob_itself, &infoCount, infolist); - if (_err != noErr) { - free(infolist); - return NULL; - } - if ((_res = PyList_New(infoCount)) == NULL ) { - free(infolist); - return NULL; - } - for(i=0; i (ScrapFlavorFlags flavorFlags)")}, - {"GetScrapFlavorSize", (PyCFunction)ScrapObj_GetScrapFlavorSize, 1, - PyDoc_STR("(ScrapFlavorType flavorType) -> (Size byteCount)")}, - {"GetScrapFlavorData", (PyCFunction)ScrapObj_GetScrapFlavorData, 1, - PyDoc_STR("(ScrapFlavorType flavorType, Buffer destination) -> (Size byteCount)")}, - {"PutScrapFlavor", (PyCFunction)ScrapObj_PutScrapFlavor, 1, - PyDoc_STR("(ScrapFlavorType flavorType, ScrapFlavorFlags flavorFlags, Size flavorSize, Buffer flavorData) -> None")}, - {"GetScrapFlavorCount", (PyCFunction)ScrapObj_GetScrapFlavorCount, 1, - PyDoc_STR("() -> (UInt32 infoCount)")}, - {"GetScrapFlavorInfoList", (PyCFunction)ScrapObj_GetScrapFlavorInfoList, 1, - PyDoc_STR("() -> ([(ScrapFlavorType, ScrapFlavorInfo), ...])")}, - {NULL, NULL, 0} -}; - -PyMethodChain ScrapObj_chain = { ScrapObj_methods, NULL }; - -static PyObject *ScrapObj_getattr(ScrapObject *self, char *name) -{ - return Py_FindMethodInChain(&ScrapObj_chain, (PyObject *)self, name); -} - -#define ScrapObj_setattr NULL - -#define ScrapObj_compare NULL - -#define ScrapObj_repr NULL - -#define ScrapObj_hash NULL - -PyTypeObject Scrap_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Scrap.Scrap", /*tp_name*/ - sizeof(ScrapObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) ScrapObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc) ScrapObj_getattr, /*tp_getattr*/ - (setattrfunc) ScrapObj_setattr, /*tp_setattr*/ - (cmpfunc) ScrapObj_compare, /*tp_compare*/ - (reprfunc) ScrapObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) ScrapObj_hash, /*tp_hash*/ -}; - -/* --------------------- End object type Scrap ---------------------- */ - -static PyObject *Scrap_LoadScrap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = LoadScrap(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Scrap_UnloadScrap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = UnloadScrap(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Scrap_GetCurrentScrap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - ScrapRef scrap; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetCurrentScrap(&scrap); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ScrapObj_New, scrap); - return _res; -} - -static PyObject *Scrap_ClearCurrentScrap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = ClearCurrentScrap(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Scrap_CallInScrapPromises(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = CallInScrapPromises(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} -#endif /* __LP64__ */ - -static PyMethodDef Scrap_methods[] = { -#ifndef __LP64__ - {"LoadScrap", (PyCFunction)Scrap_LoadScrap, 1, - PyDoc_STR("() -> None")}, - {"UnloadScrap", (PyCFunction)Scrap_UnloadScrap, 1, - PyDoc_STR("() -> None")}, - {"GetCurrentScrap", (PyCFunction)Scrap_GetCurrentScrap, 1, - PyDoc_STR("() -> (ScrapRef scrap)")}, - {"ClearCurrentScrap", (PyCFunction)Scrap_ClearCurrentScrap, 1, - PyDoc_STR("() -> None")}, - {"CallInScrapPromises", (PyCFunction)Scrap_CallInScrapPromises, 1, - PyDoc_STR("() -> None")}, -#endif /* __LP64__ */ - {NULL, NULL, 0} -}; - - - - -void init_Scrap(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; -#endif /* __LP64__ */ - - - - - m = Py_InitModule("_Scrap", Scrap_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - Scrap_Error = PyMac_GetOSErrException(); - if (Scrap_Error == NULL || - PyDict_SetItemString(d, "Error", Scrap_Error) != 0) - return; - Scrap_Type.ob_type = &PyType_Type; - Py_INCREF(&Scrap_Type); - if (PyDict_SetItemString(d, "ScrapType", (PyObject *)&Scrap_Type) != 0) - Py_FatalError("can't initialize ScrapType"); -#endif /* __LP64__ */ -} - -/* ======================= End module _Scrap ======================== */ - diff --git a/project/jni/python/src/Mac/Modules/scrap/scrapscan.py b/project/jni/python/src/Mac/Modules/scrap/scrapscan.py deleted file mode 100644 index 25a683ca9..000000000 --- a/project/jni/python/src/Mac/Modules/scrap/scrapscan.py +++ /dev/null @@ -1,60 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. -# -# Note that the scrap-manager include file is so weird that this -# generates a boilerplate to be edited by hand. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner - -LONG = "Scrap" -SHORT = "scrap" - -def main(): - input = "Scrap.h" - output = SHORT + "gen.py" - defsoutput = "@Scrap.py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() -## print "=== Testing definitions output code ===" -## execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t == 'ScrapRef' and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def makeblacklistnames(self): - return [ - "GetScrapFlavorInfoList", - 'InfoScrap', - 'GetScrap', - 'ZeroScrap', - 'PutScrap', - ] - - def makeblacklisttypes(self): - return [ - 'ScrapPromiseKeeperUPP', - ] - - def makerepairinstructions(self): - return [ - ([('void', '*', 'OutMode')], [('putscrapbuffer', '*', 'InMode')]), - ([('void_ptr', '*', 'InMode')], [('putscrapbuffer', '*', 'InMode')]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/scrap/scrapsupport.py b/project/jni/python/src/Mac/Modules/scrap/scrapsupport.py deleted file mode 100644 index 84a75d22a..000000000 --- a/project/jni/python/src/Mac/Modules/scrap/scrapsupport.py +++ /dev/null @@ -1,75 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -# NOTE: the scrap include file is so bad that the bgen output has to be -# massaged by hand. - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'Scrap.h' # The Apple header file -MODNAME = '_Scrap' # The name of the module -OBJECTNAME = 'Scrap' # The basic name of the objects used here - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Scrap' # The prefix for module-wide routines -OBJECTTYPE = OBJECTNAME + 'Ref' # The C type used to represent them -OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = '@' + MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects -ScrapRef = OpaqueByValueType(OBJECTTYPE, OBJECTPREFIX) - -includestuff = includestuff + """ -#include - -/* -** Generate ScrapInfo records -*/ -static PyObject * -SCRRec_New(itself) - ScrapStuff *itself; -{ - - return Py_BuildValue("lO&hhO&", itself->scrapSize, - ResObj_New, itself->scrapHandle, itself->scrapCount, itself->scrapState, - PyMac_BuildStr255, itself->scrapName); -} -""" - -ScrapStuffPtr = OpaqueByValueType('ScrapStuffPtr', 'SCRRec') -ScrapFlavorType = OSTypeType('ScrapFlavorType') -ScrapFlavorFlags = Type('ScrapFlavorFlags', 'l') -#ScrapFlavorInfo = OpaqueType('ScrapFlavorInfo', 'ScrapFlavorInfo') -putscrapbuffer = FixedInputBufferType('void *') - -class MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - pass - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE) -module.addobject(object) - -# Create the generator classes used to populate the lists -Function = OSErrFunctionGenerator -Method = OSErrMethodGenerator - -# Create and populate the lists -functions = [] -methods = [] -execfile(INPUTFILE) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -for f in methods: object.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/snd/_Sndihooks.c b/project/jni/python/src/Mac/Modules/snd/_Sndihooks.c deleted file mode 100644 index 74cad9be5..000000000 --- a/project/jni/python/src/Mac/Modules/snd/_Sndihooks.c +++ /dev/null @@ -1,512 +0,0 @@ -/*********************************************************** -Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam, -The Netherlands. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Stichting Mathematisch -Centrum or CWI or Corporation for National Research Initiatives or -CNRI not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. - -While CWI is the initial source for this software, a modified version -is made available by the Corporation for National Research Initiatives -(CNRI) at the Internet address ftp://ftp.python.org. - -STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH -CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL -DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR -PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -******************************************************************/ - -#include "Python.h" -#include "pymactoolbox.h" -#include - -#pragma options align=mac68k -struct SampleRateAvailable_arg { - short numrates; - Handle rates; -}; - -struct SampleSizeAvailable_arg { - short numsizes; - Handle sizes; -}; - -#pragma options align=reset - -static PyObject *ErrorObject; - - -/* Convert Python object to unsigned Fixed */ -static int -PyMac_GetUFixed(PyObject *v, Fixed *f) -{ - double d; - unsigned long uns; - - if( !PyArg_Parse(v, "d", &d)) - return 0; - uns = (unsigned long)(d * 0x10000); - *f = (Fixed)uns; - return 1; -} - -/* Convert a Point to a Python object */ -static PyObject * -PyMac_BuildUFixed(Fixed f) -{ - double d; - unsigned long funs; - - funs = (unsigned long)f; - - d = funs; - d = d / 0x10000; - return Py_BuildValue("d", d); -} - - -/* ----------------------------------------------------- */ - -static char sndih_getChannelAvailable__doc__[] = -"" -; - -static PyObject * -sndih_getChannelAvailable(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - short nchannel; - OSErr err; - - if (!PyArg_ParseTuple(args, "l", &inRefNum)) - return NULL; - - if( (err=SPBGetDeviceInfo(inRefNum, siChannelAvailable, (Ptr)&nchannel)) != noErr ) - return PyMac_Error(err); - return Py_BuildValue("h", nchannel); -} - -static char sndih_getNumberChannels__doc__[] = -"" -; - -static PyObject * -sndih_getNumberChannels(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - short nchannel; - OSErr err; - - if (!PyArg_ParseTuple(args, "l", &inRefNum)) - return NULL; - - if( (err=SPBGetDeviceInfo(inRefNum, siNumberChannels, (Ptr)&nchannel)) != noErr ) - return PyMac_Error(err); - return Py_BuildValue("h", nchannel); -} - -static char sndih_setNumberChannels__doc__[] = -"" -; - -static PyObject * -sndih_setNumberChannels(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - short nchannel; - OSErr err; - - if (!PyArg_ParseTuple(args, "lh", &inRefNum, &nchannel)) - return NULL; - - if( (err=SPBSetDeviceInfo(inRefNum, siNumberChannels, (Ptr)&nchannel)) != noErr ) - return PyMac_Error(err); - Py_INCREF(Py_None); - return Py_None; -} - -static char sndih_getContinuous__doc__[] = -"" -; - -static PyObject * -sndih_getContinuous(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - short onoff; - OSErr err; - - if (!PyArg_ParseTuple(args, "l", &inRefNum)) - return NULL; - - if( (err=SPBGetDeviceInfo(inRefNum, siContinuous, (Ptr)&onoff)) != noErr ) - return PyMac_Error(err); - return Py_BuildValue("h", onoff); -} - -static char sndih_setContinuous__doc__[] = -"" -; - -static PyObject * -sndih_setContinuous(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - short onoff; - OSErr err; - - if (!PyArg_ParseTuple(args, "lh", &inRefNum, &onoff)) - return NULL; - - if( (err=SPBSetDeviceInfo(inRefNum, siContinuous, (Ptr)&onoff)) != noErr ) - return PyMac_Error(err); - Py_INCREF(Py_None); - return Py_None; -} - -static char sndih_getInputSourceNames__doc__[] = -"" -; - -static PyObject * -sndih_getInputSourceNames(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - Handle names; - OSErr err; - - if (!PyArg_ParseTuple(args, "l", &inRefNum)) - return NULL; - - if( (err=SPBGetDeviceInfo(inRefNum, siInputSourceNames, (Ptr)&names)) != noErr ) - return PyMac_Error(err); - return Py_BuildValue("O&", ResObj_New, names); -} - -static char sndih_getInputSource__doc__[] = -"" -; - -static PyObject * -sndih_getInputSource(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - short source; - OSErr err; - - if (!PyArg_ParseTuple(args, "l", &inRefNum)) - return NULL; - - if( (err=SPBGetDeviceInfo(inRefNum, siInputSource, (Ptr)&source)) != noErr ) - return PyMac_Error(err); - return Py_BuildValue("h", source); -} - -static char sndih_setInputSource__doc__[] = -"" -; - -static PyObject * -sndih_setInputSource(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - short source; - OSErr err; - - if (!PyArg_ParseTuple(args, "lh", &inRefNum, &source)) - return NULL; - - if( (err=SPBSetDeviceInfo(inRefNum, siInputSource, (Ptr)&source)) != noErr ) - return PyMac_Error(err); - Py_INCREF(Py_None); - return Py_None; -} - -static char sndih_getPlayThruOnOff__doc__[] = -"" -; - -static PyObject * -sndih_getPlayThruOnOff(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - short onoff; - OSErr err; - - if (!PyArg_ParseTuple(args, "l", &inRefNum)) - return NULL; - - if( (err=SPBGetDeviceInfo(inRefNum, siPlayThruOnOff, (Ptr)&onoff)) != noErr ) - return PyMac_Error(err); - return Py_BuildValue("h", onoff); -} - -static char sndih_setPlayThruOnOff__doc__[] = -"" -; - -static PyObject * -sndih_setPlayThruOnOff(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - short onoff; - OSErr err; - - if (!PyArg_ParseTuple(args, "lh", &inRefNum, &onoff)) - return NULL; - - if( (err=SPBSetDeviceInfo(inRefNum, siPlayThruOnOff, (Ptr)&onoff)) != noErr ) - return PyMac_Error(err); - Py_INCREF(Py_None); - return Py_None; -} - -static char sndih_getSampleRate__doc__[] = -"" -; - -static PyObject * -sndih_getSampleRate(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - Fixed sample_rate; - OSErr err; - - if (!PyArg_ParseTuple(args, "l", &inRefNum)) - return NULL; - - if( (err=SPBGetDeviceInfo(inRefNum, siSampleRate, (Ptr)&sample_rate)) != noErr ) - return PyMac_Error(err); - return Py_BuildValue("O&", PyMac_BuildUFixed, sample_rate); -} - -static char sndih_setSampleRate__doc__[] = -"" -; - -static PyObject * -sndih_setSampleRate(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - Fixed sample_rate; - OSErr err; - - if (!PyArg_ParseTuple(args, "lO&", &inRefNum, PyMac_GetUFixed, &sample_rate)) - return NULL; - - if( (err=SPBSetDeviceInfo(inRefNum, siSampleRate, (Ptr)&sample_rate)) != noErr ) - return PyMac_Error(err); - Py_INCREF(Py_None); - return Py_None; -} - -static char sndih_getSampleSize__doc__[] = -"" -; - -static PyObject * -sndih_getSampleSize(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - short bits; - OSErr err; - - if (!PyArg_ParseTuple(args, "l", &inRefNum)) - return NULL; - - if( (err=SPBGetDeviceInfo(inRefNum, siSampleSize, (Ptr)&bits)) != noErr ) - return PyMac_Error(err); - return Py_BuildValue("h", bits); -} - -static char sndih_setSampleSize__doc__[] = -"" -; - -static PyObject * -sndih_setSampleSize(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - short size; - OSErr err; - - if (!PyArg_ParseTuple(args, "lh", &inRefNum, &size)) - return NULL; - - if( (err=SPBSetDeviceInfo(inRefNum, siSampleSize, (Ptr)&size)) != noErr ) - return PyMac_Error(err); - Py_INCREF(Py_None); - return Py_None; -} - -static char sndih_getSampleSizeAvailable__doc__[] = -"" -; - -static PyObject * -sndih_getSampleSizeAvailable(self, args) - PyObject *self; /* Not used */ - PyObject *args; -{ - long inRefNum; - struct SampleSizeAvailable_arg arg; - OSErr err; - PyObject *rsizes; - short *fsizes; - int i; - - arg.sizes = NULL; - rsizes = NULL; - if (!PyArg_ParseTuple(args, "l", &inRefNum)) - return NULL; - - if( (err=SPBGetDeviceInfo(inRefNum, siSampleSizeAvailable, (Ptr)&arg)) != noErr ) { - return PyMac_Error(err); - } - fsizes = (short *)*(arg.sizes); - /* Handle contains a list of rates */ - if( (rsizes = PyTuple_New(arg.numsizes)) == NULL) - return NULL; - for( i=0; i - -/* Convert a SndCommand argument */ -static int -SndCmd_Convert(PyObject *v, SndCommand *pc) -{ - int len; - pc->param1 = 0; - pc->param2 = 0; - if (PyTuple_Check(v)) { - if (PyArg_ParseTuple(v, "h|hl", &pc->cmd, &pc->param1, &pc->param2)) - return 1; - PyErr_Clear(); - return PyArg_ParseTuple(v, "Hhs#", &pc->cmd, &pc->param1, &pc->param2, &len); - } - return PyArg_Parse(v, "H", &pc->cmd); -} - -static pascal void SndCh_UserRoutine(SndChannelPtr chan, SndCommand *cmd); /* Forward */ -static pascal void SPB_completion(SPBPtr my_spb); /* Forward */ - -static PyObject *Snd_Error; - -/* --------------------- Object type SndChannel --------------------- */ - -static PyTypeObject SndChannel_Type; - -#define SndCh_Check(x) ((x)->ob_type == &SndChannel_Type || PyObject_TypeCheck((x), &SndChannel_Type)) - -typedef struct SndChannelObject { - PyObject_HEAD - SndChannelPtr ob_itself; - /* Members used to implement callbacks: */ - PyObject *ob_callback; - long ob_A5; - SndCommand ob_cmd; -} SndChannelObject; - -static PyObject *SndCh_New(SndChannelPtr itself) -{ - SndChannelObject *it; - it = PyObject_NEW(SndChannelObject, &SndChannel_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - it->ob_callback = NULL; - it->ob_A5 = SetCurrentA5(); - return (PyObject *)it; -} - -static void SndCh_dealloc(SndChannelObject *self) -{ - SndDisposeChannel(self->ob_itself, 1); - Py_XDECREF(self->ob_callback); - PyObject_Free((PyObject *)self); -} - -static PyObject *SndCh_SndDoCommand(SndChannelObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SndCommand cmd; - Boolean noWait; - if (!PyArg_ParseTuple(_args, "O&b", - SndCmd_Convert, &cmd, - &noWait)) - return NULL; - _err = SndDoCommand(_self->ob_itself, - &cmd, - noWait); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *SndCh_SndDoImmediate(SndChannelObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SndCommand cmd; - if (!PyArg_ParseTuple(_args, "O&", - SndCmd_Convert, &cmd)) - return NULL; - _err = SndDoImmediate(_self->ob_itself, - &cmd); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *SndCh_SndPlay(SndChannelObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SndListHandle sndHandle; - Boolean async; - if (!PyArg_ParseTuple(_args, "O&b", - ResObj_Convert, &sndHandle, - &async)) - return NULL; - _err = SndPlay(_self->ob_itself, - sndHandle, - async); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *SndCh_SndChannelStatus(SndChannelObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short theLength; - SCStatus theStatus__out__; - if (!PyArg_ParseTuple(_args, "h", - &theLength)) - return NULL; - _err = SndChannelStatus(_self->ob_itself, - theLength, - &theStatus__out__); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("s#", - (char *)&theStatus__out__, (int)sizeof(SCStatus)); - return _res; -} - -static PyObject *SndCh_SndGetInfo(SndChannelObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType selector; - void * infoPtr; - if (!PyArg_ParseTuple(_args, "O&w", - PyMac_GetOSType, &selector, - &infoPtr)) - return NULL; - _err = SndGetInfo(_self->ob_itself, - selector, - infoPtr); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *SndCh_SndSetInfo(SndChannelObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType selector; - void * infoPtr; - if (!PyArg_ParseTuple(_args, "O&w", - PyMac_GetOSType, &selector, - &infoPtr)) - return NULL; - _err = SndSetInfo(_self->ob_itself, - selector, - infoPtr); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyMethodDef SndCh_methods[] = { - {"SndDoCommand", (PyCFunction)SndCh_SndDoCommand, 1, - PyDoc_STR("(SndCommand cmd, Boolean noWait) -> None")}, - {"SndDoImmediate", (PyCFunction)SndCh_SndDoImmediate, 1, - PyDoc_STR("(SndCommand cmd) -> None")}, - {"SndPlay", (PyCFunction)SndCh_SndPlay, 1, - PyDoc_STR("(SndListHandle sndHandle, Boolean async) -> None")}, - {"SndChannelStatus", (PyCFunction)SndCh_SndChannelStatus, 1, - PyDoc_STR("(short theLength) -> (SCStatus theStatus)")}, - {"SndGetInfo", (PyCFunction)SndCh_SndGetInfo, 1, - PyDoc_STR("(OSType selector, void * infoPtr) -> None")}, - {"SndSetInfo", (PyCFunction)SndCh_SndSetInfo, 1, - PyDoc_STR("(OSType selector, void * infoPtr) -> None")}, - {NULL, NULL, 0} -}; - -#define SndCh_getsetlist NULL - - -#define SndCh_compare NULL - -#define SndCh_repr NULL - -#define SndCh_hash NULL - -static PyTypeObject SndChannel_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Snd.SndChannel", /*tp_name*/ - sizeof(SndChannelObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) SndCh_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) SndCh_compare, /*tp_compare*/ - (reprfunc) SndCh_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) SndCh_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - SndCh_methods, /* tp_methods */ - 0, /*tp_members*/ - SndCh_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - 0, /*tp_new*/ - 0, /*tp_free*/ -}; - -/* ------------------- End object type SndChannel ------------------- */ - - -/* ------------------------ Object type SPB ------------------------- */ - -static PyTypeObject SPB_Type; - -#define SPBObj_Check(x) ((x)->ob_type == &SPB_Type || PyObject_TypeCheck((x), &SPB_Type)) - -typedef struct SPBObject { - PyObject_HEAD - /* Members used to implement callbacks: */ - PyObject *ob_completion; - PyObject *ob_interrupt; - PyObject *ob_thiscallback; - long ob_A5; - SPB ob_spb; -} SPBObject; - -static PyObject *SPBObj_New(void) -{ - SPBObject *it; - it = PyObject_NEW(SPBObject, &SPB_Type); - if (it == NULL) return NULL; - it->ob_completion = NULL; - it->ob_interrupt = NULL; - it->ob_thiscallback = NULL; - it->ob_A5 = SetCurrentA5(); - memset((char *)&it->ob_spb, 0, sizeof(it->ob_spb)); - it->ob_spb.userLong = (long)it; - return (PyObject *)it; -} -static int SPBObj_Convert(PyObject *v, SPBPtr *p_itself) -{ - if (!SPBObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "SPB required"); - return 0; - } - *p_itself = &((SPBObject *)v)->ob_spb; - return 1; -} - -static void SPBObj_dealloc(SPBObject *self) -{ - /* Cleanup of self->ob_itself goes here */ - self->ob_spb.userLong = 0; - self->ob_thiscallback = 0; - Py_XDECREF(self->ob_completion); - Py_XDECREF(self->ob_interrupt); - PyObject_Free((PyObject *)self); -} - -static PyMethodDef SPBObj_methods[] = { - {NULL, NULL, 0} -}; - -static PyObject *SPBObj_get_inRefNum(SPBObject *self, void *closure) -{ - return Py_BuildValue("l", self->ob_spb.inRefNum); -} - -static int SPBObj_set_inRefNum(SPBObject *self, PyObject *v, void *closure) -{ - return -1 + PyArg_Parse(v, "l", &self->ob_spb.inRefNum); - return 0; -} - -static PyObject *SPBObj_get_count(SPBObject *self, void *closure) -{ - return Py_BuildValue("l", self->ob_spb.count); -} - -static int SPBObj_set_count(SPBObject *self, PyObject *v, void *closure) -{ - return -1 + PyArg_Parse(v, "l", &self->ob_spb.count); - return 0; -} - -static PyObject *SPBObj_get_milliseconds(SPBObject *self, void *closure) -{ - return Py_BuildValue("l", self->ob_spb.milliseconds); -} - -static int SPBObj_set_milliseconds(SPBObject *self, PyObject *v, void *closure) -{ - return -1 + PyArg_Parse(v, "l", &self->ob_spb.milliseconds); - return 0; -} - -static PyObject *SPBObj_get_error(SPBObject *self, void *closure) -{ - return Py_BuildValue("h", self->ob_spb.error); -} - -#define SPBObj_set_error NULL - -#define SPBObj_get_completionRoutine NULL - -static int SPBObj_set_completionRoutine(SPBObject *self, PyObject *v, void *closure) -{ - self->ob_spb.completionRoutine = NewSICompletionUPP(SPB_completion); - self->ob_completion = v; - Py_INCREF(v); - return 0; - return 0; -} - -static PyGetSetDef SPBObj_getsetlist[] = { - {"inRefNum", (getter)SPBObj_get_inRefNum, (setter)SPBObj_set_inRefNum, NULL}, - {"count", (getter)SPBObj_get_count, (setter)SPBObj_set_count, NULL}, - {"milliseconds", (getter)SPBObj_get_milliseconds, (setter)SPBObj_set_milliseconds, NULL}, - {"error", (getter)SPBObj_get_error, (setter)SPBObj_set_error, NULL}, - {"completionRoutine", (getter)SPBObj_get_completionRoutine, (setter)SPBObj_set_completionRoutine, NULL}, - {NULL, NULL, NULL, NULL}, -}; - - -#define SPBObj_compare NULL - -#define SPBObj_repr NULL - -#define SPBObj_hash NULL - -static PyTypeObject SPB_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Snd.SPB", /*tp_name*/ - sizeof(SPBObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) SPBObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) SPBObj_compare, /*tp_compare*/ - (reprfunc) SPBObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) SPBObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - SPBObj_methods, /* tp_methods */ - 0, /*tp_members*/ - SPBObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - 0, /*tp_new*/ - 0, /*tp_free*/ -}; - -/* ---------------------- End object type SPB ----------------------- */ - - -static PyObject *Snd_SPB(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - _res = SPBObj_New(); return _res; -} - -static PyObject *Snd_SysBeep(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short duration; - if (!PyArg_ParseTuple(_args, "h", - &duration)) - return NULL; - SysBeep(duration); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Snd_SndNewChannel(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SndChannelPtr chan = 0; - short synth; - long init; - PyObject* userRoutine; - if (!PyArg_ParseTuple(_args, "hlO", - &synth, - &init, - &userRoutine)) - return NULL; - if (userRoutine != Py_None && !PyCallable_Check(userRoutine)) - { - PyErr_SetString(PyExc_TypeError, "callback must be callable"); - goto userRoutine__error__; - } - _err = SndNewChannel(&chan, - synth, - init, - NewSndCallBackUPP(SndCh_UserRoutine)); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - SndCh_New, chan); - if (_res != NULL && userRoutine != Py_None) - { - SndChannelObject *p = (SndChannelObject *)_res; - p->ob_itself->userInfo = (long)p; - Py_INCREF(userRoutine); - p->ob_callback = userRoutine; - } - userRoutine__error__: ; - return _res; -} - -static PyObject *Snd_SndSoundManagerVersion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - NumVersion _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = SndSoundManagerVersion(); - _res = Py_BuildValue("O&", - PyMac_BuildNumVersion, _rv); - return _res; -} - -static PyObject *Snd_SndManagerStatus(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short theLength; - SMStatus theStatus__out__; - if (!PyArg_ParseTuple(_args, "h", - &theLength)) - return NULL; - _err = SndManagerStatus(theLength, - &theStatus__out__); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("s#", - (char *)&theStatus__out__, (int)sizeof(SMStatus)); - return _res; -} - -static PyObject *Snd_SndGetSysBeepState(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short sysBeepState; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - SndGetSysBeepState(&sysBeepState); - _res = Py_BuildValue("h", - sysBeepState); - return _res; -} - -static PyObject *Snd_SndSetSysBeepState(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short sysBeepState; - if (!PyArg_ParseTuple(_args, "h", - &sysBeepState)) - return NULL; - _err = SndSetSysBeepState(sysBeepState); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Snd_GetSysBeepVolume(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long level; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetSysBeepVolume(&level); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - level); - return _res; -} - -static PyObject *Snd_SetSysBeepVolume(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long level; - if (!PyArg_ParseTuple(_args, "l", - &level)) - return NULL; - _err = SetSysBeepVolume(level); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Snd_GetDefaultOutputVolume(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long level; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetDefaultOutputVolume(&level); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - level); - return _res; -} - -static PyObject *Snd_SetDefaultOutputVolume(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long level; - if (!PyArg_ParseTuple(_args, "l", - &level)) - return NULL; - _err = SetDefaultOutputVolume(level); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Snd_GetSoundHeaderOffset(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SndListHandle sndHandle; - long offset; - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &sndHandle)) - return NULL; - _err = GetSoundHeaderOffset(sndHandle, - &offset); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - offset); - return _res; -} - -static PyObject *Snd_GetCompressionInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short compressionID; - OSType format; - short numChannels; - short sampleSize; - CompressionInfo cp__out__; - if (!PyArg_ParseTuple(_args, "hO&hh", - &compressionID, - PyMac_GetOSType, &format, - &numChannels, - &sampleSize)) - return NULL; - _err = GetCompressionInfo(compressionID, - format, - numChannels, - sampleSize, - &cp__out__); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("s#", - (char *)&cp__out__, (int)sizeof(CompressionInfo)); - return _res; -} - -static PyObject *Snd_SetSoundPreference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType theType; - Str255 name; - Handle settings; - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &theType, - ResObj_Convert, &settings)) - return NULL; - _err = SetSoundPreference(theType, - name, - settings); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildStr255, name); - return _res; -} - -static PyObject *Snd_GetSoundPreference(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType theType; - Str255 name; - Handle settings; - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &theType, - ResObj_Convert, &settings)) - return NULL; - _err = GetSoundPreference(theType, - name, - settings); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildStr255, name); - return _res; -} - -static PyObject *Snd_GetCompressionName(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - OSType compressionType; - Str255 compressionName; - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetOSType, &compressionType)) - return NULL; - _err = GetCompressionName(compressionType, - compressionName); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildStr255, compressionName); - return _res; -} - -static PyObject *Snd_SPBVersion(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - NumVersion _rv; - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = SPBVersion(); - _res = Py_BuildValue("O&", - PyMac_BuildNumVersion, _rv); - return _res; -} - -static PyObject *Snd_SndRecord(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Point corner; - OSType quality; - SndListHandle sndHandle; - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &corner, - PyMac_GetOSType, &quality)) - return NULL; - _err = SndRecord((ModalFilterUPP)0, - corner, - quality, - &sndHandle); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, sndHandle); - return _res; -} - -static PyObject *Snd_SPBSignInDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short deviceRefNum; - Str255 deviceName; - if (!PyArg_ParseTuple(_args, "hO&", - &deviceRefNum, - PyMac_GetStr255, deviceName)) - return NULL; - _err = SPBSignInDevice(deviceRefNum, - deviceName); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Snd_SPBSignOutDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short deviceRefNum; - if (!PyArg_ParseTuple(_args, "h", - &deviceRefNum)) - return NULL; - _err = SPBSignOutDevice(deviceRefNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Snd_SPBGetIndexedDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - short count; - Str255 deviceName; - Handle deviceIconHandle; - if (!PyArg_ParseTuple(_args, "h", - &count)) - return NULL; - _err = SPBGetIndexedDevice(count, - deviceName, - &deviceIconHandle); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - PyMac_BuildStr255, deviceName, - ResObj_New, deviceIconHandle); - return _res; -} - -static PyObject *Snd_SPBOpenDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - Str255 deviceName; - short permission; - long inRefNum; - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetStr255, deviceName, - &permission)) - return NULL; - _err = SPBOpenDevice(deviceName, - permission, - &inRefNum); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - inRefNum); - return _res; -} - -static PyObject *Snd_SPBCloseDevice(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long inRefNum; - if (!PyArg_ParseTuple(_args, "l", - &inRefNum)) - return NULL; - _err = SPBCloseDevice(inRefNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Snd_SPBRecord(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - SPBPtr inParamPtr; - Boolean asynchFlag; - if (!PyArg_ParseTuple(_args, "O&b", - SPBObj_Convert, &inParamPtr, - &asynchFlag)) - return NULL; - _err = SPBRecord(inParamPtr, - asynchFlag); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Snd_SPBPauseRecording(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long inRefNum; - if (!PyArg_ParseTuple(_args, "l", - &inRefNum)) - return NULL; - _err = SPBPauseRecording(inRefNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Snd_SPBResumeRecording(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long inRefNum; - if (!PyArg_ParseTuple(_args, "l", - &inRefNum)) - return NULL; - _err = SPBResumeRecording(inRefNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Snd_SPBStopRecording(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long inRefNum; - if (!PyArg_ParseTuple(_args, "l", - &inRefNum)) - return NULL; - _err = SPBStopRecording(inRefNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Snd_SPBGetRecordingStatus(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long inRefNum; - short recordingStatus; - short meterLevel; - unsigned long totalSamplesToRecord; - unsigned long numberOfSamplesRecorded; - unsigned long totalMsecsToRecord; - unsigned long numberOfMsecsRecorded; - if (!PyArg_ParseTuple(_args, "l", - &inRefNum)) - return NULL; - _err = SPBGetRecordingStatus(inRefNum, - &recordingStatus, - &meterLevel, - &totalSamplesToRecord, - &numberOfSamplesRecorded, - &totalMsecsToRecord, - &numberOfMsecsRecorded); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("hhllll", - recordingStatus, - meterLevel, - totalSamplesToRecord, - numberOfSamplesRecorded, - totalMsecsToRecord, - numberOfMsecsRecorded); - return _res; -} - -static PyObject *Snd_SPBGetDeviceInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long inRefNum; - OSType infoType; - void * infoData; - if (!PyArg_ParseTuple(_args, "lO&w", - &inRefNum, - PyMac_GetOSType, &infoType, - &infoData)) - return NULL; - _err = SPBGetDeviceInfo(inRefNum, - infoType, - infoData); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Snd_SPBSetDeviceInfo(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long inRefNum; - OSType infoType; - void * infoData; - if (!PyArg_ParseTuple(_args, "lO&w", - &inRefNum, - PyMac_GetOSType, &infoType, - &infoData)) - return NULL; - _err = SPBSetDeviceInfo(inRefNum, - infoType, - infoData); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Snd_SPBMillisecondsToBytes(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long inRefNum; - long milliseconds; - if (!PyArg_ParseTuple(_args, "l", - &inRefNum)) - return NULL; - _err = SPBMillisecondsToBytes(inRefNum, - &milliseconds); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - milliseconds); - return _res; -} - -static PyObject *Snd_SPBBytesToMilliseconds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - long inRefNum; - long byteCount; - if (!PyArg_ParseTuple(_args, "l", - &inRefNum)) - return NULL; - _err = SPBBytesToMilliseconds(inRefNum, - &byteCount); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - byteCount); - return _res; -} -#endif /* __LP64__ */ - -static PyMethodDef Snd_methods[] = { -#ifndef __LP64__ - {"SPB", (PyCFunction)Snd_SPB, 1, - PyDoc_STR(NULL)}, - {"SysBeep", (PyCFunction)Snd_SysBeep, 1, - PyDoc_STR("(short duration) -> None")}, - {"SndNewChannel", (PyCFunction)Snd_SndNewChannel, 1, - PyDoc_STR("(short synth, long init, PyObject* userRoutine) -> (SndChannelPtr chan)")}, - {"SndSoundManagerVersion", (PyCFunction)Snd_SndSoundManagerVersion, 1, - PyDoc_STR("() -> (NumVersion _rv)")}, - {"SndManagerStatus", (PyCFunction)Snd_SndManagerStatus, 1, - PyDoc_STR("(short theLength) -> (SMStatus theStatus)")}, - {"SndGetSysBeepState", (PyCFunction)Snd_SndGetSysBeepState, 1, - PyDoc_STR("() -> (short sysBeepState)")}, - {"SndSetSysBeepState", (PyCFunction)Snd_SndSetSysBeepState, 1, - PyDoc_STR("(short sysBeepState) -> None")}, - {"GetSysBeepVolume", (PyCFunction)Snd_GetSysBeepVolume, 1, - PyDoc_STR("() -> (long level)")}, - {"SetSysBeepVolume", (PyCFunction)Snd_SetSysBeepVolume, 1, - PyDoc_STR("(long level) -> None")}, - {"GetDefaultOutputVolume", (PyCFunction)Snd_GetDefaultOutputVolume, 1, - PyDoc_STR("() -> (long level)")}, - {"SetDefaultOutputVolume", (PyCFunction)Snd_SetDefaultOutputVolume, 1, - PyDoc_STR("(long level) -> None")}, - {"GetSoundHeaderOffset", (PyCFunction)Snd_GetSoundHeaderOffset, 1, - PyDoc_STR("(SndListHandle sndHandle) -> (long offset)")}, - {"GetCompressionInfo", (PyCFunction)Snd_GetCompressionInfo, 1, - PyDoc_STR("(short compressionID, OSType format, short numChannels, short sampleSize) -> (CompressionInfo cp)")}, - {"SetSoundPreference", (PyCFunction)Snd_SetSoundPreference, 1, - PyDoc_STR("(OSType theType, Handle settings) -> (Str255 name)")}, - {"GetSoundPreference", (PyCFunction)Snd_GetSoundPreference, 1, - PyDoc_STR("(OSType theType, Handle settings) -> (Str255 name)")}, - {"GetCompressionName", (PyCFunction)Snd_GetCompressionName, 1, - PyDoc_STR("(OSType compressionType) -> (Str255 compressionName)")}, - {"SPBVersion", (PyCFunction)Snd_SPBVersion, 1, - PyDoc_STR("() -> (NumVersion _rv)")}, - {"SndRecord", (PyCFunction)Snd_SndRecord, 1, - PyDoc_STR("(Point corner, OSType quality) -> (SndListHandle sndHandle)")}, - {"SPBSignInDevice", (PyCFunction)Snd_SPBSignInDevice, 1, - PyDoc_STR("(short deviceRefNum, Str255 deviceName) -> None")}, - {"SPBSignOutDevice", (PyCFunction)Snd_SPBSignOutDevice, 1, - PyDoc_STR("(short deviceRefNum) -> None")}, - {"SPBGetIndexedDevice", (PyCFunction)Snd_SPBGetIndexedDevice, 1, - PyDoc_STR("(short count) -> (Str255 deviceName, Handle deviceIconHandle)")}, - {"SPBOpenDevice", (PyCFunction)Snd_SPBOpenDevice, 1, - PyDoc_STR("(Str255 deviceName, short permission) -> (long inRefNum)")}, - {"SPBCloseDevice", (PyCFunction)Snd_SPBCloseDevice, 1, - PyDoc_STR("(long inRefNum) -> None")}, - {"SPBRecord", (PyCFunction)Snd_SPBRecord, 1, - PyDoc_STR("(SPBPtr inParamPtr, Boolean asynchFlag) -> None")}, - {"SPBPauseRecording", (PyCFunction)Snd_SPBPauseRecording, 1, - PyDoc_STR("(long inRefNum) -> None")}, - {"SPBResumeRecording", (PyCFunction)Snd_SPBResumeRecording, 1, - PyDoc_STR("(long inRefNum) -> None")}, - {"SPBStopRecording", (PyCFunction)Snd_SPBStopRecording, 1, - PyDoc_STR("(long inRefNum) -> None")}, - {"SPBGetRecordingStatus", (PyCFunction)Snd_SPBGetRecordingStatus, 1, - PyDoc_STR("(long inRefNum) -> (short recordingStatus, short meterLevel, unsigned long totalSamplesToRecord, unsigned long numberOfSamplesRecorded, unsigned long totalMsecsToRecord, unsigned long numberOfMsecsRecorded)")}, - {"SPBGetDeviceInfo", (PyCFunction)Snd_SPBGetDeviceInfo, 1, - PyDoc_STR("(long inRefNum, OSType infoType, void * infoData) -> None")}, - {"SPBSetDeviceInfo", (PyCFunction)Snd_SPBSetDeviceInfo, 1, - PyDoc_STR("(long inRefNum, OSType infoType, void * infoData) -> None")}, - {"SPBMillisecondsToBytes", (PyCFunction)Snd_SPBMillisecondsToBytes, 1, - PyDoc_STR("(long inRefNum) -> (long milliseconds)")}, - {"SPBBytesToMilliseconds", (PyCFunction)Snd_SPBBytesToMilliseconds, 1, - PyDoc_STR("(long inRefNum) -> (long byteCount)")}, -#endif /* __LP64__ */ - {NULL, NULL, 0} -}; - - -#ifndef __LP64__ - -/* Routine passed to Py_AddPendingCall -- call the Python callback */ -static int -SndCh_CallCallBack(void *arg) -{ - SndChannelObject *p = (SndChannelObject *)arg; - PyObject *args; - PyObject *res; - args = Py_BuildValue("(O(hhl))", - p, p->ob_cmd.cmd, p->ob_cmd.param1, p->ob_cmd.param2); - res = PyEval_CallObject(p->ob_callback, args); - Py_DECREF(args); - if (res == NULL) - return -1; - Py_DECREF(res); - return 0; -} - -/* Routine passed to NewSndChannel -- schedule a call to SndCh_CallCallBack */ -static pascal void -SndCh_UserRoutine(SndChannelPtr chan, SndCommand *cmd) -{ - SndChannelObject *p = (SndChannelObject *)(chan->userInfo); - if (p->ob_callback != NULL) { - long A5 = SetA5(p->ob_A5); - p->ob_cmd = *cmd; - Py_AddPendingCall(SndCh_CallCallBack, (void *)p); - SetA5(A5); - } -} - -/* SPB callbacks - Schedule callbacks to Python */ -static int -SPB_CallCallBack(void *arg) -{ - SPBObject *p = (SPBObject *)arg; - PyObject *args; - PyObject *res; - - if ( p->ob_thiscallback == 0 ) return 0; - args = Py_BuildValue("(O)", p); - res = PyEval_CallObject(p->ob_thiscallback, args); - p->ob_thiscallback = 0; - Py_DECREF(args); - if (res == NULL) - return -1; - Py_DECREF(res); - return 0; -} - -static pascal void -SPB_completion(SPBPtr my_spb) -{ - SPBObject *p = (SPBObject *)(my_spb->userLong); - - if (p && p->ob_completion) { - long A5 = SetA5(p->ob_A5); - p->ob_thiscallback = p->ob_completion; /* Hope we cannot get two at the same time */ - Py_AddPendingCall(SPB_CallCallBack, (void *)p); - SetA5(A5); - } -} -#endif /* __LP64__ */ - - - -void init_Snd(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; -#endif /* __LP64__ */ - - - - - - m = Py_InitModule("_Snd", Snd_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - Snd_Error = PyMac_GetOSErrException(); - if (Snd_Error == NULL || - PyDict_SetItemString(d, "Error", Snd_Error) != 0) - return; - SndChannel_Type.ob_type = &PyType_Type; - if (PyType_Ready(&SndChannel_Type) < 0) return; - Py_INCREF(&SndChannel_Type); - PyModule_AddObject(m, "SndChannel", (PyObject *)&SndChannel_Type); - /* Backward-compatible name */ - Py_INCREF(&SndChannel_Type); - PyModule_AddObject(m, "SndChannelType", (PyObject *)&SndChannel_Type); - SPB_Type.ob_type = &PyType_Type; - if (PyType_Ready(&SPB_Type) < 0) return; - Py_INCREF(&SPB_Type); - PyModule_AddObject(m, "SPB", (PyObject *)&SPB_Type); - /* Backward-compatible name */ - Py_INCREF(&SPB_Type); - PyModule_AddObject(m, "SPBType", (PyObject *)&SPB_Type); -#endif /* __LP64__ */ -} - -/* ======================== End module _Snd ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/snd/sndscan.py b/project/jni/python/src/Mac/Modules/snd/sndscan.py deleted file mode 100644 index 7504aefd9..000000000 --- a/project/jni/python/src/Mac/Modules/snd/sndscan.py +++ /dev/null @@ -1,127 +0,0 @@ -# Scan Sound.h header file, generate sndgen.py and Sound.py files. -# Then import sndsupport (which execs sndgen.py) to generate Sndmodule.c. -# (Should learn how to tell the compiler to compile it as well.) - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) - -from scantools import Scanner - -def main(): - input = "Sound.h" - output = "sndgen.py" - defsoutput = TOOLBOXDIR + "Sound.py" - scanner = SoundScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now doing 'import sndsupport' ===" - import sndsupport - print "=== Done. It's up to you to compile Sndmodule.c ===" - -class SoundScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "SndFunction" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t == "SndChannelPtr" and m == "InMode": - classname = "SndMethod" - listname = "sndmethods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - - def makeblacklistnames(self): - return [ - 'SndDisposeChannel', # automatic on deallocation - 'SndAddModifier', # for internal use only - 'SndPlayDoubleBuffer', # very low level routine - # Missing from libraries (UH332) - 'SoundManagerSetInfo', - 'SoundManagerGetInfo', - # Constants with funny definitions - 'rate48khz', - 'rate44khz', - 'kInvalidSource', - # OS8 only: - 'MACEVersion', - 'SPBRecordToFile', - 'Exp1to6', - 'Comp6to1', - 'Exp1to3', - 'Comp3to1', - 'SndControl', - 'SndStopFilePlay', - 'SndStartFilePlay', - 'SndPauseFilePlay', - 'SndRecordToFile', - - ] - - def makeblacklisttypes(self): - return [ - "GetSoundVol", - "SetSoundVol", - "UnsignedFixed", - # Don't have the time to dig into this... - "Component", - "ComponentInstance", - "SoundComponentDataPtr", - "SoundComponentData", - "SoundComponentData_ptr", - "SoundConverter", - ] - - def makerepairinstructions(self): - return [ - ([("Str255", "*", "InMode")], - [("*", "*", "OutMode")]), - - ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")], - [("InBuffer", "*", "*")]), - - ([("void", "*", "OutMode"), ("long", "*", "InMode"), - ("long", "*", "OutMode")], - [("VarVarOutBuffer", "*", "InOutMode")]), - - ([("SCStatusPtr", "*", "InMode")], - [("SCStatus", "*", "OutMode")]), - - ([("SMStatusPtr", "*", "InMode")], - [("SMStatus", "*", "OutMode")]), - - ([("CompressionInfoPtr", "*", "InMode")], - [("CompressionInfo", "*", "OutMode")]), - - # For SndPlay's SndListHandle argument - ([("Handle", "sndHdl", "InMode")], - [("SndListHandle", "*", "*")]), - - # For SndStartFilePlay - ([("long", "bufferSize", "InMode"), ("void", "theBuffer", "OutMode")], - [("*", "*", "*"), ("FakeType('0')", "*", "InMode")]), - - # For Comp3to1 etc. - ([("void_ptr", "inBuffer", "InMode"), - ("void", "outBuffer", "OutMode"), - ("unsigned_long", "cnt", "InMode")], - [("InOutBuffer", "buffer", "InOutMode")]), - - # Ditto -## ([("void_ptr", "inState", "InMode"), ("void", "outState", "OutMode")], -## [("InOutBuf128", "state", "InOutMode")]), - ([("StateBlockPtr", "inState", "InMode"), ("StateBlockPtr", "outState", "InMode")], - [("StateBlock", "state", "InOutMode")]), - - # Catch-all for the last couple of void pointers - ([("void", "*", "OutMode")], - [("void_ptr", "*", "InMode")]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/snd/sndsupport.py b/project/jni/python/src/Mac/Modules/snd/sndsupport.py deleted file mode 100644 index cf0fa6ca5..000000000 --- a/project/jni/python/src/Mac/Modules/snd/sndsupport.py +++ /dev/null @@ -1,319 +0,0 @@ -# This script generates the Sound interface for Python. -# It uses the "bgen" package to generate C code. -# It execs the file sndgen.py which contain the function definitions -# (sndgen.py was generated by sndscan.py, scanning the header file). - -from macsupport import * - - -# define our own function and module generators - -class SndMixIn: pass - -class SndFunction(SndMixIn, OSErrFunctionGenerator): pass -class SndMethod(SndMixIn, OSErrMethodGenerator): pass - - -# includestuff etc. are imported from macsupport - -includestuff = includestuff + """ -#include -""" - -initstuff = initstuff + """ -""" - - -# define types used for arguments (in addition to standard and macsupport types) - -class SndChannelPtrType(OpaqueByValueType): - def declare(self, name): - # Initializing all SndChannelPtr objects to 0 saves - # special-casing NewSndChannel(), where it is formally an - # input-output parameter but we treat it as output-only - # (since Python users are not supposed to allocate memory) - Output("SndChannelPtr %s = 0;", name) - -SndChannelPtr = SndChannelPtrType('SndChannelPtr', 'SndCh') - -SndCommand = OpaqueType('SndCommand', 'SndCmd') -SndCommand_ptr = OpaqueType('SndCommand', 'SndCmd') -SndListHandle = OpaqueByValueType("SndListHandle", "ResObj") -SPBPtr = OpaqueByValueType("SPBPtr", "SPBObj") -ModalFilterUPP = FakeType("(ModalFilterUPP)0") - -# -# NOTE: the following is pretty dangerous. For void pointers we pass buffer addresses -# but we have no way to check that the buffer is big enough. This is the same problem -# as in C, though (but Pythoneers may not be suspecting this...) -void_ptr = Type("void *", "w") - -class SndCallBackType(InputOnlyType): - def __init__(self): - Type.__init__(self, 'PyObject*', 'O') - def getargsCheck(self, name): - Output("if (%s != Py_None && !PyCallable_Check(%s))", name, name) - OutLbrace() - Output('PyErr_SetString(PyExc_TypeError, "callback must be callable");') - Output("goto %s__error__;", name) - OutRbrace() - def passInput(self, name): - return "NewSndCallBackUPP(SndCh_UserRoutine)" - def cleanup(self, name): - # XXX This knows it is executing inside the SndNewChannel wrapper - Output("if (_res != NULL && %s != Py_None)", name) - OutLbrace() - Output("SndChannelObject *p = (SndChannelObject *)_res;") - Output("p->ob_itself->userInfo = (long)p;") - Output("Py_INCREF(%s);", name) - Output("p->ob_callback = %s;", name) - OutRbrace() - DedentLevel() - Output(" %s__error__: ;", name) - IndentLevel() - -SndCallBackProcPtr = SndCallBackType() -SndCallBackUPP = SndCallBackProcPtr - -SndCompletionProcPtr = FakeType('(SndCompletionProcPtr)0') # XXX -SndCompletionUPP = SndCompletionProcPtr - -##InOutBuf128 = FixedInputOutputBufferType(128) -StateBlock = StructInputOutputBufferType('StateBlock') - -AudioSelectionPtr = FakeType('0') # XXX - -ProcPtr = FakeType('0') # XXX -FilePlayCompletionUPP = FakeType('0') # XXX - -SCStatus = StructOutputBufferType('SCStatus') -SMStatus = StructOutputBufferType('SMStatus') -CompressionInfo = StructOutputBufferType('CompressionInfo') - -includestuff = includestuff + """ -/* Convert a SndCommand argument */ -static int -SndCmd_Convert(PyObject *v, SndCommand *pc) -{ - int len; - pc->param1 = 0; - pc->param2 = 0; - if (PyTuple_Check(v)) { - if (PyArg_ParseTuple(v, "h|hl", &pc->cmd, &pc->param1, &pc->param2)) - return 1; - PyErr_Clear(); - return PyArg_ParseTuple(v, "Hhs#", &pc->cmd, &pc->param1, &pc->param2, &len); - } - return PyArg_Parse(v, "H", &pc->cmd); -} - -static pascal void SndCh_UserRoutine(SndChannelPtr chan, SndCommand *cmd); /* Forward */ -static pascal void SPB_completion(SPBPtr my_spb); /* Forward */ -""" - - -finalstuff = finalstuff + """ -/* Routine passed to Py_AddPendingCall -- call the Python callback */ -static int -SndCh_CallCallBack(void *arg) -{ - SndChannelObject *p = (SndChannelObject *)arg; - PyObject *args; - PyObject *res; - args = Py_BuildValue("(O(hhl))", - p, p->ob_cmd.cmd, p->ob_cmd.param1, p->ob_cmd.param2); - res = PyEval_CallObject(p->ob_callback, args); - Py_DECREF(args); - if (res == NULL) - return -1; - Py_DECREF(res); - return 0; -} - -/* Routine passed to NewSndChannel -- schedule a call to SndCh_CallCallBack */ -static pascal void -SndCh_UserRoutine(SndChannelPtr chan, SndCommand *cmd) -{ - SndChannelObject *p = (SndChannelObject *)(chan->userInfo); - if (p->ob_callback != NULL) { - long A5 = SetA5(p->ob_A5); - p->ob_cmd = *cmd; - Py_AddPendingCall(SndCh_CallCallBack, (void *)p); - SetA5(A5); - } -} - -/* SPB callbacks - Schedule callbacks to Python */ -static int -SPB_CallCallBack(void *arg) -{ - SPBObject *p = (SPBObject *)arg; - PyObject *args; - PyObject *res; - - if ( p->ob_thiscallback == 0 ) return 0; - args = Py_BuildValue("(O)", p); - res = PyEval_CallObject(p->ob_thiscallback, args); - p->ob_thiscallback = 0; - Py_DECREF(args); - if (res == NULL) - return -1; - Py_DECREF(res); - return 0; -} - -static pascal void -SPB_completion(SPBPtr my_spb) -{ - SPBObject *p = (SPBObject *)(my_spb->userLong); - - if (p && p->ob_completion) { - long A5 = SetA5(p->ob_A5); - p->ob_thiscallback = p->ob_completion; /* Hope we cannot get two at the same time */ - Py_AddPendingCall(SPB_CallCallBack, (void *)p); - SetA5(A5); - } -} - -""" - - -# create the module and object definition and link them - -class SndObjectDefinition(PEP252Mixin, ObjectDefinition): - - def outputStructMembers(self): - ObjectDefinition.outputStructMembers(self) - Output("/* Members used to implement callbacks: */") - Output("PyObject *ob_callback;") - Output("long ob_A5;"); - Output("SndCommand ob_cmd;") - - def outputInitStructMembers(self): - ObjectDefinition.outputInitStructMembers(self) - Output("it->ob_callback = NULL;") - Output("it->ob_A5 = SetCurrentA5();"); - - def outputCleanupStructMembers(self): - ObjectDefinition.outputCleanupStructMembers(self) - Output("Py_XDECREF(self->ob_callback);") - - def outputFreeIt(self, itselfname): - Output("SndDisposeChannel(%s, 1);", itselfname) - - def outputConvert(self): - pass # Not needed - -# - -class SpbObjectDefinition(PEP252Mixin, ObjectDefinition): - getsetlist = [ - ( - 'inRefNum', - 'return Py_BuildValue("l", self->ob_spb.inRefNum);', - 'return -1 + PyArg_Parse(v, "l", &self->ob_spb.inRefNum);', - None, - ), ( - 'count', - 'return Py_BuildValue("l", self->ob_spb.count);', - 'return -1 + PyArg_Parse(v, "l", &self->ob_spb.count);', - None - ), ( - 'milliseconds', - 'return Py_BuildValue("l", self->ob_spb.milliseconds);', - 'return -1 + PyArg_Parse(v, "l", &self->ob_spb.milliseconds);', - None, - ), ( - 'error', - 'return Py_BuildValue("h", self->ob_spb.error);', - None, - None - ), ( - 'completionRoutine', - None, - """self->ob_spb.completionRoutine = NewSICompletionUPP(SPB_completion); - self->ob_completion = v; - Py_INCREF(v); - return 0;""", - None, - )] - - def outputStructMembers(self): - Output("/* Members used to implement callbacks: */") - Output("PyObject *ob_completion;") - Output("PyObject *ob_interrupt;") - Output("PyObject *ob_thiscallback;"); - Output("long ob_A5;") - Output("SPB ob_spb;") - - def outputNew(self): - Output() - Output("%sPyObject *%s_New(void)", self.static, self.prefix) - OutLbrace() - Output("%s *it;", self.objecttype) - self.outputCheckNewArg() - Output("it = PyObject_NEW(%s, &%s);", self.objecttype, self.typename) - Output("if (it == NULL) return NULL;") - self.outputInitStructMembers() - Output("return (PyObject *)it;") - OutRbrace() - - def outputInitStructMembers(self): - Output("it->ob_completion = NULL;") - Output("it->ob_interrupt = NULL;") - Output("it->ob_thiscallback = NULL;") - Output("it->ob_A5 = SetCurrentA5();") - Output("memset((char *)&it->ob_spb, 0, sizeof(it->ob_spb));") - Output("it->ob_spb.userLong = (long)it;") - - def outputCleanupStructMembers(self): - ObjectDefinition.outputCleanupStructMembers(self) - Output("self->ob_spb.userLong = 0;") - Output("self->ob_thiscallback = 0;") - Output("Py_XDECREF(self->ob_completion);") - Output("Py_XDECREF(self->ob_interrupt);") - - def outputConvert(self): - Output("%sint %s_Convert(PyObject *v, %s *p_itself)", self.static, self.prefix, self.itselftype) - OutLbrace() - self.outputCheckConvertArg() - Output("if (!%s_Check(v))", self.prefix) - OutLbrace() - Output('PyErr_SetString(PyExc_TypeError, "%s required");', self.name) - Output("return 0;") - OutRbrace() - Output("*p_itself = &((%s *)v)->ob_spb;", self.objecttype) - Output("return 1;") - OutRbrace() - - -sndobject = SndObjectDefinition('SndChannel', 'SndCh', 'SndChannelPtr') -spbobject = SpbObjectDefinition('SPB', 'SPBObj', 'SPBPtr') -spbgenerator = ManualGenerator("SPB", "_res = SPBObj_New(); return _res;") -module = MacModule('_Snd', 'Snd', includestuff, finalstuff, initstuff) -module.addobject(sndobject) -module.addobject(spbobject) -module.add(spbgenerator) - - -# create lists of functions and object methods - -functions = [] -sndmethods = [] - - -# populate the lists - -execfile('sndgen.py') - - -# add the functions and methods to the module and object, respectively - -for f in functions: module.add(f) -for f in sndmethods: sndobject.add(f) - - -# generate output - -SetOutputFileName('_Sndmodule.c') -module.generate() diff --git a/project/jni/python/src/Mac/Modules/te/_TEmodule.c b/project/jni/python/src/Mac/Modules/te/_TEmodule.c deleted file mode 100644 index f182688ae..000000000 --- a/project/jni/python/src/Mac/Modules/te/_TEmodule.c +++ /dev/null @@ -1,1339 +0,0 @@ - -/* =========================== Module _TE =========================== */ - -#include "Python.h" - -#ifndef __LP64__ - - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_TEObj_New(TEHandle); -extern int _TEObj_Convert(PyObject *, TEHandle *); - -#define TEObj_New _TEObj_New -#define TEObj_Convert _TEObj_Convert -#endif - -#define as_TE(h) ((TEHandle)h) -#define as_Resource(teh) ((Handle)teh) - -/* -** Parse/generate TextStyle records -*/ -static PyObject * -TextStyle_New(TextStylePtr itself) -{ - - return Py_BuildValue("lllO&", (long)itself->tsFont, (long)itself->tsFace, (long)itself->tsSize, QdRGB_New, - &itself->tsColor); -} - -static int -TextStyle_Convert(PyObject *v, TextStylePtr p_itself) -{ - long font, face, size; - - if( !PyArg_ParseTuple(v, "lllO&", &font, &face, &size, QdRGB_Convert, &p_itself->tsColor) ) - return 0; - p_itself->tsFont = (short)font; - p_itself->tsFace = (Style)face; - p_itself->tsSize = (short)size; - return 1; -} - -static PyObject *TE_Error; - -/* ------------------------- Object type TE ------------------------- */ - -PyTypeObject TE_Type; - -#define TEObj_Check(x) ((x)->ob_type == &TE_Type || PyObject_TypeCheck((x), &TE_Type)) - -typedef struct TEObject { - PyObject_HEAD - TEHandle ob_itself; -} TEObject; - -PyObject *TEObj_New(TEHandle itself) -{ - TEObject *it; - if (itself == NULL) { - PyErr_SetString(TE_Error,"Cannot create null TE"); - return NULL; - } - it = PyObject_NEW(TEObject, &TE_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - return (PyObject *)it; -} - -int TEObj_Convert(PyObject *v, TEHandle *p_itself) -{ - if (!TEObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "TE required"); - return 0; - } - *p_itself = ((TEObject *)v)->ob_itself; - return 1; -} - -static void TEObj_dealloc(TEObject *self) -{ - TEDispose(self->ob_itself); - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *TEObj_TESetText(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - char *text__in__; - long text__len__; - int text__in_len__; -#ifndef TESetText - PyMac_PRECHECK(TESetText); -#endif - if (!PyArg_ParseTuple(_args, "s#", - &text__in__, &text__in_len__)) - return NULL; - text__len__ = text__in_len__; - TESetText(text__in__, text__len__, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEGetText(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CharsHandle _rv; -#ifndef TEGetText - PyMac_PRECHECK(TEGetText); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TEGetText(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *TEObj_TEIdle(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TEIdle - PyMac_PRECHECK(TEIdle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TEIdle(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TESetSelect(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long selStart; - long selEnd; -#ifndef TESetSelect - PyMac_PRECHECK(TESetSelect); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &selStart, - &selEnd)) - return NULL; - TESetSelect(selStart, - selEnd, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEActivate(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TEActivate - PyMac_PRECHECK(TEActivate); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TEActivate(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEDeactivate(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TEDeactivate - PyMac_PRECHECK(TEDeactivate); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TEDeactivate(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEKey(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CharParameter key; -#ifndef TEKey - PyMac_PRECHECK(TEKey); -#endif - if (!PyArg_ParseTuple(_args, "h", - &key)) - return NULL; - TEKey(key, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TECut(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TECut - PyMac_PRECHECK(TECut); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TECut(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TECopy(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TECopy - PyMac_PRECHECK(TECopy); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TECopy(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEPaste(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TEPaste - PyMac_PRECHECK(TEPaste); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TEPaste(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEDelete(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TEDelete - PyMac_PRECHECK(TEDelete); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TEDelete(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEInsert(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - char *text__in__; - long text__len__; - int text__in_len__; -#ifndef TEInsert - PyMac_PRECHECK(TEInsert); -#endif - if (!PyArg_ParseTuple(_args, "s#", - &text__in__, &text__in_len__)) - return NULL; - text__len__ = text__in_len__; - TEInsert(text__in__, text__len__, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TESetAlignment(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short just; -#ifndef TESetAlignment - PyMac_PRECHECK(TESetAlignment); -#endif - if (!PyArg_ParseTuple(_args, "h", - &just)) - return NULL; - TESetAlignment(just, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEUpdate(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect rUpdate; -#ifndef TEUpdate - PyMac_PRECHECK(TEUpdate); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &rUpdate)) - return NULL; - TEUpdate(&rUpdate, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEScroll(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short dh; - short dv; -#ifndef TEScroll - PyMac_PRECHECK(TEScroll); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &dh, - &dv)) - return NULL; - TEScroll(dh, - dv, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TESelView(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TESelView - PyMac_PRECHECK(TESelView); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TESelView(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEPinScroll(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short dh; - short dv; -#ifndef TEPinScroll - PyMac_PRECHECK(TEPinScroll); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &dh, - &dv)) - return NULL; - TEPinScroll(dh, - dv, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEAutoView(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean fAuto; -#ifndef TEAutoView - PyMac_PRECHECK(TEAutoView); -#endif - if (!PyArg_ParseTuple(_args, "b", - &fAuto)) - return NULL; - TEAutoView(fAuto, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TECalText(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TECalText - PyMac_PRECHECK(TECalText); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TECalText(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEGetOffset(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - Point pt; -#ifndef TEGetOffset - PyMac_PRECHECK(TEGetOffset); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &pt)) - return NULL; - _rv = TEGetOffset(pt, - _self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *TEObj_TEGetPoint(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point _rv; - short offset; -#ifndef TEGetPoint - PyMac_PRECHECK(TEGetPoint); -#endif - if (!PyArg_ParseTuple(_args, "h", - &offset)) - return NULL; - _rv = TEGetPoint(offset, - _self->ob_itself); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, _rv); - return _res; -} - -static PyObject *TEObj_TEClick(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point pt; - Boolean fExtend; -#ifndef TEClick - PyMac_PRECHECK(TEClick); -#endif - if (!PyArg_ParseTuple(_args, "O&b", - PyMac_GetPoint, &pt, - &fExtend)) - return NULL; - TEClick(pt, - fExtend, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TESetStyleHandle(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TEStyleHandle theHandle; -#ifndef TESetStyleHandle - PyMac_PRECHECK(TESetStyleHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &theHandle)) - return NULL; - TESetStyleHandle(theHandle, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEGetStyleHandle(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TEStyleHandle _rv; -#ifndef TEGetStyleHandle - PyMac_PRECHECK(TEGetStyleHandle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TEGetStyleHandle(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *TEObj_TEGetStyle(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short offset; - TextStyle theStyle; - short lineHeight; - short fontAscent; -#ifndef TEGetStyle - PyMac_PRECHECK(TEGetStyle); -#endif - if (!PyArg_ParseTuple(_args, "h", - &offset)) - return NULL; - TEGetStyle(offset, - &theStyle, - &lineHeight, - &fontAscent, - _self->ob_itself); - _res = Py_BuildValue("O&hh", - TextStyle_New, &theStyle, - lineHeight, - fontAscent); - return _res; -} - -static PyObject *TEObj_TEStylePaste(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef TEStylePaste - PyMac_PRECHECK(TEStylePaste); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - TEStylePaste(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TESetStyle(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short mode; - TextStyle newStyle; - Boolean fRedraw; -#ifndef TESetStyle - PyMac_PRECHECK(TESetStyle); -#endif - if (!PyArg_ParseTuple(_args, "hO&b", - &mode, - TextStyle_Convert, &newStyle, - &fRedraw)) - return NULL; - TESetStyle(mode, - &newStyle, - fRedraw, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEReplaceStyle(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short mode; - TextStyle oldStyle; - TextStyle newStyle; - Boolean fRedraw; -#ifndef TEReplaceStyle - PyMac_PRECHECK(TEReplaceStyle); -#endif - if (!PyArg_ParseTuple(_args, "hO&O&b", - &mode, - TextStyle_Convert, &oldStyle, - TextStyle_Convert, &newStyle, - &fRedraw)) - return NULL; - TEReplaceStyle(mode, - &oldStyle, - &newStyle, - fRedraw, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEGetStyleScrapHandle(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - StScrpHandle _rv; -#ifndef TEGetStyleScrapHandle - PyMac_PRECHECK(TEGetStyleScrapHandle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TEGetStyleScrapHandle(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *TEObj_TEStyleInsert(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - char *text__in__; - long text__len__; - int text__in_len__; - StScrpHandle hST; -#ifndef TEStyleInsert - PyMac_PRECHECK(TEStyleInsert); -#endif - if (!PyArg_ParseTuple(_args, "s#O&", - &text__in__, &text__in_len__, - ResObj_Convert, &hST)) - return NULL; - text__len__ = text__in_len__; - TEStyleInsert(text__in__, text__len__, - hST, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TEGetHeight(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - long endLine; - long startLine; -#ifndef TEGetHeight - PyMac_PRECHECK(TEGetHeight); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &endLine, - &startLine)) - return NULL; - _rv = TEGetHeight(endLine, - startLine, - _self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TEObj_TEContinuousStyle(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - short mode; - TextStyle aStyle; -#ifndef TEContinuousStyle - PyMac_PRECHECK(TEContinuousStyle); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &mode, - TextStyle_Convert, &aStyle)) - return NULL; - _rv = TEContinuousStyle(&mode, - &aStyle, - _self->ob_itself); - _res = Py_BuildValue("bhO&", - _rv, - mode, - TextStyle_New, &aStyle); - return _res; -} - -static PyObject *TEObj_TEUseStyleScrap(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long rangeStart; - long rangeEnd; - StScrpHandle newStyles; - Boolean fRedraw; -#ifndef TEUseStyleScrap - PyMac_PRECHECK(TEUseStyleScrap); -#endif - if (!PyArg_ParseTuple(_args, "llO&b", - &rangeStart, - &rangeEnd, - ResObj_Convert, &newStyles, - &fRedraw)) - return NULL; - TEUseStyleScrap(rangeStart, - rangeEnd, - newStyles, - fRedraw, - _self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_TENumStyles(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - long rangeStart; - long rangeEnd; -#ifndef TENumStyles - PyMac_PRECHECK(TENumStyles); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &rangeStart, - &rangeEnd)) - return NULL; - _rv = TENumStyles(rangeStart, - rangeEnd, - _self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TEObj_TEFeatureFlag(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - short feature; - short action; -#ifndef TEFeatureFlag - PyMac_PRECHECK(TEFeatureFlag); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &feature, - &action)) - return NULL; - _rv = TEFeatureFlag(feature, - action, - _self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *TEObj_TEGetHiliteRgn(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; - RgnHandle region; -#ifndef TEGetHiliteRgn - PyMac_PRECHECK(TEGetHiliteRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, ®ion)) - return NULL; - _err = TEGetHiliteRgn(region, - _self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TEObj_as_Resource(TEObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; -#ifndef as_Resource - PyMac_PRECHECK(as_Resource); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = as_Resource(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyMethodDef TEObj_methods[] = { - {"TESetText", (PyCFunction)TEObj_TESetText, 1, - PyDoc_STR("(Buffer text) -> None")}, - {"TEGetText", (PyCFunction)TEObj_TEGetText, 1, - PyDoc_STR("() -> (CharsHandle _rv)")}, - {"TEIdle", (PyCFunction)TEObj_TEIdle, 1, - PyDoc_STR("() -> None")}, - {"TESetSelect", (PyCFunction)TEObj_TESetSelect, 1, - PyDoc_STR("(long selStart, long selEnd) -> None")}, - {"TEActivate", (PyCFunction)TEObj_TEActivate, 1, - PyDoc_STR("() -> None")}, - {"TEDeactivate", (PyCFunction)TEObj_TEDeactivate, 1, - PyDoc_STR("() -> None")}, - {"TEKey", (PyCFunction)TEObj_TEKey, 1, - PyDoc_STR("(CharParameter key) -> None")}, - {"TECut", (PyCFunction)TEObj_TECut, 1, - PyDoc_STR("() -> None")}, - {"TECopy", (PyCFunction)TEObj_TECopy, 1, - PyDoc_STR("() -> None")}, - {"TEPaste", (PyCFunction)TEObj_TEPaste, 1, - PyDoc_STR("() -> None")}, - {"TEDelete", (PyCFunction)TEObj_TEDelete, 1, - PyDoc_STR("() -> None")}, - {"TEInsert", (PyCFunction)TEObj_TEInsert, 1, - PyDoc_STR("(Buffer text) -> None")}, - {"TESetAlignment", (PyCFunction)TEObj_TESetAlignment, 1, - PyDoc_STR("(short just) -> None")}, - {"TEUpdate", (PyCFunction)TEObj_TEUpdate, 1, - PyDoc_STR("(Rect rUpdate) -> None")}, - {"TEScroll", (PyCFunction)TEObj_TEScroll, 1, - PyDoc_STR("(short dh, short dv) -> None")}, - {"TESelView", (PyCFunction)TEObj_TESelView, 1, - PyDoc_STR("() -> None")}, - {"TEPinScroll", (PyCFunction)TEObj_TEPinScroll, 1, - PyDoc_STR("(short dh, short dv) -> None")}, - {"TEAutoView", (PyCFunction)TEObj_TEAutoView, 1, - PyDoc_STR("(Boolean fAuto) -> None")}, - {"TECalText", (PyCFunction)TEObj_TECalText, 1, - PyDoc_STR("() -> None")}, - {"TEGetOffset", (PyCFunction)TEObj_TEGetOffset, 1, - PyDoc_STR("(Point pt) -> (short _rv)")}, - {"TEGetPoint", (PyCFunction)TEObj_TEGetPoint, 1, - PyDoc_STR("(short offset) -> (Point _rv)")}, - {"TEClick", (PyCFunction)TEObj_TEClick, 1, - PyDoc_STR("(Point pt, Boolean fExtend) -> None")}, - {"TESetStyleHandle", (PyCFunction)TEObj_TESetStyleHandle, 1, - PyDoc_STR("(TEStyleHandle theHandle) -> None")}, - {"TEGetStyleHandle", (PyCFunction)TEObj_TEGetStyleHandle, 1, - PyDoc_STR("() -> (TEStyleHandle _rv)")}, - {"TEGetStyle", (PyCFunction)TEObj_TEGetStyle, 1, - PyDoc_STR("(short offset) -> (TextStyle theStyle, short lineHeight, short fontAscent)")}, - {"TEStylePaste", (PyCFunction)TEObj_TEStylePaste, 1, - PyDoc_STR("() -> None")}, - {"TESetStyle", (PyCFunction)TEObj_TESetStyle, 1, - PyDoc_STR("(short mode, TextStyle newStyle, Boolean fRedraw) -> None")}, - {"TEReplaceStyle", (PyCFunction)TEObj_TEReplaceStyle, 1, - PyDoc_STR("(short mode, TextStyle oldStyle, TextStyle newStyle, Boolean fRedraw) -> None")}, - {"TEGetStyleScrapHandle", (PyCFunction)TEObj_TEGetStyleScrapHandle, 1, - PyDoc_STR("() -> (StScrpHandle _rv)")}, - {"TEStyleInsert", (PyCFunction)TEObj_TEStyleInsert, 1, - PyDoc_STR("(Buffer text, StScrpHandle hST) -> None")}, - {"TEGetHeight", (PyCFunction)TEObj_TEGetHeight, 1, - PyDoc_STR("(long endLine, long startLine) -> (long _rv)")}, - {"TEContinuousStyle", (PyCFunction)TEObj_TEContinuousStyle, 1, - PyDoc_STR("(short mode, TextStyle aStyle) -> (Boolean _rv, short mode, TextStyle aStyle)")}, - {"TEUseStyleScrap", (PyCFunction)TEObj_TEUseStyleScrap, 1, - PyDoc_STR("(long rangeStart, long rangeEnd, StScrpHandle newStyles, Boolean fRedraw) -> None")}, - {"TENumStyles", (PyCFunction)TEObj_TENumStyles, 1, - PyDoc_STR("(long rangeStart, long rangeEnd) -> (long _rv)")}, - {"TEFeatureFlag", (PyCFunction)TEObj_TEFeatureFlag, 1, - PyDoc_STR("(short feature, short action) -> (short _rv)")}, - {"TEGetHiliteRgn", (PyCFunction)TEObj_TEGetHiliteRgn, 1, - PyDoc_STR("(RgnHandle region) -> None")}, - {"as_Resource", (PyCFunction)TEObj_as_Resource, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {NULL, NULL, 0} -}; - -static PyObject *TEObj_get_destRect(TEObject *self, void *closure) -{ - return Py_BuildValue("O&", PyMac_BuildRect, &(*self->ob_itself)->destRect); -} - -#define TEObj_set_destRect NULL - -static PyObject *TEObj_get_viewRect(TEObject *self, void *closure) -{ - return Py_BuildValue("O&", PyMac_BuildRect, &(*self->ob_itself)->viewRect); -} - -#define TEObj_set_viewRect NULL - -static PyObject *TEObj_get_selRect(TEObject *self, void *closure) -{ - return Py_BuildValue("O&", PyMac_BuildRect, &(*self->ob_itself)->selRect); -} - -#define TEObj_set_selRect NULL - -static PyObject *TEObj_get_lineHeight(TEObject *self, void *closure) -{ - return Py_BuildValue("h", (*self->ob_itself)->lineHeight); -} - -#define TEObj_set_lineHeight NULL - -static PyObject *TEObj_get_fontAscent(TEObject *self, void *closure) -{ - return Py_BuildValue("h", (*self->ob_itself)->fontAscent); -} - -#define TEObj_set_fontAscent NULL - -static PyObject *TEObj_get_selPoint(TEObject *self, void *closure) -{ - return Py_BuildValue("O&", PyMac_BuildPoint, (*self->ob_itself)->selPoint); -} - -#define TEObj_set_selPoint NULL - -static PyObject *TEObj_get_selStart(TEObject *self, void *closure) -{ - return Py_BuildValue("h", (*self->ob_itself)->selStart); -} - -#define TEObj_set_selStart NULL - -static PyObject *TEObj_get_selEnd(TEObject *self, void *closure) -{ - return Py_BuildValue("h", (*self->ob_itself)->selEnd); -} - -#define TEObj_set_selEnd NULL - -static PyObject *TEObj_get_active(TEObject *self, void *closure) -{ - return Py_BuildValue("h", (*self->ob_itself)->active); -} - -#define TEObj_set_active NULL - -static PyObject *TEObj_get_just(TEObject *self, void *closure) -{ - return Py_BuildValue("h", (*self->ob_itself)->just); -} - -#define TEObj_set_just NULL - -static PyObject *TEObj_get_teLength(TEObject *self, void *closure) -{ - return Py_BuildValue("h", (*self->ob_itself)->teLength); -} - -#define TEObj_set_teLength NULL - -static PyObject *TEObj_get_txFont(TEObject *self, void *closure) -{ - return Py_BuildValue("h", (*self->ob_itself)->txFont); -} - -#define TEObj_set_txFont NULL - -static PyObject *TEObj_get_txFace(TEObject *self, void *closure) -{ - return Py_BuildValue("h", (*self->ob_itself)->txFace); -} - -#define TEObj_set_txFace NULL - -static PyObject *TEObj_get_txMode(TEObject *self, void *closure) -{ - return Py_BuildValue("h", (*self->ob_itself)->txMode); -} - -#define TEObj_set_txMode NULL - -static PyObject *TEObj_get_txSize(TEObject *self, void *closure) -{ - return Py_BuildValue("h", (*self->ob_itself)->txSize); -} - -#define TEObj_set_txSize NULL - -static PyObject *TEObj_get_nLines(TEObject *self, void *closure) -{ - return Py_BuildValue("h", (*self->ob_itself)->nLines); -} - -#define TEObj_set_nLines NULL - -static PyGetSetDef TEObj_getsetlist[] = { - {"destRect", (getter)TEObj_get_destRect, (setter)TEObj_set_destRect, "Destination rectangle"}, - {"viewRect", (getter)TEObj_get_viewRect, (setter)TEObj_set_viewRect, "Viewing rectangle"}, - {"selRect", (getter)TEObj_get_selRect, (setter)TEObj_set_selRect, "Selection rectangle"}, - {"lineHeight", (getter)TEObj_get_lineHeight, (setter)TEObj_set_lineHeight, "Height of a line"}, - {"fontAscent", (getter)TEObj_get_fontAscent, (setter)TEObj_set_fontAscent, "Ascent of a line"}, - {"selPoint", (getter)TEObj_get_selPoint, (setter)TEObj_set_selPoint, "Selection Point"}, - {"selStart", (getter)TEObj_get_selStart, (setter)TEObj_set_selStart, "Start of selection"}, - {"selEnd", (getter)TEObj_get_selEnd, (setter)TEObj_set_selEnd, "End of selection"}, - {"active", (getter)TEObj_get_active, (setter)TEObj_set_active, "TBD"}, - {"just", (getter)TEObj_get_just, (setter)TEObj_set_just, "Justification"}, - {"teLength", (getter)TEObj_get_teLength, (setter)TEObj_set_teLength, "TBD"}, - {"txFont", (getter)TEObj_get_txFont, (setter)TEObj_set_txFont, "Current font"}, - {"txFace", (getter)TEObj_get_txFace, (setter)TEObj_set_txFace, "Current font variant"}, - {"txMode", (getter)TEObj_get_txMode, (setter)TEObj_set_txMode, "Current text-drawing mode"}, - {"txSize", (getter)TEObj_get_txSize, (setter)TEObj_set_txSize, "Current font size"}, - {"nLines", (getter)TEObj_get_nLines, (setter)TEObj_set_nLines, "TBD"}, - {NULL, NULL, NULL, NULL}, -}; - - -#define TEObj_compare NULL - -#define TEObj_repr NULL - -#define TEObj_hash NULL -#define TEObj_tp_init 0 - -#define TEObj_tp_alloc PyType_GenericAlloc - -static PyObject *TEObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - TEHandle itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, TEObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((TEObject *)_self)->ob_itself = itself; - return _self; -} - -#define TEObj_tp_free PyObject_Del - - -PyTypeObject TE_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_TE.TE", /*tp_name*/ - sizeof(TEObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) TEObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) TEObj_compare, /*tp_compare*/ - (reprfunc) TEObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) TEObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - TEObj_methods, /* tp_methods */ - 0, /*tp_members*/ - TEObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - TEObj_tp_init, /* tp_init */ - TEObj_tp_alloc, /* tp_alloc */ - TEObj_tp_new, /* tp_new */ - TEObj_tp_free, /* tp_free */ -}; - -/* ----------------------- End object type TE ----------------------- */ - - -static PyObject *TE_TEScrapHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; -#ifndef TEScrapHandle - PyMac_PRECHECK(TEScrapHandle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TEScrapHandle(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *TE_TEGetScrapLength(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef TEGetScrapLength - PyMac_PRECHECK(TEGetScrapLength); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TEGetScrapLength(); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *TE_TENew(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TEHandle _rv; - Rect destRect; - Rect viewRect; -#ifndef TENew - PyMac_PRECHECK(TENew); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &destRect, - PyMac_GetRect, &viewRect)) - return NULL; - _rv = TENew(&destRect, - &viewRect); - _res = Py_BuildValue("O&", - TEObj_New, _rv); - return _res; -} - -static PyObject *TE_TETextBox(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - char *text__in__; - long text__len__; - int text__in_len__; - Rect box; - short just; -#ifndef TETextBox - PyMac_PRECHECK(TETextBox); -#endif - if (!PyArg_ParseTuple(_args, "s#O&h", - &text__in__, &text__in_len__, - PyMac_GetRect, &box, - &just)) - return NULL; - text__len__ = text__in_len__; - TETextBox(text__in__, text__len__, - &box, - just); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TE_TEStyleNew(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TEHandle _rv; - Rect destRect; - Rect viewRect; -#ifndef TEStyleNew - PyMac_PRECHECK(TEStyleNew); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &destRect, - PyMac_GetRect, &viewRect)) - return NULL; - _rv = TEStyleNew(&destRect, - &viewRect); - _res = Py_BuildValue("O&", - TEObj_New, _rv); - return _res; -} - -static PyObject *TE_TESetScrapLength(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long length; -#ifndef TESetScrapLength - PyMac_PRECHECK(TESetScrapLength); -#endif - if (!PyArg_ParseTuple(_args, "l", - &length)) - return NULL; - TESetScrapLength(length); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TE_TEFromScrap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef TEFromScrap - PyMac_PRECHECK(TEFromScrap); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TEFromScrap(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TE_TEToScrap(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSErr _err; -#ifndef TEToScrap - PyMac_PRECHECK(TEToScrap); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = TEToScrap(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TE_TEGetScrapHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle _rv; -#ifndef TEGetScrapHandle - PyMac_PRECHECK(TEGetScrapHandle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = TEGetScrapHandle(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *TE_TESetScrapHandle(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Handle value; -#ifndef TESetScrapHandle - PyMac_PRECHECK(TESetScrapHandle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &value)) - return NULL; - TESetScrapHandle(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TE_LMGetWordRedraw(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt8 _rv; -#ifndef LMGetWordRedraw - PyMac_PRECHECK(LMGetWordRedraw); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = LMGetWordRedraw(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *TE_LMSetWordRedraw(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - UInt8 value; -#ifndef LMSetWordRedraw - PyMac_PRECHECK(LMSetWordRedraw); -#endif - if (!PyArg_ParseTuple(_args, "b", - &value)) - return NULL; - LMSetWordRedraw(value); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *TE_as_TE(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - TEHandle _rv; - Handle h; -#ifndef as_TE - PyMac_PRECHECK(as_TE); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &h)) - return NULL; - _rv = as_TE(h); - _res = Py_BuildValue("O&", - TEObj_New, _rv); - return _res; -} -#endif /* __LP64__ */ - -static PyMethodDef TE_methods[] = { -#ifndef __LP64__ - {"TEScrapHandle", (PyCFunction)TE_TEScrapHandle, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {"TEGetScrapLength", (PyCFunction)TE_TEGetScrapLength, 1, - PyDoc_STR("() -> (long _rv)")}, - {"TENew", (PyCFunction)TE_TENew, 1, - PyDoc_STR("(Rect destRect, Rect viewRect) -> (TEHandle _rv)")}, - {"TETextBox", (PyCFunction)TE_TETextBox, 1, - PyDoc_STR("(Buffer text, Rect box, short just) -> None")}, - {"TEStyleNew", (PyCFunction)TE_TEStyleNew, 1, - PyDoc_STR("(Rect destRect, Rect viewRect) -> (TEHandle _rv)")}, - {"TESetScrapLength", (PyCFunction)TE_TESetScrapLength, 1, - PyDoc_STR("(long length) -> None")}, - {"TEFromScrap", (PyCFunction)TE_TEFromScrap, 1, - PyDoc_STR("() -> None")}, - {"TEToScrap", (PyCFunction)TE_TEToScrap, 1, - PyDoc_STR("() -> None")}, - {"TEGetScrapHandle", (PyCFunction)TE_TEGetScrapHandle, 1, - PyDoc_STR("() -> (Handle _rv)")}, - {"TESetScrapHandle", (PyCFunction)TE_TESetScrapHandle, 1, - PyDoc_STR("(Handle value) -> None")}, - {"LMGetWordRedraw", (PyCFunction)TE_LMGetWordRedraw, 1, - PyDoc_STR("() -> (UInt8 _rv)")}, - {"LMSetWordRedraw", (PyCFunction)TE_LMSetWordRedraw, 1, - PyDoc_STR("(UInt8 value) -> None")}, - {"as_TE", (PyCFunction)TE_as_TE, 1, - PyDoc_STR("(Handle h) -> (TEHandle _rv)")}, -#endif /* __LP64__ */ - {NULL, NULL, 0} -}; - - - - -void init_TE(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; - - - - PyMac_INIT_TOOLBOX_OBJECT_NEW(TEHandle, TEObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TEHandle, TEObj_Convert); - -#endif /* __LP64__ */ - - m = Py_InitModule("_TE", TE_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - TE_Error = PyMac_GetOSErrException(); - if (TE_Error == NULL || - PyDict_SetItemString(d, "Error", TE_Error) != 0) - return; - TE_Type.ob_type = &PyType_Type; - if (PyType_Ready(&TE_Type) < 0) return; - Py_INCREF(&TE_Type); - PyModule_AddObject(m, "TE", (PyObject *)&TE_Type); - /* Backward-compatible name */ - Py_INCREF(&TE_Type); - PyModule_AddObject(m, "TEType", (PyObject *)&TE_Type); -#endif /* __LP64__ */ -} - -/* ========================= End module _TE ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/te/tescan.py b/project/jni/python/src/Mac/Modules/te/tescan.py deleted file mode 100644 index 6cd25f466..000000000 --- a/project/jni/python/src/Mac/Modules/te/tescan.py +++ /dev/null @@ -1,66 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. - -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) -from scantools import Scanner - -LONG = "TextEdit" -SHORT = "te" -OBJECT = "TEHandle" - -def main(): - input = LONG + ".h" - output = SHORT + "gen.py" - defsoutput = TOOLBOXDIR + LONG + ".py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - exec "import " + SHORT + "support" - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[-1] - # This is non-functional today - if t == OBJECT and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def makeblacklistnames(self): - return [ - "TEDispose", - "TEInit", -## "TEGetHiliteRgn", - ] - - def makeblacklisttypes(self): - return [ - "TEClickLoopUPP", - "UniversalProcPtr", - "WordBreakUPP", - "TEDoTextUPP", - "TERecalcUPP", - "TEFindWordUPP", - ] - - def makerepairinstructions(self): - return [ - ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")], - [("InBuffer", "*", "*")]), - - # TEContinuousStyle - ([("short", "mode", "OutMode"), ("TextStyle", "aStyle", "OutMode")], - [("short", "mode", "InOutMode"), ("TextStyle", "aStyle", "InOutMode")]) - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/te/tesupport.py b/project/jni/python/src/Mac/Modules/te/tesupport.py deleted file mode 100644 index ad6c053a4..000000000 --- a/project/jni/python/src/Mac/Modules/te/tesupport.py +++ /dev/null @@ -1,216 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'TextEdit.h' # The Apple header file -MODNAME = '_TE' # The name of the module -OBJECTNAME = 'TE' # The basic name of the objects used here -KIND = 'Handle' # Usually 'Ptr' or 'Handle' - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'TE' # The prefix for module-wide routines -OBJECTTYPE = "TEHandle" # The C type used to represent them -OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects -TEHandle = OpaqueByValueType("TEHandle", "TEObj") -CharsHandle = OpaqueByValueType("CharsHandle", "ResObj") -Handle = OpaqueByValueType("Handle", "ResObj") -StScrpHandle = OpaqueByValueType("StScrpHandle", "ResObj") -TEStyleHandle = OpaqueByValueType("TEStyleHandle", "ResObj") -RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") - -TextStyle = OpaqueType("TextStyle", "TextStyle") -TextStyle_ptr = TextStyle - -includestuff = includestuff + """ -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_TEObj_New(TEHandle); -extern int _TEObj_Convert(PyObject *, TEHandle *); - -#define TEObj_New _TEObj_New -#define TEObj_Convert _TEObj_Convert -#endif - -#define as_TE(h) ((TEHandle)h) -#define as_Resource(teh) ((Handle)teh) - -/* -** Parse/generate TextStyle records -*/ -static PyObject * -TextStyle_New(TextStylePtr itself) -{ - - return Py_BuildValue("lllO&", (long)itself->tsFont, (long)itself->tsFace, (long)itself->tsSize, QdRGB_New, - &itself->tsColor); -} - -static int -TextStyle_Convert(PyObject *v, TextStylePtr p_itself) -{ - long font, face, size; - - if( !PyArg_ParseTuple(v, "lllO&", &font, &face, &size, QdRGB_Convert, &p_itself->tsColor) ) - return 0; - p_itself->tsFont = (short)font; - p_itself->tsFace = (Style)face; - p_itself->tsSize = (short)size; - return 1; -} -""" - -initstuff = initstuff + """ - PyMac_INIT_TOOLBOX_OBJECT_NEW(TEHandle, TEObj_New); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TEHandle, TEObj_Convert); -""" - -class TEMethodGenerator(OSErrWeakLinkMethodGenerator): - """Similar to MethodGenerator, but has self as last argument""" - - def parseArgumentList(self, args): - args, a0 = args[:-1], args[-1] - t0, n0, m0 = a0 - if m0 != InMode: - raise ValueError, "method's 'self' must be 'InMode'" - self.itself = Variable(t0, "_self->ob_itself", SelfMode) - FunctionGenerator.parseArgumentList(self, args) - self.argumentList.append(self.itself) - - - -class MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - # XXXX Could be subtype of Resource - # Attributes that can be set. - getsetlist = [ - ( - 'destRect', - 'return Py_BuildValue("O&", PyMac_BuildRect, &(*self->ob_itself)->destRect);', - None, - 'Destination rectangle' - ), ( - 'viewRect', - 'return Py_BuildValue("O&", PyMac_BuildRect, &(*self->ob_itself)->viewRect);', - None, - 'Viewing rectangle' - ), ( - 'selRect', - 'return Py_BuildValue("O&", PyMac_BuildRect, &(*self->ob_itself)->selRect);', - None, - 'Selection rectangle' - ), ( - 'lineHeight', - 'return Py_BuildValue("h", (*self->ob_itself)->lineHeight);', - None, - 'Height of a line' - ), ( - 'fontAscent', - 'return Py_BuildValue("h", (*self->ob_itself)->fontAscent);', - None, - 'Ascent of a line' - ), ( - "selPoint", - 'return Py_BuildValue("O&", PyMac_BuildPoint, (*self->ob_itself)->selPoint);', - None, - 'Selection Point' - ), ( - 'selStart', - 'return Py_BuildValue("h", (*self->ob_itself)->selStart);', - None, - 'Start of selection' - ), ( - 'selEnd', - 'return Py_BuildValue("h", (*self->ob_itself)->selEnd);', - None, - 'End of selection' - ), ( - 'active', - 'return Py_BuildValue("h", (*self->ob_itself)->active);', - None, - 'TBD' - ), ( - 'just', - 'return Py_BuildValue("h", (*self->ob_itself)->just);', - None, - 'Justification' - ), ( - 'teLength', - 'return Py_BuildValue("h", (*self->ob_itself)->teLength);', - None, - 'TBD' - ), ( - 'txFont', - 'return Py_BuildValue("h", (*self->ob_itself)->txFont);', - None, - 'Current font' - ), ( - 'txFace', - 'return Py_BuildValue("h", (*self->ob_itself)->txFace);', - None, - 'Current font variant' - ), ( - 'txMode', - 'return Py_BuildValue("h", (*self->ob_itself)->txMode);', - None, - 'Current text-drawing mode' - ), ( - 'txSize', - 'return Py_BuildValue("h", (*self->ob_itself)->txSize);', - None, - 'Current font size' - ), ( - 'nLines', - 'return Py_BuildValue("h", (*self->ob_itself)->nLines);', - None, - 'TBD' - )] - - def outputCheckNewArg(self): - Output("""if (itself == NULL) { - PyErr_SetString(TE_Error,"Cannot create null TE"); - return NULL; - }""") - def outputFreeIt(self, itselfname): - Output("TEDispose(%s);", itselfname) - - -# From here on it's basically all boiler plate... - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE) -module.addobject(object) - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -Method = TEMethodGenerator - -# Create and populate the lists -functions = [] -methods = [] -execfile(INPUTFILE) - -# Converter from/to handle -f = Function(TEHandle, 'as_TE', (Handle, 'h', InMode)) -functions.append(f) -f = Method(Handle, 'as_Resource', (TEHandle, 'teh', InMode)) -methods.append(f) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -for f in methods: object.add(f) - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/Modules/win/_Winmodule.c b/project/jni/python/src/Mac/Modules/win/_Winmodule.c deleted file mode 100644 index 87f7591ed..000000000 --- a/project/jni/python/src/Mac/Modules/win/_Winmodule.c +++ /dev/null @@ -1,3265 +0,0 @@ - -/* ========================== Module _Win =========================== */ - -#include "Python.h" - -#ifndef __LP64__ - -#include "pymactoolbox.h" - -/* Macro to test whether a weak-loaded CFM function exists */ -#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ - PyErr_SetString(PyExc_NotImplementedError, \ - "Not available in this shared library/OS version"); \ - return NULL; \ - }} while(0) - - -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_WinObj_New(WindowRef); -extern PyObject *_WinObj_WhichWindow(WindowRef); -extern int _WinObj_Convert(PyObject *, WindowRef *); - -#define WinObj_New _WinObj_New -#define WinObj_WhichWindow _WinObj_WhichWindow -#define WinObj_Convert _WinObj_Convert -#endif - -/* Classic calls that we emulate in carbon mode */ -#define GetWindowUpdateRgn(win, rgn) GetWindowRegion((win), kWindowUpdateRgn, (rgn)) -#define GetWindowStructureRgn(win, rgn) GetWindowRegion((win), kWindowStructureRgn, (rgn)) -#define GetWindowContentRgn(win, rgn) GetWindowRegion((win), kWindowContentRgn, (rgn)) - -/* Function to dispose a window, with a "normal" calling sequence */ -static void -PyMac_AutoDisposeWindow(WindowPtr w) -{ - DisposeWindow(w); -} - -static PyObject *Win_Error; - -/* ----------------------- Object type Window ----------------------- */ - -PyTypeObject Window_Type; - -#define WinObj_Check(x) ((x)->ob_type == &Window_Type || PyObject_TypeCheck((x), &Window_Type)) - -typedef struct WindowObject { - PyObject_HEAD - WindowPtr ob_itself; - void (*ob_freeit)(WindowPtr ptr); -} WindowObject; - -PyObject *WinObj_New(WindowPtr itself) -{ - WindowObject *it; - if (itself == NULL) return PyMac_Error(resNotFound); - /* XXXX Or should we use WhichWindow code here? */ - it = PyObject_NEW(WindowObject, &Window_Type); - if (it == NULL) return NULL; - it->ob_itself = itself; - it->ob_freeit = NULL; - if (GetWRefCon(itself) == 0) - { - SetWRefCon(itself, (long)it); - it->ob_freeit = PyMac_AutoDisposeWindow; - } - return (PyObject *)it; -} - -int WinObj_Convert(PyObject *v, WindowPtr *p_itself) -{ - - if (v == Py_None) { *p_itself = NULL; return 1; } - if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; } - - { - DialogRef dlg; - if (DlgObj_Convert(v, &dlg) && dlg) { - *p_itself = GetDialogWindow(dlg); - return 1; - } - PyErr_Clear(); - } - if (!WinObj_Check(v)) - { - PyErr_SetString(PyExc_TypeError, "Window required"); - return 0; - } - *p_itself = ((WindowObject *)v)->ob_itself; - return 1; -} - -static void WinObj_dealloc(WindowObject *self) -{ - if (self->ob_freeit && self->ob_itself) - { - SetWRefCon(self->ob_itself, 0); - self->ob_freeit(self->ob_itself); - } - self->ob_itself = NULL; - self->ob_freeit = NULL; - self->ob_type->tp_free((PyObject *)self); -} - -static PyObject *WinObj_GetWindowOwnerCount(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 outCount; -#ifndef GetWindowOwnerCount - PyMac_PRECHECK(GetWindowOwnerCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetWindowOwnerCount(_self->ob_itself, - &outCount); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outCount); - return _res; -} - -static PyObject *WinObj_CloneWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef CloneWindow - PyMac_PRECHECK(CloneWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = CloneWindow(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowRetainCount(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - ItemCount _rv; -#ifndef GetWindowRetainCount - PyMac_PRECHECK(GetWindowRetainCount); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetWindowRetainCount(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *WinObj_RetainWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef RetainWindow - PyMac_PRECHECK(RetainWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = RetainWindow(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_ReleaseWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef ReleaseWindow - PyMac_PRECHECK(ReleaseWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = ReleaseWindow(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_ReshapeCustomWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef ReshapeCustomWindow - PyMac_PRECHECK(ReshapeCustomWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = ReshapeCustomWindow(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowWidgetHilite(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowDefPartCode outHilite; -#ifndef GetWindowWidgetHilite - PyMac_PRECHECK(GetWindowWidgetHilite); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetWindowWidgetHilite(_self->ob_itself, - &outHilite); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("h", - outHilite); - return _res; -} - -static PyObject *WinObj_GetWindowClass(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowClass outClass; -#ifndef GetWindowClass - PyMac_PRECHECK(GetWindowClass); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetWindowClass(_self->ob_itself, - &outClass); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outClass); - return _res; -} - -static PyObject *WinObj_GetWindowAttributes(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowAttributes outAttributes; -#ifndef GetWindowAttributes - PyMac_PRECHECK(GetWindowAttributes); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetWindowAttributes(_self->ob_itself, - &outAttributes); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outAttributes); - return _res; -} - -static PyObject *WinObj_ChangeWindowAttributes(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowAttributes setTheseAttributes; - WindowAttributes clearTheseAttributes; -#ifndef ChangeWindowAttributes - PyMac_PRECHECK(ChangeWindowAttributes); -#endif - if (!PyArg_ParseTuple(_args, "ll", - &setTheseAttributes, - &clearTheseAttributes)) - return NULL; - _err = ChangeWindowAttributes(_self->ob_itself, - setTheseAttributes, - clearTheseAttributes); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_SetWindowClass(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowClass inWindowClass; -#ifndef SetWindowClass - PyMac_PRECHECK(SetWindowClass); -#endif - if (!PyArg_ParseTuple(_args, "l", - &inWindowClass)) - return NULL; - _err = SetWindowClass(_self->ob_itself, - inWindowClass); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_SetWindowModality(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowModality inModalKind; - WindowPtr inUnavailableWindow; -#ifndef SetWindowModality - PyMac_PRECHECK(SetWindowModality); -#endif - if (!PyArg_ParseTuple(_args, "lO&", - &inModalKind, - WinObj_Convert, &inUnavailableWindow)) - return NULL; - _err = SetWindowModality(_self->ob_itself, - inModalKind, - inUnavailableWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowModality(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowModality outModalKind; - WindowPtr outUnavailableWindow; -#ifndef GetWindowModality - PyMac_PRECHECK(GetWindowModality); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetWindowModality(_self->ob_itself, - &outModalKind, - &outUnavailableWindow); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("lO&", - outModalKind, - WinObj_WhichWindow, outUnavailableWindow); - return _res; -} - -static PyObject *WinObj_SetWindowContentColor(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - RGBColor color; -#ifndef SetWindowContentColor - PyMac_PRECHECK(SetWindowContentColor); -#endif - if (!PyArg_ParseTuple(_args, "O&", - QdRGB_Convert, &color)) - return NULL; - _err = SetWindowContentColor(_self->ob_itself, - &color); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowContentColor(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - RGBColor color; -#ifndef GetWindowContentColor - PyMac_PRECHECK(GetWindowContentColor); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetWindowContentColor(_self->ob_itself, - &color); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - QdRGB_New, &color); - return _res; -} - -static PyObject *WinObj_GetWindowContentPattern(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - PixPatHandle outPixPat; -#ifndef GetWindowContentPattern - PyMac_PRECHECK(GetWindowContentPattern); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &outPixPat)) - return NULL; - _err = GetWindowContentPattern(_self->ob_itself, - outPixPat); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_SetWindowContentPattern(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - PixPatHandle pixPat; -#ifndef SetWindowContentPattern - PyMac_PRECHECK(SetWindowContentPattern); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pixPat)) - return NULL; - _err = SetWindowContentPattern(_self->ob_itself, - pixPat); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_ScrollWindowRect(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inScrollRect; - SInt16 inHPixels; - SInt16 inVPixels; - ScrollWindowOptions inOptions; - RgnHandle outExposedRgn; -#ifndef ScrollWindowRect - PyMac_PRECHECK(ScrollWindowRect); -#endif - if (!PyArg_ParseTuple(_args, "O&hhlO&", - PyMac_GetRect, &inScrollRect, - &inHPixels, - &inVPixels, - &inOptions, - ResObj_Convert, &outExposedRgn)) - return NULL; - _err = ScrollWindowRect(_self->ob_itself, - &inScrollRect, - inHPixels, - inVPixels, - inOptions, - outExposedRgn); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_ScrollWindowRegion(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - RgnHandle inScrollRgn; - SInt16 inHPixels; - SInt16 inVPixels; - ScrollWindowOptions inOptions; - RgnHandle outExposedRgn; -#ifndef ScrollWindowRegion - PyMac_PRECHECK(ScrollWindowRegion); -#endif - if (!PyArg_ParseTuple(_args, "O&hhlO&", - ResObj_Convert, &inScrollRgn, - &inHPixels, - &inVPixels, - &inOptions, - ResObj_Convert, &outExposedRgn)) - return NULL; - _err = ScrollWindowRegion(_self->ob_itself, - inScrollRgn, - inHPixels, - inVPixels, - inOptions, - outExposedRgn); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_ClipAbove(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ClipAbove - PyMac_PRECHECK(ClipAbove); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ClipAbove(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_PaintOne(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle clobberedRgn; -#ifndef PaintOne - PyMac_PRECHECK(PaintOne); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &clobberedRgn)) - return NULL; - PaintOne(_self->ob_itself, - clobberedRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_PaintBehind(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle clobberedRgn; -#ifndef PaintBehind - PyMac_PRECHECK(PaintBehind); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &clobberedRgn)) - return NULL; - PaintBehind(_self->ob_itself, - clobberedRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_CalcVis(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef CalcVis - PyMac_PRECHECK(CalcVis); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - CalcVis(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_CalcVisBehind(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle clobberedRgn; -#ifndef CalcVisBehind - PyMac_PRECHECK(CalcVisBehind); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &clobberedRgn)) - return NULL; - CalcVisBehind(_self->ob_itself, - clobberedRgn); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_BringToFront(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef BringToFront - PyMac_PRECHECK(BringToFront); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - BringToFront(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_SendBehind(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr behindWindow; -#ifndef SendBehind - PyMac_PRECHECK(SendBehind); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &behindWindow)) - return NULL; - SendBehind(_self->ob_itself, - behindWindow); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_SelectWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef SelectWindow - PyMac_PRECHECK(SelectWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - SelectWindow(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetNextWindowOfClass(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; - WindowClass inWindowClass; - Boolean mustBeVisible; -#ifndef GetNextWindowOfClass - PyMac_PRECHECK(GetNextWindowOfClass); -#endif - if (!PyArg_ParseTuple(_args, "lb", - &inWindowClass, - &mustBeVisible)) - return NULL; - _rv = GetNextWindowOfClass(_self->ob_itself, - inWindowClass, - mustBeVisible); - _res = Py_BuildValue("O&", - WinObj_New, _rv); - return _res; -} - -static PyObject *WinObj_SetWindowAlternateTitle(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef inTitle; -#ifndef SetWindowAlternateTitle - PyMac_PRECHECK(SetWindowAlternateTitle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &inTitle)) - return NULL; - _err = SetWindowAlternateTitle(_self->ob_itself, - inTitle); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_CopyWindowAlternateTitle(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef outTitle; -#ifndef CopyWindowAlternateTitle - PyMac_PRECHECK(CopyWindowAlternateTitle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = CopyWindowAlternateTitle(_self->ob_itself, - &outTitle); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CFStringRefObj_New, outTitle); - return _res; -} - -static PyObject *WinObj_HiliteWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean fHilite; -#ifndef HiliteWindow - PyMac_PRECHECK(HiliteWindow); -#endif - if (!PyArg_ParseTuple(_args, "b", - &fHilite)) - return NULL; - HiliteWindow(_self->ob_itself, - fHilite); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_SetWRefCon(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long data; -#ifndef SetWRefCon - PyMac_PRECHECK(SetWRefCon); -#endif - if (!PyArg_ParseTuple(_args, "l", - &data)) - return NULL; - SetWRefCon(_self->ob_itself, - data); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWRefCon(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; -#ifndef GetWRefCon - PyMac_PRECHECK(GetWRefCon); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetWRefCon(_self->ob_itself); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *WinObj_SetWindowPic(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PicHandle pic; -#ifndef SetWindowPic - PyMac_PRECHECK(SetWindowPic); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &pic)) - return NULL; - SetWindowPic(_self->ob_itself, - pic); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowPic(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - PicHandle _rv; -#ifndef GetWindowPic - PyMac_PRECHECK(GetWindowPic); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetWindowPic(_self->ob_itself); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *WinObj_GetWVariant(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetWVariant - PyMac_PRECHECK(GetWVariant); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetWVariant(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *WinObj_GetWindowFeatures(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - UInt32 outFeatures; -#ifndef GetWindowFeatures - PyMac_PRECHECK(GetWindowFeatures); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetWindowFeatures(_self->ob_itself, - &outFeatures); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outFeatures); - return _res; -} - -static PyObject *WinObj_GetWindowRegion(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowRegionCode inRegionCode; - RgnHandle ioWinRgn; -#ifndef GetWindowRegion - PyMac_PRECHECK(GetWindowRegion); -#endif - if (!PyArg_ParseTuple(_args, "HO&", - &inRegionCode, - ResObj_Convert, &ioWinRgn)) - return NULL; - _err = GetWindowRegion(_self->ob_itself, - inRegionCode, - ioWinRgn); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowStructureWidths(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect outRect; -#ifndef GetWindowStructureWidths - PyMac_PRECHECK(GetWindowStructureWidths); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetWindowStructureWidths(_self->ob_itself, - &outRect); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &outRect); - return _res; -} - -static PyObject *WinObj_BeginUpdate(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef BeginUpdate - PyMac_PRECHECK(BeginUpdate); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - BeginUpdate(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_EndUpdate(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef EndUpdate - PyMac_PRECHECK(EndUpdate); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - EndUpdate(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_InvalWindowRgn(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - RgnHandle region; -#ifndef InvalWindowRgn - PyMac_PRECHECK(InvalWindowRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, ®ion)) - return NULL; - _err = InvalWindowRgn(_self->ob_itself, - region); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_InvalWindowRect(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect bounds; -#ifndef InvalWindowRect - PyMac_PRECHECK(InvalWindowRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &bounds)) - return NULL; - _err = InvalWindowRect(_self->ob_itself, - &bounds); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_ValidWindowRgn(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - RgnHandle region; -#ifndef ValidWindowRgn - PyMac_PRECHECK(ValidWindowRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, ®ion)) - return NULL; - _err = ValidWindowRgn(_self->ob_itself, - region); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_ValidWindowRect(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect bounds; -#ifndef ValidWindowRect - PyMac_PRECHECK(ValidWindowRect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &bounds)) - return NULL; - _err = ValidWindowRect(_self->ob_itself, - &bounds); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_DrawGrowIcon(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef DrawGrowIcon - PyMac_PRECHECK(DrawGrowIcon); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - DrawGrowIcon(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_SetWTitle(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Str255 title; -#ifndef SetWTitle - PyMac_PRECHECK(SetWTitle); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetStr255, title)) - return NULL; - SetWTitle(_self->ob_itself, - title); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWTitle(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Str255 title; -#ifndef GetWTitle - PyMac_PRECHECK(GetWTitle); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetWTitle(_self->ob_itself, - title); - _res = Py_BuildValue("O&", - PyMac_BuildStr255, title); - return _res; -} - -static PyObject *WinObj_SetWindowTitleWithCFString(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef inString; -#ifndef SetWindowTitleWithCFString - PyMac_PRECHECK(SetWindowTitleWithCFString); -#endif - if (!PyArg_ParseTuple(_args, "O&", - CFStringRefObj_Convert, &inString)) - return NULL; - _err = SetWindowTitleWithCFString(_self->ob_itself, - inString); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_CopyWindowTitleAsCFString(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - CFStringRef outString; -#ifndef CopyWindowTitleAsCFString - PyMac_PRECHECK(CopyWindowTitleAsCFString); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = CopyWindowTitleAsCFString(_self->ob_itself, - &outString); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - CFStringRefObj_New, outString); - return _res; -} - -static PyObject *WinObj_SetWindowProxyFSSpec(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FSSpec inFile; -#ifndef SetWindowProxyFSSpec - PyMac_PRECHECK(SetWindowProxyFSSpec); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetFSSpec, &inFile)) - return NULL; - _err = SetWindowProxyFSSpec(_self->ob_itself, - &inFile); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowProxyFSSpec(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - FSSpec outFile; -#ifndef GetWindowProxyFSSpec - PyMac_PRECHECK(GetWindowProxyFSSpec); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetWindowProxyFSSpec(_self->ob_itself, - &outFile); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildFSSpec, &outFile); - return _res; -} - -static PyObject *WinObj_SetWindowProxyAlias(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - AliasHandle inAlias; -#ifndef SetWindowProxyAlias - PyMac_PRECHECK(SetWindowProxyAlias); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &inAlias)) - return NULL; - _err = SetWindowProxyAlias(_self->ob_itself, - inAlias); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowProxyAlias(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - AliasHandle alias; -#ifndef GetWindowProxyAlias - PyMac_PRECHECK(GetWindowProxyAlias); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetWindowProxyAlias(_self->ob_itself, - &alias); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, alias); - return _res; -} - -static PyObject *WinObj_SetWindowProxyCreatorAndType(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType fileCreator; - OSType fileType; - SInt16 vRefNum; -#ifndef SetWindowProxyCreatorAndType - PyMac_PRECHECK(SetWindowProxyCreatorAndType); -#endif - if (!PyArg_ParseTuple(_args, "O&O&h", - PyMac_GetOSType, &fileCreator, - PyMac_GetOSType, &fileType, - &vRefNum)) - return NULL; - _err = SetWindowProxyCreatorAndType(_self->ob_itself, - fileCreator, - fileType, - vRefNum); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowProxyIcon(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - IconRef outIcon; -#ifndef GetWindowProxyIcon - PyMac_PRECHECK(GetWindowProxyIcon); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetWindowProxyIcon(_self->ob_itself, - &outIcon); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - ResObj_New, outIcon); - return _res; -} - -static PyObject *WinObj_SetWindowProxyIcon(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - IconRef icon; -#ifndef SetWindowProxyIcon - PyMac_PRECHECK(SetWindowProxyIcon); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &icon)) - return NULL; - _err = SetWindowProxyIcon(_self->ob_itself, - icon); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_RemoveWindowProxy(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef RemoveWindowProxy - PyMac_PRECHECK(RemoveWindowProxy); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = RemoveWindowProxy(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_BeginWindowProxyDrag(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - DragReference outNewDrag; - RgnHandle outDragOutlineRgn; -#ifndef BeginWindowProxyDrag - PyMac_PRECHECK(BeginWindowProxyDrag); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &outDragOutlineRgn)) - return NULL; - _err = BeginWindowProxyDrag(_self->ob_itself, - &outNewDrag, - outDragOutlineRgn); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - DragObj_New, outNewDrag); - return _res; -} - -static PyObject *WinObj_EndWindowProxyDrag(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - DragReference theDrag; -#ifndef EndWindowProxyDrag - PyMac_PRECHECK(EndWindowProxyDrag); -#endif - if (!PyArg_ParseTuple(_args, "O&", - DragObj_Convert, &theDrag)) - return NULL; - _err = EndWindowProxyDrag(_self->ob_itself, - theDrag); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_TrackWindowProxyFromExistingDrag(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Point startPt; - DragReference drag; - RgnHandle inDragOutlineRgn; -#ifndef TrackWindowProxyFromExistingDrag - PyMac_PRECHECK(TrackWindowProxyFromExistingDrag); -#endif - if (!PyArg_ParseTuple(_args, "O&O&O&", - PyMac_GetPoint, &startPt, - DragObj_Convert, &drag, - ResObj_Convert, &inDragOutlineRgn)) - return NULL; - _err = TrackWindowProxyFromExistingDrag(_self->ob_itself, - startPt, - drag, - inDragOutlineRgn); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_TrackWindowProxyDrag(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Point startPt; -#ifndef TrackWindowProxyDrag - PyMac_PRECHECK(TrackWindowProxyDrag); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &startPt)) - return NULL; - _err = TrackWindowProxyDrag(_self->ob_itself, - startPt); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_IsWindowModified(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsWindowModified - PyMac_PRECHECK(IsWindowModified); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsWindowModified(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *WinObj_SetWindowModified(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean modified; -#ifndef SetWindowModified - PyMac_PRECHECK(SetWindowModified); -#endif - if (!PyArg_ParseTuple(_args, "b", - &modified)) - return NULL; - _err = SetWindowModified(_self->ob_itself, - modified); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_IsWindowPathSelectClick(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - EventRecord event; -#ifndef IsWindowPathSelectClick - PyMac_PRECHECK(IsWindowPathSelectClick); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetEventRecord, &event)) - return NULL; - _rv = IsWindowPathSelectClick(_self->ob_itself, - &event); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *WinObj_WindowPathSelect(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - MenuHandle menu; - SInt32 outMenuResult; -#ifndef WindowPathSelect - PyMac_PRECHECK(WindowPathSelect); -#endif - if (!PyArg_ParseTuple(_args, "O&", - MenuObj_Convert, &menu)) - return NULL; - _err = WindowPathSelect(_self->ob_itself, - menu, - &outMenuResult); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - outMenuResult); - return _res; -} - -static PyObject *WinObj_HiliteWindowFrameForDrag(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean hilited; -#ifndef HiliteWindowFrameForDrag - PyMac_PRECHECK(HiliteWindowFrameForDrag); -#endif - if (!PyArg_ParseTuple(_args, "b", - &hilited)) - return NULL; - _err = HiliteWindowFrameForDrag(_self->ob_itself, - hilited); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_TransitionWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowTransitionEffect inEffect; - WindowTransitionAction inAction; - Rect inRect; -#ifndef TransitionWindow - PyMac_PRECHECK(TransitionWindow); -#endif - if (!PyArg_ParseTuple(_args, "llO&", - &inEffect, - &inAction, - PyMac_GetRect, &inRect)) - return NULL; - _err = TransitionWindow(_self->ob_itself, - inEffect, - inAction, - &inRect); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_TransitionWindowAndParent(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inParentWindow; - WindowTransitionEffect inEffect; - WindowTransitionAction inAction; - Rect inRect; -#ifndef TransitionWindowAndParent - PyMac_PRECHECK(TransitionWindowAndParent); -#endif - if (!PyArg_ParseTuple(_args, "O&llO&", - WinObj_Convert, &inParentWindow, - &inEffect, - &inAction, - PyMac_GetRect, &inRect)) - return NULL; - _err = TransitionWindowAndParent(_self->ob_itself, - inParentWindow, - inEffect, - inAction, - &inRect); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_MacMoveWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short hGlobal; - short vGlobal; - Boolean front; -#ifndef MacMoveWindow - PyMac_PRECHECK(MacMoveWindow); -#endif - if (!PyArg_ParseTuple(_args, "hhb", - &hGlobal, - &vGlobal, - &front)) - return NULL; - MacMoveWindow(_self->ob_itself, - hGlobal, - vGlobal, - front); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_SizeWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short w; - short h; - Boolean fUpdate; -#ifndef SizeWindow - PyMac_PRECHECK(SizeWindow); -#endif - if (!PyArg_ParseTuple(_args, "hhb", - &w, - &h, - &fUpdate)) - return NULL; - SizeWindow(_self->ob_itself, - w, - h, - fUpdate); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GrowWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - Point startPt; - Rect bBox; -#ifndef GrowWindow - PyMac_PRECHECK(GrowWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &startPt, - PyMac_GetRect, &bBox)) - return NULL; - _rv = GrowWindow(_self->ob_itself, - startPt, - &bBox); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *WinObj_DragWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Point startPt; - Rect boundsRect; -#ifndef DragWindow - PyMac_PRECHECK(DragWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &startPt, - PyMac_GetRect, &boundsRect)) - return NULL; - DragWindow(_self->ob_itself, - startPt, - &boundsRect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_ZoomWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPartCode partCode; - Boolean front; -#ifndef ZoomWindow - PyMac_PRECHECK(ZoomWindow); -#endif - if (!PyArg_ParseTuple(_args, "hb", - &partCode, - &front)) - return NULL; - ZoomWindow(_self->ob_itself, - partCode, - front); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_IsWindowCollapsable(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsWindowCollapsable - PyMac_PRECHECK(IsWindowCollapsable); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsWindowCollapsable(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *WinObj_IsWindowCollapsed(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsWindowCollapsed - PyMac_PRECHECK(IsWindowCollapsed); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsWindowCollapsed(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *WinObj_CollapseWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean collapse; -#ifndef CollapseWindow - PyMac_PRECHECK(CollapseWindow); -#endif - if (!PyArg_ParseTuple(_args, "b", - &collapse)) - return NULL; - _err = CollapseWindow(_self->ob_itself, - collapse); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowBounds(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowRegionCode regionCode; - Rect globalBounds; -#ifndef GetWindowBounds - PyMac_PRECHECK(GetWindowBounds); -#endif - if (!PyArg_ParseTuple(_args, "H", - ®ionCode)) - return NULL; - _err = GetWindowBounds(_self->ob_itself, - regionCode, - &globalBounds); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &globalBounds); - return _res; -} - -static PyObject *WinObj_ResizeWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point inStartPoint; - Rect inSizeConstraints; - Rect outNewContentRect; -#ifndef ResizeWindow - PyMac_PRECHECK(ResizeWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetPoint, &inStartPoint, - PyMac_GetRect, &inSizeConstraints)) - return NULL; - _rv = ResizeWindow(_self->ob_itself, - inStartPoint, - &inSizeConstraints, - &outNewContentRect); - _res = Py_BuildValue("bO&", - _rv, - PyMac_BuildRect, &outNewContentRect); - return _res; -} - -static PyObject *WinObj_SetWindowBounds(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowRegionCode regionCode; - Rect globalBounds; -#ifndef SetWindowBounds - PyMac_PRECHECK(SetWindowBounds); -#endif - if (!PyArg_ParseTuple(_args, "HO&", - ®ionCode, - PyMac_GetRect, &globalBounds)) - return NULL; - _err = SetWindowBounds(_self->ob_itself, - regionCode, - &globalBounds); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_RepositionWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr parentWindow; - WindowPositionMethod method; -#ifndef RepositionWindow - PyMac_PRECHECK(RepositionWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - WinObj_Convert, &parentWindow, - &method)) - return NULL; - _err = RepositionWindow(_self->ob_itself, - parentWindow, - method); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_MoveWindowStructure(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - short hGlobal; - short vGlobal; -#ifndef MoveWindowStructure - PyMac_PRECHECK(MoveWindowStructure); -#endif - if (!PyArg_ParseTuple(_args, "hh", - &hGlobal, - &vGlobal)) - return NULL; - _err = MoveWindowStructure(_self->ob_itself, - hGlobal, - vGlobal); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_IsWindowInStandardState(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point inIdealSize; - Rect outIdealStandardState; -#ifndef IsWindowInStandardState - PyMac_PRECHECK(IsWindowInStandardState); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &inIdealSize)) - return NULL; - _rv = IsWindowInStandardState(_self->ob_itself, - &inIdealSize, - &outIdealStandardState); - _res = Py_BuildValue("bO&", - _rv, - PyMac_BuildRect, &outIdealStandardState); - return _res; -} - -static PyObject *WinObj_ZoomWindowIdeal(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPartCode inPartCode; - Point ioIdealSize; -#ifndef ZoomWindowIdeal - PyMac_PRECHECK(ZoomWindowIdeal); -#endif - if (!PyArg_ParseTuple(_args, "h", - &inPartCode)) - return NULL; - _err = ZoomWindowIdeal(_self->ob_itself, - inPartCode, - &ioIdealSize); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildPoint, ioIdealSize); - return _res; -} - -static PyObject *WinObj_GetWindowIdealUserState(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect outUserState; -#ifndef GetWindowIdealUserState - PyMac_PRECHECK(GetWindowIdealUserState); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetWindowIdealUserState(_self->ob_itself, - &outUserState); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &outUserState); - return _res; -} - -static PyObject *WinObj_SetWindowIdealUserState(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Rect inUserState; -#ifndef SetWindowIdealUserState - PyMac_PRECHECK(SetWindowIdealUserState); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &inUserState)) - return NULL; - _err = SetWindowIdealUserState(_self->ob_itself, - &inUserState); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowGreatestAreaDevice(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowRegionCode inRegion; - GDHandle outGreatestDevice; - Rect outGreatestDeviceRect; -#ifndef GetWindowGreatestAreaDevice - PyMac_PRECHECK(GetWindowGreatestAreaDevice); -#endif - if (!PyArg_ParseTuple(_args, "H", - &inRegion)) - return NULL; - _err = GetWindowGreatestAreaDevice(_self->ob_itself, - inRegion, - &outGreatestDevice, - &outGreatestDeviceRect); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&O&", - ResObj_New, outGreatestDevice, - PyMac_BuildRect, &outGreatestDeviceRect); - return _res; -} - -static PyObject *WinObj_ConstrainWindowToScreen(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowRegionCode inRegionCode; - WindowConstrainOptions inOptions; - Rect inScreenRect; - Rect outStructure; -#ifndef ConstrainWindowToScreen - PyMac_PRECHECK(ConstrainWindowToScreen); -#endif - if (!PyArg_ParseTuple(_args, "HlO&", - &inRegionCode, - &inOptions, - PyMac_GetRect, &inScreenRect)) - return NULL; - _err = ConstrainWindowToScreen(_self->ob_itself, - inRegionCode, - inOptions, - &inScreenRect, - &outStructure); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &outStructure); - return _res; -} - -static PyObject *WinObj_HideWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef HideWindow - PyMac_PRECHECK(HideWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - HideWindow(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_MacShowWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef MacShowWindow - PyMac_PRECHECK(MacShowWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - MacShowWindow(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_ShowHide(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean showFlag; -#ifndef ShowHide - PyMac_PRECHECK(ShowHide); -#endif - if (!PyArg_ParseTuple(_args, "b", - &showFlag)) - return NULL; - ShowHide(_self->ob_itself, - showFlag); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_MacIsWindowVisible(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef MacIsWindowVisible - PyMac_PRECHECK(MacIsWindowVisible); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MacIsWindowVisible(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *WinObj_ShowSheetWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr inParentWindow; -#ifndef ShowSheetWindow - PyMac_PRECHECK(ShowSheetWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&", - WinObj_Convert, &inParentWindow)) - return NULL; - _err = ShowSheetWindow(_self->ob_itself, - inParentWindow); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_HideSheetWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef HideSheetWindow - PyMac_PRECHECK(HideSheetWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = HideSheetWindow(_self->ob_itself); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetSheetWindowParent(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowPtr outParentWindow; -#ifndef GetSheetWindowParent - PyMac_PRECHECK(GetSheetWindowParent); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = GetSheetWindowParent(_self->ob_itself, - &outParentWindow); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - WinObj_WhichWindow, outParentWindow); - return _res; -} - -static PyObject *WinObj_GetWindowPropertyAttributes(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType propertyCreator; - OSType propertyTag; - UInt32 attributes; -#ifndef GetWindowPropertyAttributes - PyMac_PRECHECK(GetWindowPropertyAttributes); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetOSType, &propertyCreator, - PyMac_GetOSType, &propertyTag)) - return NULL; - _err = GetWindowPropertyAttributes(_self->ob_itself, - propertyCreator, - propertyTag, - &attributes); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("l", - attributes); - return _res; -} - -static PyObject *WinObj_ChangeWindowPropertyAttributes(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OSType propertyCreator; - OSType propertyTag; - UInt32 attributesToSet; - UInt32 attributesToClear; -#ifndef ChangeWindowPropertyAttributes - PyMac_PRECHECK(ChangeWindowPropertyAttributes); -#endif - if (!PyArg_ParseTuple(_args, "O&O&ll", - PyMac_GetOSType, &propertyCreator, - PyMac_GetOSType, &propertyTag, - &attributesToSet, - &attributesToClear)) - return NULL; - _err = ChangeWindowPropertyAttributes(_self->ob_itself, - propertyCreator, - propertyTag, - attributesToSet, - attributesToClear); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_TrackBox(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point thePt; - WindowPartCode partCode; -#ifndef TrackBox - PyMac_PRECHECK(TrackBox); -#endif - if (!PyArg_ParseTuple(_args, "O&h", - PyMac_GetPoint, &thePt, - &partCode)) - return NULL; - _rv = TrackBox(_self->ob_itself, - thePt, - partCode); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *WinObj_TrackGoAway(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - Point thePt; -#ifndef TrackGoAway - PyMac_PRECHECK(TrackGoAway); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &thePt)) - return NULL; - _rv = TrackGoAway(_self->ob_itself, - thePt); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *WinObj_GetWindowPort(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGrafPtr _rv; -#ifndef GetWindowPort - PyMac_PRECHECK(GetWindowPort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetWindowPort(_self->ob_itself); - _res = Py_BuildValue("O&", - GrafObj_New, _rv); - return _res; -} - -static PyObject *WinObj_GetWindowStructurePort(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - CGrafPtr _rv; -#ifndef GetWindowStructurePort - PyMac_PRECHECK(GetWindowStructurePort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetWindowStructurePort(_self->ob_itself); - _res = Py_BuildValue("O&", - GrafObj_New, _rv); - return _res; -} - -static PyObject *WinObj_GetWindowKind(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; -#ifndef GetWindowKind - PyMac_PRECHECK(GetWindowKind); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetWindowKind(_self->ob_itself); - _res = Py_BuildValue("h", - _rv); - return _res; -} - -static PyObject *WinObj_IsWindowHilited(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsWindowHilited - PyMac_PRECHECK(IsWindowHilited); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsWindowHilited(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *WinObj_IsWindowUpdatePending(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsWindowUpdatePending - PyMac_PRECHECK(IsWindowUpdatePending); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsWindowUpdatePending(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *WinObj_MacGetNextWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; -#ifndef MacGetNextWindow - PyMac_PRECHECK(MacGetNextWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = MacGetNextWindow(_self->ob_itself); - _res = Py_BuildValue("O&", - WinObj_New, _rv); - return _res; -} - -static PyObject *WinObj_GetWindowStandardState(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect rect; -#ifndef GetWindowStandardState - PyMac_PRECHECK(GetWindowStandardState); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetWindowStandardState(_self->ob_itself, - &rect); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &rect); - return _res; -} - -static PyObject *WinObj_GetWindowUserState(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect rect; -#ifndef GetWindowUserState - PyMac_PRECHECK(GetWindowUserState); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetWindowUserState(_self->ob_itself, - &rect); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &rect); - return _res; -} - -static PyObject *WinObj_SetWindowKind(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short kind; -#ifndef SetWindowKind - PyMac_PRECHECK(SetWindowKind); -#endif - if (!PyArg_ParseTuple(_args, "h", - &kind)) - return NULL; - SetWindowKind(_self->ob_itself, - kind); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_SetWindowStandardState(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect rect; -#ifndef SetWindowStandardState - PyMac_PRECHECK(SetWindowStandardState); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &rect)) - return NULL; - SetWindowStandardState(_self->ob_itself, - &rect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_SetWindowUserState(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect rect; -#ifndef SetWindowUserState - PyMac_PRECHECK(SetWindowUserState); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetRect, &rect)) - return NULL; - SetWindowUserState(_self->ob_itself, - &rect); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_SetPortWindowPort(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef SetPortWindowPort - PyMac_PRECHECK(SetPortWindowPort); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - SetPortWindowPort(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowPortBounds(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Rect bounds; -#ifndef GetWindowPortBounds - PyMac_PRECHECK(GetWindowPortBounds); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - GetWindowPortBounds(_self->ob_itself, - &bounds); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &bounds); - return _res; -} - -static PyObject *WinObj_IsWindowVisible(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef IsWindowVisible - PyMac_PRECHECK(IsWindowVisible); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = IsWindowVisible(_self->ob_itself); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *WinObj_GetWindowStructureRgn(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle r; -#ifndef GetWindowStructureRgn - PyMac_PRECHECK(GetWindowStructureRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &r)) - return NULL; - GetWindowStructureRgn(_self->ob_itself, - r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowContentRgn(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle r; -#ifndef GetWindowContentRgn - PyMac_PRECHECK(GetWindowContentRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &r)) - return NULL; - GetWindowContentRgn(_self->ob_itself, - r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetWindowUpdateRgn(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle r; -#ifndef GetWindowUpdateRgn - PyMac_PRECHECK(GetWindowUpdateRgn); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &r)) - return NULL; - GetWindowUpdateRgn(_self->ob_itself, - r); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_GetNextWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; -#ifndef GetNextWindow - PyMac_PRECHECK(GetNextWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetNextWindow(_self->ob_itself); - _res = Py_BuildValue("O&", - WinObj_WhichWindow, _rv); - return _res; -} - -static PyObject *WinObj_MoveWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short hGlobal; - short vGlobal; - Boolean front; -#ifndef MoveWindow - PyMac_PRECHECK(MoveWindow); -#endif - if (!PyArg_ParseTuple(_args, "hhb", - &hGlobal, - &vGlobal, - &front)) - return NULL; - MoveWindow(_self->ob_itself, - hGlobal, - vGlobal, - front); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_ShowWindow(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; -#ifndef ShowWindow - PyMac_PRECHECK(ShowWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - ShowWindow(_self->ob_itself); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *WinObj_AutoDispose(WindowObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - int onoff, old = 0; - if (!PyArg_ParseTuple(_args, "i", &onoff)) - return NULL; - if ( _self->ob_freeit ) - old = 1; - if ( onoff ) - _self->ob_freeit = PyMac_AutoDisposeWindow; - else - _self->ob_freeit = NULL; - _res = Py_BuildValue("i", old); - return _res; - -} - -static PyMethodDef WinObj_methods[] = { - {"GetWindowOwnerCount", (PyCFunction)WinObj_GetWindowOwnerCount, 1, - PyDoc_STR("() -> (UInt32 outCount)")}, - {"CloneWindow", (PyCFunction)WinObj_CloneWindow, 1, - PyDoc_STR("() -> None")}, - {"GetWindowRetainCount", (PyCFunction)WinObj_GetWindowRetainCount, 1, - PyDoc_STR("() -> (ItemCount _rv)")}, - {"RetainWindow", (PyCFunction)WinObj_RetainWindow, 1, - PyDoc_STR("() -> None")}, - {"ReleaseWindow", (PyCFunction)WinObj_ReleaseWindow, 1, - PyDoc_STR("() -> None")}, - {"ReshapeCustomWindow", (PyCFunction)WinObj_ReshapeCustomWindow, 1, - PyDoc_STR("() -> None")}, - {"GetWindowWidgetHilite", (PyCFunction)WinObj_GetWindowWidgetHilite, 1, - PyDoc_STR("() -> (WindowDefPartCode outHilite)")}, - {"GetWindowClass", (PyCFunction)WinObj_GetWindowClass, 1, - PyDoc_STR("() -> (WindowClass outClass)")}, - {"GetWindowAttributes", (PyCFunction)WinObj_GetWindowAttributes, 1, - PyDoc_STR("() -> (WindowAttributes outAttributes)")}, - {"ChangeWindowAttributes", (PyCFunction)WinObj_ChangeWindowAttributes, 1, - PyDoc_STR("(WindowAttributes setTheseAttributes, WindowAttributes clearTheseAttributes) -> None")}, - {"SetWindowClass", (PyCFunction)WinObj_SetWindowClass, 1, - PyDoc_STR("(WindowClass inWindowClass) -> None")}, - {"SetWindowModality", (PyCFunction)WinObj_SetWindowModality, 1, - PyDoc_STR("(WindowModality inModalKind, WindowPtr inUnavailableWindow) -> None")}, - {"GetWindowModality", (PyCFunction)WinObj_GetWindowModality, 1, - PyDoc_STR("() -> (WindowModality outModalKind, WindowPtr outUnavailableWindow)")}, - {"SetWindowContentColor", (PyCFunction)WinObj_SetWindowContentColor, 1, - PyDoc_STR("(RGBColor color) -> None")}, - {"GetWindowContentColor", (PyCFunction)WinObj_GetWindowContentColor, 1, - PyDoc_STR("() -> (RGBColor color)")}, - {"GetWindowContentPattern", (PyCFunction)WinObj_GetWindowContentPattern, 1, - PyDoc_STR("(PixPatHandle outPixPat) -> None")}, - {"SetWindowContentPattern", (PyCFunction)WinObj_SetWindowContentPattern, 1, - PyDoc_STR("(PixPatHandle pixPat) -> None")}, - {"ScrollWindowRect", (PyCFunction)WinObj_ScrollWindowRect, 1, - PyDoc_STR("(Rect inScrollRect, SInt16 inHPixels, SInt16 inVPixels, ScrollWindowOptions inOptions, RgnHandle outExposedRgn) -> None")}, - {"ScrollWindowRegion", (PyCFunction)WinObj_ScrollWindowRegion, 1, - PyDoc_STR("(RgnHandle inScrollRgn, SInt16 inHPixels, SInt16 inVPixels, ScrollWindowOptions inOptions, RgnHandle outExposedRgn) -> None")}, - {"ClipAbove", (PyCFunction)WinObj_ClipAbove, 1, - PyDoc_STR("() -> None")}, - {"PaintOne", (PyCFunction)WinObj_PaintOne, 1, - PyDoc_STR("(RgnHandle clobberedRgn) -> None")}, - {"PaintBehind", (PyCFunction)WinObj_PaintBehind, 1, - PyDoc_STR("(RgnHandle clobberedRgn) -> None")}, - {"CalcVis", (PyCFunction)WinObj_CalcVis, 1, - PyDoc_STR("() -> None")}, - {"CalcVisBehind", (PyCFunction)WinObj_CalcVisBehind, 1, - PyDoc_STR("(RgnHandle clobberedRgn) -> None")}, - {"BringToFront", (PyCFunction)WinObj_BringToFront, 1, - PyDoc_STR("() -> None")}, - {"SendBehind", (PyCFunction)WinObj_SendBehind, 1, - PyDoc_STR("(WindowPtr behindWindow) -> None")}, - {"SelectWindow", (PyCFunction)WinObj_SelectWindow, 1, - PyDoc_STR("() -> None")}, - {"GetNextWindowOfClass", (PyCFunction)WinObj_GetNextWindowOfClass, 1, - PyDoc_STR("(WindowClass inWindowClass, Boolean mustBeVisible) -> (WindowPtr _rv)")}, - {"SetWindowAlternateTitle", (PyCFunction)WinObj_SetWindowAlternateTitle, 1, - PyDoc_STR("(CFStringRef inTitle) -> None")}, - {"CopyWindowAlternateTitle", (PyCFunction)WinObj_CopyWindowAlternateTitle, 1, - PyDoc_STR("() -> (CFStringRef outTitle)")}, - {"HiliteWindow", (PyCFunction)WinObj_HiliteWindow, 1, - PyDoc_STR("(Boolean fHilite) -> None")}, - {"SetWRefCon", (PyCFunction)WinObj_SetWRefCon, 1, - PyDoc_STR("(long data) -> None")}, - {"GetWRefCon", (PyCFunction)WinObj_GetWRefCon, 1, - PyDoc_STR("() -> (long _rv)")}, - {"SetWindowPic", (PyCFunction)WinObj_SetWindowPic, 1, - PyDoc_STR("(PicHandle pic) -> None")}, - {"GetWindowPic", (PyCFunction)WinObj_GetWindowPic, 1, - PyDoc_STR("() -> (PicHandle _rv)")}, - {"GetWVariant", (PyCFunction)WinObj_GetWVariant, 1, - PyDoc_STR("() -> (short _rv)")}, - {"GetWindowFeatures", (PyCFunction)WinObj_GetWindowFeatures, 1, - PyDoc_STR("() -> (UInt32 outFeatures)")}, - {"GetWindowRegion", (PyCFunction)WinObj_GetWindowRegion, 1, - PyDoc_STR("(WindowRegionCode inRegionCode, RgnHandle ioWinRgn) -> None")}, - {"GetWindowStructureWidths", (PyCFunction)WinObj_GetWindowStructureWidths, 1, - PyDoc_STR("() -> (Rect outRect)")}, - {"BeginUpdate", (PyCFunction)WinObj_BeginUpdate, 1, - PyDoc_STR("() -> None")}, - {"EndUpdate", (PyCFunction)WinObj_EndUpdate, 1, - PyDoc_STR("() -> None")}, - {"InvalWindowRgn", (PyCFunction)WinObj_InvalWindowRgn, 1, - PyDoc_STR("(RgnHandle region) -> None")}, - {"InvalWindowRect", (PyCFunction)WinObj_InvalWindowRect, 1, - PyDoc_STR("(Rect bounds) -> None")}, - {"ValidWindowRgn", (PyCFunction)WinObj_ValidWindowRgn, 1, - PyDoc_STR("(RgnHandle region) -> None")}, - {"ValidWindowRect", (PyCFunction)WinObj_ValidWindowRect, 1, - PyDoc_STR("(Rect bounds) -> None")}, - {"DrawGrowIcon", (PyCFunction)WinObj_DrawGrowIcon, 1, - PyDoc_STR("() -> None")}, - {"SetWTitle", (PyCFunction)WinObj_SetWTitle, 1, - PyDoc_STR("(Str255 title) -> None")}, - {"GetWTitle", (PyCFunction)WinObj_GetWTitle, 1, - PyDoc_STR("() -> (Str255 title)")}, - {"SetWindowTitleWithCFString", (PyCFunction)WinObj_SetWindowTitleWithCFString, 1, - PyDoc_STR("(CFStringRef inString) -> None")}, - {"CopyWindowTitleAsCFString", (PyCFunction)WinObj_CopyWindowTitleAsCFString, 1, - PyDoc_STR("() -> (CFStringRef outString)")}, - {"SetWindowProxyFSSpec", (PyCFunction)WinObj_SetWindowProxyFSSpec, 1, - PyDoc_STR("(FSSpec inFile) -> None")}, - {"GetWindowProxyFSSpec", (PyCFunction)WinObj_GetWindowProxyFSSpec, 1, - PyDoc_STR("() -> (FSSpec outFile)")}, - {"SetWindowProxyAlias", (PyCFunction)WinObj_SetWindowProxyAlias, 1, - PyDoc_STR("(AliasHandle inAlias) -> None")}, - {"GetWindowProxyAlias", (PyCFunction)WinObj_GetWindowProxyAlias, 1, - PyDoc_STR("() -> (AliasHandle alias)")}, - {"SetWindowProxyCreatorAndType", (PyCFunction)WinObj_SetWindowProxyCreatorAndType, 1, - PyDoc_STR("(OSType fileCreator, OSType fileType, SInt16 vRefNum) -> None")}, - {"GetWindowProxyIcon", (PyCFunction)WinObj_GetWindowProxyIcon, 1, - PyDoc_STR("() -> (IconRef outIcon)")}, - {"SetWindowProxyIcon", (PyCFunction)WinObj_SetWindowProxyIcon, 1, - PyDoc_STR("(IconRef icon) -> None")}, - {"RemoveWindowProxy", (PyCFunction)WinObj_RemoveWindowProxy, 1, - PyDoc_STR("() -> None")}, - {"BeginWindowProxyDrag", (PyCFunction)WinObj_BeginWindowProxyDrag, 1, - PyDoc_STR("(RgnHandle outDragOutlineRgn) -> (DragReference outNewDrag)")}, - {"EndWindowProxyDrag", (PyCFunction)WinObj_EndWindowProxyDrag, 1, - PyDoc_STR("(DragReference theDrag) -> None")}, - {"TrackWindowProxyFromExistingDrag", (PyCFunction)WinObj_TrackWindowProxyFromExistingDrag, 1, - PyDoc_STR("(Point startPt, DragReference drag, RgnHandle inDragOutlineRgn) -> None")}, - {"TrackWindowProxyDrag", (PyCFunction)WinObj_TrackWindowProxyDrag, 1, - PyDoc_STR("(Point startPt) -> None")}, - {"IsWindowModified", (PyCFunction)WinObj_IsWindowModified, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"SetWindowModified", (PyCFunction)WinObj_SetWindowModified, 1, - PyDoc_STR("(Boolean modified) -> None")}, - {"IsWindowPathSelectClick", (PyCFunction)WinObj_IsWindowPathSelectClick, 1, - PyDoc_STR("(EventRecord event) -> (Boolean _rv)")}, - {"WindowPathSelect", (PyCFunction)WinObj_WindowPathSelect, 1, - PyDoc_STR("(MenuHandle menu) -> (SInt32 outMenuResult)")}, - {"HiliteWindowFrameForDrag", (PyCFunction)WinObj_HiliteWindowFrameForDrag, 1, - PyDoc_STR("(Boolean hilited) -> None")}, - {"TransitionWindow", (PyCFunction)WinObj_TransitionWindow, 1, - PyDoc_STR("(WindowTransitionEffect inEffect, WindowTransitionAction inAction, Rect inRect) -> None")}, - {"TransitionWindowAndParent", (PyCFunction)WinObj_TransitionWindowAndParent, 1, - PyDoc_STR("(WindowPtr inParentWindow, WindowTransitionEffect inEffect, WindowTransitionAction inAction, Rect inRect) -> None")}, - {"MacMoveWindow", (PyCFunction)WinObj_MacMoveWindow, 1, - PyDoc_STR("(short hGlobal, short vGlobal, Boolean front) -> None")}, - {"SizeWindow", (PyCFunction)WinObj_SizeWindow, 1, - PyDoc_STR("(short w, short h, Boolean fUpdate) -> None")}, - {"GrowWindow", (PyCFunction)WinObj_GrowWindow, 1, - PyDoc_STR("(Point startPt, Rect bBox) -> (long _rv)")}, - {"DragWindow", (PyCFunction)WinObj_DragWindow, 1, - PyDoc_STR("(Point startPt, Rect boundsRect) -> None")}, - {"ZoomWindow", (PyCFunction)WinObj_ZoomWindow, 1, - PyDoc_STR("(WindowPartCode partCode, Boolean front) -> None")}, - {"IsWindowCollapsable", (PyCFunction)WinObj_IsWindowCollapsable, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"IsWindowCollapsed", (PyCFunction)WinObj_IsWindowCollapsed, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"CollapseWindow", (PyCFunction)WinObj_CollapseWindow, 1, - PyDoc_STR("(Boolean collapse) -> None")}, - {"GetWindowBounds", (PyCFunction)WinObj_GetWindowBounds, 1, - PyDoc_STR("(WindowRegionCode regionCode) -> (Rect globalBounds)")}, - {"ResizeWindow", (PyCFunction)WinObj_ResizeWindow, 1, - PyDoc_STR("(Point inStartPoint, Rect inSizeConstraints) -> (Boolean _rv, Rect outNewContentRect)")}, - {"SetWindowBounds", (PyCFunction)WinObj_SetWindowBounds, 1, - PyDoc_STR("(WindowRegionCode regionCode, Rect globalBounds) -> None")}, - {"RepositionWindow", (PyCFunction)WinObj_RepositionWindow, 1, - PyDoc_STR("(WindowPtr parentWindow, WindowPositionMethod method) -> None")}, - {"MoveWindowStructure", (PyCFunction)WinObj_MoveWindowStructure, 1, - PyDoc_STR("(short hGlobal, short vGlobal) -> None")}, - {"IsWindowInStandardState", (PyCFunction)WinObj_IsWindowInStandardState, 1, - PyDoc_STR("(Point inIdealSize) -> (Boolean _rv, Rect outIdealStandardState)")}, - {"ZoomWindowIdeal", (PyCFunction)WinObj_ZoomWindowIdeal, 1, - PyDoc_STR("(WindowPartCode inPartCode) -> (Point ioIdealSize)")}, - {"GetWindowIdealUserState", (PyCFunction)WinObj_GetWindowIdealUserState, 1, - PyDoc_STR("() -> (Rect outUserState)")}, - {"SetWindowIdealUserState", (PyCFunction)WinObj_SetWindowIdealUserState, 1, - PyDoc_STR("(Rect inUserState) -> None")}, - {"GetWindowGreatestAreaDevice", (PyCFunction)WinObj_GetWindowGreatestAreaDevice, 1, - PyDoc_STR("(WindowRegionCode inRegion) -> (GDHandle outGreatestDevice, Rect outGreatestDeviceRect)")}, - {"ConstrainWindowToScreen", (PyCFunction)WinObj_ConstrainWindowToScreen, 1, - PyDoc_STR("(WindowRegionCode inRegionCode, WindowConstrainOptions inOptions, Rect inScreenRect) -> (Rect outStructure)")}, - {"HideWindow", (PyCFunction)WinObj_HideWindow, 1, - PyDoc_STR("() -> None")}, - {"MacShowWindow", (PyCFunction)WinObj_MacShowWindow, 1, - PyDoc_STR("() -> None")}, - {"ShowHide", (PyCFunction)WinObj_ShowHide, 1, - PyDoc_STR("(Boolean showFlag) -> None")}, - {"MacIsWindowVisible", (PyCFunction)WinObj_MacIsWindowVisible, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"ShowSheetWindow", (PyCFunction)WinObj_ShowSheetWindow, 1, - PyDoc_STR("(WindowPtr inParentWindow) -> None")}, - {"HideSheetWindow", (PyCFunction)WinObj_HideSheetWindow, 1, - PyDoc_STR("() -> None")}, - {"GetSheetWindowParent", (PyCFunction)WinObj_GetSheetWindowParent, 1, - PyDoc_STR("() -> (WindowPtr outParentWindow)")}, - {"GetWindowPropertyAttributes", (PyCFunction)WinObj_GetWindowPropertyAttributes, 1, - PyDoc_STR("(OSType propertyCreator, OSType propertyTag) -> (UInt32 attributes)")}, - {"ChangeWindowPropertyAttributes", (PyCFunction)WinObj_ChangeWindowPropertyAttributes, 1, - PyDoc_STR("(OSType propertyCreator, OSType propertyTag, UInt32 attributesToSet, UInt32 attributesToClear) -> None")}, - {"TrackBox", (PyCFunction)WinObj_TrackBox, 1, - PyDoc_STR("(Point thePt, WindowPartCode partCode) -> (Boolean _rv)")}, - {"TrackGoAway", (PyCFunction)WinObj_TrackGoAway, 1, - PyDoc_STR("(Point thePt) -> (Boolean _rv)")}, - {"GetWindowPort", (PyCFunction)WinObj_GetWindowPort, 1, - PyDoc_STR("() -> (CGrafPtr _rv)")}, - {"GetWindowStructurePort", (PyCFunction)WinObj_GetWindowStructurePort, 1, - PyDoc_STR("() -> (CGrafPtr _rv)")}, - {"GetWindowKind", (PyCFunction)WinObj_GetWindowKind, 1, - PyDoc_STR("() -> (short _rv)")}, - {"IsWindowHilited", (PyCFunction)WinObj_IsWindowHilited, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"IsWindowUpdatePending", (PyCFunction)WinObj_IsWindowUpdatePending, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"MacGetNextWindow", (PyCFunction)WinObj_MacGetNextWindow, 1, - PyDoc_STR("() -> (WindowPtr _rv)")}, - {"GetWindowStandardState", (PyCFunction)WinObj_GetWindowStandardState, 1, - PyDoc_STR("() -> (Rect rect)")}, - {"GetWindowUserState", (PyCFunction)WinObj_GetWindowUserState, 1, - PyDoc_STR("() -> (Rect rect)")}, - {"SetWindowKind", (PyCFunction)WinObj_SetWindowKind, 1, - PyDoc_STR("(short kind) -> None")}, - {"SetWindowStandardState", (PyCFunction)WinObj_SetWindowStandardState, 1, - PyDoc_STR("(Rect rect) -> None")}, - {"SetWindowUserState", (PyCFunction)WinObj_SetWindowUserState, 1, - PyDoc_STR("(Rect rect) -> None")}, - {"SetPortWindowPort", (PyCFunction)WinObj_SetPortWindowPort, 1, - PyDoc_STR("() -> None")}, - {"GetWindowPortBounds", (PyCFunction)WinObj_GetWindowPortBounds, 1, - PyDoc_STR("() -> (Rect bounds)")}, - {"IsWindowVisible", (PyCFunction)WinObj_IsWindowVisible, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"GetWindowStructureRgn", (PyCFunction)WinObj_GetWindowStructureRgn, 1, - PyDoc_STR("(RgnHandle r) -> None")}, - {"GetWindowContentRgn", (PyCFunction)WinObj_GetWindowContentRgn, 1, - PyDoc_STR("(RgnHandle r) -> None")}, - {"GetWindowUpdateRgn", (PyCFunction)WinObj_GetWindowUpdateRgn, 1, - PyDoc_STR("(RgnHandle r) -> None")}, - {"GetNextWindow", (PyCFunction)WinObj_GetNextWindow, 1, - PyDoc_STR("() -> (WindowPtr _rv)")}, - {"MoveWindow", (PyCFunction)WinObj_MoveWindow, 1, - PyDoc_STR("(short hGlobal, short vGlobal, Boolean front) -> None")}, - {"ShowWindow", (PyCFunction)WinObj_ShowWindow, 1, - PyDoc_STR("() -> None")}, - {"AutoDispose", (PyCFunction)WinObj_AutoDispose, 1, - PyDoc_STR("(int)->int. Automatically DisposeHandle the object on Python object cleanup")}, - {NULL, NULL, 0} -}; - -#define WinObj_getsetlist NULL - - -static int WinObj_compare(WindowObject *self, WindowObject *other) -{ - if ( self->ob_itself > other->ob_itself ) return 1; - if ( self->ob_itself < other->ob_itself ) return -1; - return 0; -} - -static PyObject * WinObj_repr(WindowObject *self) -{ - char buf[100]; - sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself); - return PyString_FromString(buf); -} - -static int WinObj_hash(WindowObject *self) -{ - return (int)self->ob_itself; -} -#define WinObj_tp_init 0 - -#define WinObj_tp_alloc PyType_GenericAlloc - -static PyObject *WinObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) -{ - PyObject *_self; - WindowPtr itself; - char *kw[] = {"itself", 0}; - - if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, WinObj_Convert, &itself)) return NULL; - if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; - ((WindowObject *)_self)->ob_itself = itself; - return _self; -} - -#define WinObj_tp_free PyObject_Del - - -PyTypeObject Window_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "_Win.Window", /*tp_name*/ - sizeof(WindowObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) WinObj_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - (cmpfunc) WinObj_compare, /*tp_compare*/ - (reprfunc) WinObj_repr, /*tp_repr*/ - (PyNumberMethods *)0, /* tp_as_number */ - (PySequenceMethods *)0, /* tp_as_sequence */ - (PyMappingMethods *)0, /* tp_as_mapping */ - (hashfunc) WinObj_hash, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - PyObject_GenericGetAttr, /*tp_getattro*/ - PyObject_GenericSetAttr, /*tp_setattro */ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - WinObj_methods, /* tp_methods */ - 0, /*tp_members*/ - WinObj_getsetlist, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - WinObj_tp_init, /* tp_init */ - WinObj_tp_alloc, /* tp_alloc */ - WinObj_tp_new, /* tp_new */ - WinObj_tp_free, /* tp_free */ -}; - -/* --------------------- End object type Window --------------------- */ - - -static PyObject *Win_GetNewCWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; - short windowID; - WindowPtr behind; -#ifndef GetNewCWindow - PyMac_PRECHECK(GetNewCWindow); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &windowID, - WinObj_Convert, &behind)) - return NULL; - _rv = GetNewCWindow(windowID, - (void *)0, - behind); - _res = Py_BuildValue("O&", - WinObj_New, _rv); - return _res; -} - -static PyObject *Win_NewWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; - Rect boundsRect; - Str255 title; - Boolean visible; - short theProc; - WindowPtr behind; - Boolean goAwayFlag; - long refCon; -#ifndef NewWindow - PyMac_PRECHECK(NewWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&O&bhO&bl", - PyMac_GetRect, &boundsRect, - PyMac_GetStr255, title, - &visible, - &theProc, - WinObj_Convert, &behind, - &goAwayFlag, - &refCon)) - return NULL; - _rv = NewWindow((void *)0, - &boundsRect, - title, - visible, - theProc, - behind, - goAwayFlag, - refCon); - _res = Py_BuildValue("O&", - WinObj_New, _rv); - return _res; -} - -static PyObject *Win_GetNewWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; - short windowID; - WindowPtr behind; -#ifndef GetNewWindow - PyMac_PRECHECK(GetNewWindow); -#endif - if (!PyArg_ParseTuple(_args, "hO&", - &windowID, - WinObj_Convert, &behind)) - return NULL; - _rv = GetNewWindow(windowID, - (void *)0, - behind); - _res = Py_BuildValue("O&", - WinObj_New, _rv); - return _res; -} - -static PyObject *Win_NewCWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; - Rect boundsRect; - Str255 title; - Boolean visible; - short procID; - WindowPtr behind; - Boolean goAwayFlag; - long refCon; -#ifndef NewCWindow - PyMac_PRECHECK(NewCWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&O&bhO&bl", - PyMac_GetRect, &boundsRect, - PyMac_GetStr255, title, - &visible, - &procID, - WinObj_Convert, &behind, - &goAwayFlag, - &refCon)) - return NULL; - _rv = NewCWindow((void *)0, - &boundsRect, - title, - visible, - procID, - behind, - goAwayFlag, - refCon); - _res = Py_BuildValue("O&", - WinObj_New, _rv); - return _res; -} - -static PyObject *Win_CreateNewWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - WindowClass windowClass; - WindowAttributes attributes; - Rect contentBounds; - WindowPtr outWindow; -#ifndef CreateNewWindow - PyMac_PRECHECK(CreateNewWindow); -#endif - if (!PyArg_ParseTuple(_args, "llO&", - &windowClass, - &attributes, - PyMac_GetRect, &contentBounds)) - return NULL; - _err = CreateNewWindow(windowClass, - attributes, - &contentBounds, - &outWindow); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - WinObj_New, outWindow); - return _res; -} - -static PyObject *Win_CreateWindowFromResource(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - SInt16 resID; - WindowPtr outWindow; -#ifndef CreateWindowFromResource - PyMac_PRECHECK(CreateWindowFromResource); -#endif - if (!PyArg_ParseTuple(_args, "h", - &resID)) - return NULL; - _err = CreateWindowFromResource(resID, - &outWindow); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - WinObj_New, outWindow); - return _res; -} - -static PyObject *Win_ShowFloatingWindows(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef ShowFloatingWindows - PyMac_PRECHECK(ShowFloatingWindows); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = ShowFloatingWindows(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Win_HideFloatingWindows(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef HideFloatingWindows - PyMac_PRECHECK(HideFloatingWindows); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = HideFloatingWindows(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Win_AreFloatingWindowsVisible(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; -#ifndef AreFloatingWindowsVisible - PyMac_PRECHECK(AreFloatingWindowsVisible); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = AreFloatingWindowsVisible(); - _res = Py_BuildValue("b", - _rv); - return _res; -} - -static PyObject *Win_CheckUpdate(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - Boolean _rv; - EventRecord theEvent; -#ifndef CheckUpdate - PyMac_PRECHECK(CheckUpdate); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = CheckUpdate(&theEvent); - _res = Py_BuildValue("bO&", - _rv, - PyMac_BuildEventRecord, &theEvent); - return _res; -} - -static PyObject *Win_MacFindWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPartCode _rv; - Point thePoint; - WindowPtr window; -#ifndef MacFindWindow - PyMac_PRECHECK(MacFindWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &thePoint)) - return NULL; - _rv = MacFindWindow(thePoint, - &window); - _res = Py_BuildValue("hO&", - _rv, - WinObj_WhichWindow, window); - return _res; -} - -static PyObject *Win_FrontWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; -#ifndef FrontWindow - PyMac_PRECHECK(FrontWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = FrontWindow(); - _res = Py_BuildValue("O&", - WinObj_WhichWindow, _rv); - return _res; -} - -static PyObject *Win_FrontNonFloatingWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; -#ifndef FrontNonFloatingWindow - PyMac_PRECHECK(FrontNonFloatingWindow); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = FrontNonFloatingWindow(); - _res = Py_BuildValue("O&", - WinObj_WhichWindow, _rv); - return _res; -} - -static PyObject *Win_GetFrontWindowOfClass(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; - WindowClass inWindowClass; - Boolean mustBeVisible; -#ifndef GetFrontWindowOfClass - PyMac_PRECHECK(GetFrontWindowOfClass); -#endif - if (!PyArg_ParseTuple(_args, "lb", - &inWindowClass, - &mustBeVisible)) - return NULL; - _rv = GetFrontWindowOfClass(inWindowClass, - mustBeVisible); - _res = Py_BuildValue("O&", - WinObj_New, _rv); - return _res; -} - -static PyObject *Win_FindWindowOfClass(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Point where; - WindowClass inWindowClass; - WindowPtr outWindow; - WindowPartCode outWindowPart; -#ifndef FindWindowOfClass - PyMac_PRECHECK(FindWindowOfClass); -#endif - if (!PyArg_ParseTuple(_args, "O&l", - PyMac_GetPoint, &where, - &inWindowClass)) - return NULL; - _err = FindWindowOfClass(&where, - inWindowClass, - &outWindow, - &outWindowPart); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&h", - WinObj_WhichWindow, outWindow, - outWindowPart); - return _res; -} - -static PyObject *Win_CreateStandardWindowMenu(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - OptionBits inOptions; - MenuHandle outMenu; -#ifndef CreateStandardWindowMenu - PyMac_PRECHECK(CreateStandardWindowMenu); -#endif - if (!PyArg_ParseTuple(_args, "l", - &inOptions)) - return NULL; - _err = CreateStandardWindowMenu(inOptions, - &outMenu); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - MenuObj_New, outMenu); - return _res; -} - -static PyObject *Win_CollapseAllWindows(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - Boolean collapse; -#ifndef CollapseAllWindows - PyMac_PRECHECK(CollapseAllWindows); -#endif - if (!PyArg_ParseTuple(_args, "b", - &collapse)) - return NULL; - _err = CollapseAllWindows(collapse); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Win_GetAvailableWindowPositioningBounds(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; - GDHandle inDevice; - Rect outAvailableRect; -#ifndef GetAvailableWindowPositioningBounds - PyMac_PRECHECK(GetAvailableWindowPositioningBounds); -#endif - if (!PyArg_ParseTuple(_args, "O&", - ResObj_Convert, &inDevice)) - return NULL; - _err = GetAvailableWindowPositioningBounds(inDevice, - &outAvailableRect); - if (_err != noErr) return PyMac_Error(_err); - _res = Py_BuildValue("O&", - PyMac_BuildRect, &outAvailableRect); - return _res; -} - -static PyObject *Win_DisableScreenUpdates(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef DisableScreenUpdates - PyMac_PRECHECK(DisableScreenUpdates); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = DisableScreenUpdates(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Win_EnableScreenUpdates(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - OSStatus _err; -#ifndef EnableScreenUpdates - PyMac_PRECHECK(EnableScreenUpdates); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _err = EnableScreenUpdates(); - if (_err != noErr) return PyMac_Error(_err); - Py_INCREF(Py_None); - _res = Py_None; - return _res; -} - -static PyObject *Win_PinRect(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - long _rv; - Rect theRect; - Point thePt; -#ifndef PinRect - PyMac_PRECHECK(PinRect); -#endif - if (!PyArg_ParseTuple(_args, "O&O&", - PyMac_GetRect, &theRect, - PyMac_GetPoint, &thePt)) - return NULL; - _rv = PinRect(&theRect, - thePt); - _res = Py_BuildValue("l", - _rv); - return _res; -} - -static PyObject *Win_GetGrayRgn(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - RgnHandle _rv; -#ifndef GetGrayRgn - PyMac_PRECHECK(GetGrayRgn); -#endif - if (!PyArg_ParseTuple(_args, "")) - return NULL; - _rv = GetGrayRgn(); - _res = Py_BuildValue("O&", - ResObj_New, _rv); - return _res; -} - -static PyObject *Win_GetWindowFromPort(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - WindowPtr _rv; - CGrafPtr port; -#ifndef GetWindowFromPort - PyMac_PRECHECK(GetWindowFromPort); -#endif - if (!PyArg_ParseTuple(_args, "O&", - GrafObj_Convert, &port)) - return NULL; - _rv = GetWindowFromPort(port); - _res = Py_BuildValue("O&", - WinObj_New, _rv); - return _res; -} - -static PyObject *Win_WhichWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - - long ptr; - - if ( !PyArg_ParseTuple(_args, "i", &ptr) ) - return NULL; - _res = WinObj_WhichWindow((WindowPtr)ptr); - return _res; - -} - -static PyObject *Win_FindWindow(PyObject *_self, PyObject *_args) -{ - PyObject *_res = NULL; - short _rv; - Point thePoint; - WindowPtr theWindow; -#ifndef FindWindow - PyMac_PRECHECK(FindWindow); -#endif - if (!PyArg_ParseTuple(_args, "O&", - PyMac_GetPoint, &thePoint)) - return NULL; - _rv = FindWindow(thePoint, - &theWindow); - _res = Py_BuildValue("hO&", - _rv, - WinObj_WhichWindow, theWindow); - return _res; -} -#endif /* __LP64__ */ - -static PyMethodDef Win_methods[] = { -#ifndef __LP64__ - {"GetNewCWindow", (PyCFunction)Win_GetNewCWindow, 1, - PyDoc_STR("(short windowID, WindowPtr behind) -> (WindowPtr _rv)")}, - {"NewWindow", (PyCFunction)Win_NewWindow, 1, - PyDoc_STR("(Rect boundsRect, Str255 title, Boolean visible, short theProc, WindowPtr behind, Boolean goAwayFlag, long refCon) -> (WindowPtr _rv)")}, - {"GetNewWindow", (PyCFunction)Win_GetNewWindow, 1, - PyDoc_STR("(short windowID, WindowPtr behind) -> (WindowPtr _rv)")}, - {"NewCWindow", (PyCFunction)Win_NewCWindow, 1, - PyDoc_STR("(Rect boundsRect, Str255 title, Boolean visible, short procID, WindowPtr behind, Boolean goAwayFlag, long refCon) -> (WindowPtr _rv)")}, - {"CreateNewWindow", (PyCFunction)Win_CreateNewWindow, 1, - PyDoc_STR("(WindowClass windowClass, WindowAttributes attributes, Rect contentBounds) -> (WindowPtr outWindow)")}, - {"CreateWindowFromResource", (PyCFunction)Win_CreateWindowFromResource, 1, - PyDoc_STR("(SInt16 resID) -> (WindowPtr outWindow)")}, - {"ShowFloatingWindows", (PyCFunction)Win_ShowFloatingWindows, 1, - PyDoc_STR("() -> None")}, - {"HideFloatingWindows", (PyCFunction)Win_HideFloatingWindows, 1, - PyDoc_STR("() -> None")}, - {"AreFloatingWindowsVisible", (PyCFunction)Win_AreFloatingWindowsVisible, 1, - PyDoc_STR("() -> (Boolean _rv)")}, - {"CheckUpdate", (PyCFunction)Win_CheckUpdate, 1, - PyDoc_STR("() -> (Boolean _rv, EventRecord theEvent)")}, - {"MacFindWindow", (PyCFunction)Win_MacFindWindow, 1, - PyDoc_STR("(Point thePoint) -> (WindowPartCode _rv, WindowPtr window)")}, - {"FrontWindow", (PyCFunction)Win_FrontWindow, 1, - PyDoc_STR("() -> (WindowPtr _rv)")}, - {"FrontNonFloatingWindow", (PyCFunction)Win_FrontNonFloatingWindow, 1, - PyDoc_STR("() -> (WindowPtr _rv)")}, - {"GetFrontWindowOfClass", (PyCFunction)Win_GetFrontWindowOfClass, 1, - PyDoc_STR("(WindowClass inWindowClass, Boolean mustBeVisible) -> (WindowPtr _rv)")}, - {"FindWindowOfClass", (PyCFunction)Win_FindWindowOfClass, 1, - PyDoc_STR("(Point where, WindowClass inWindowClass) -> (WindowPtr outWindow, WindowPartCode outWindowPart)")}, - {"CreateStandardWindowMenu", (PyCFunction)Win_CreateStandardWindowMenu, 1, - PyDoc_STR("(OptionBits inOptions) -> (MenuHandle outMenu)")}, - {"CollapseAllWindows", (PyCFunction)Win_CollapseAllWindows, 1, - PyDoc_STR("(Boolean collapse) -> None")}, - {"GetAvailableWindowPositioningBounds", (PyCFunction)Win_GetAvailableWindowPositioningBounds, 1, - PyDoc_STR("(GDHandle inDevice) -> (Rect outAvailableRect)")}, - {"DisableScreenUpdates", (PyCFunction)Win_DisableScreenUpdates, 1, - PyDoc_STR("() -> None")}, - {"EnableScreenUpdates", (PyCFunction)Win_EnableScreenUpdates, 1, - PyDoc_STR("() -> None")}, - {"PinRect", (PyCFunction)Win_PinRect, 1, - PyDoc_STR("(Rect theRect, Point thePt) -> (long _rv)")}, - {"GetGrayRgn", (PyCFunction)Win_GetGrayRgn, 1, - PyDoc_STR("() -> (RgnHandle _rv)")}, - {"GetWindowFromPort", (PyCFunction)Win_GetWindowFromPort, 1, - PyDoc_STR("(CGrafPtr port) -> (WindowPtr _rv)")}, - {"WhichWindow", (PyCFunction)Win_WhichWindow, 1, - PyDoc_STR("Resolve an integer WindowPtr address to a Window object")}, - {"FindWindow", (PyCFunction)Win_FindWindow, 1, - PyDoc_STR("(Point thePoint) -> (short _rv, WindowPtr theWindow)")}, - {NULL, NULL, 0} -#endif /* __LP64__ */ -}; - - - -#ifndef __LP64__ -/* Return the object corresponding to the window, or NULL */ - -PyObject * -WinObj_WhichWindow(WindowPtr w) -{ - PyObject *it; - - if (w == NULL) { - it = Py_None; - Py_INCREF(it); - } else { - it = (PyObject *) GetWRefCon(w); - if (it == NULL || !IsPointerValid((Ptr)it) || ((WindowObject *)it)->ob_itself != w || !WinObj_Check(it)) { - it = WinObj_New(w); - ((WindowObject *)it)->ob_freeit = NULL; - } else { - Py_INCREF(it); - } - } - return it; -} - -#endif /* __LP64__ */ - -void init_Win(void) -{ - PyObject *m; -#ifndef __LP64__ - PyObject *d; - - PyMac_INIT_TOOLBOX_OBJECT_NEW(WindowPtr, WinObj_New); - PyMac_INIT_TOOLBOX_OBJECT_NEW(WindowPtr, WinObj_WhichWindow); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(WindowPtr, WinObj_Convert); - -#endif /* __LP64__ */ - - m = Py_InitModule("_Win", Win_methods); -#ifndef __LP64__ - d = PyModule_GetDict(m); - Win_Error = PyMac_GetOSErrException(); - if (Win_Error == NULL || - PyDict_SetItemString(d, "Error", Win_Error) != 0) - return; - Window_Type.ob_type = &PyType_Type; - if (PyType_Ready(&Window_Type) < 0) return; - Py_INCREF(&Window_Type); - PyModule_AddObject(m, "Window", (PyObject *)&Window_Type); - /* Backward-compatible name */ - Py_INCREF(&Window_Type); - PyModule_AddObject(m, "WindowType", (PyObject *)&Window_Type); -#endif /* __LP64__ */ -} - -/* ======================== End module _Win ========================= */ - diff --git a/project/jni/python/src/Mac/Modules/win/winedit.py b/project/jni/python/src/Mac/Modules/win/winedit.py deleted file mode 100644 index 01cfe86f3..000000000 --- a/project/jni/python/src/Mac/Modules/win/winedit.py +++ /dev/null @@ -1,69 +0,0 @@ -# These are inline-routines/defines, so we do them "by hand" -# - -f = Method(Boolean, 'IsWindowVisible', - (WindowRef, 'theWindow', InMode), -) -methods.append(f) - -f = Method(void, 'GetWindowStructureRgn', - (WindowRef, 'theWindow', InMode), - (RgnHandle, 'r', InMode), -) -methods.append(f) - -f = Method(void, 'GetWindowContentRgn', - (WindowRef, 'theWindow', InMode), - (RgnHandle, 'r', InMode), -) -methods.append(f) - -f = Method(void, 'GetWindowUpdateRgn', - (WindowRef, 'theWindow', InMode), - (RgnHandle, 'r', InMode), -) -methods.append(f) - -f = Method(ExistingWindowPtr, 'GetNextWindow', - (WindowRef, 'theWindow', InMode), -) -methods.append(f) - -f = Function(short, 'FindWindow', - (Point, 'thePoint', InMode), - (ExistingWindowPtr, 'theWindow', OutMode), -) -functions.append(f) - -f = Method(void, 'MoveWindow', - (WindowPtr, 'theWindow', InMode), - (short, 'hGlobal', InMode), - (short, 'vGlobal', InMode), - (Boolean, 'front', InMode), -) -methods.append(f) - -f = Method(void, 'ShowWindow', - (WindowPtr, 'theWindow', InMode), -) -methods.append(f) - -# -# A method to set the auto-dispose flag -# -AutoDispose_body = """ -int onoff, old = 0; -if (!PyArg_ParseTuple(_args, "i", &onoff)) - return NULL; -if ( _self->ob_freeit ) - old = 1; -if ( onoff ) - _self->ob_freeit = PyMac_AutoDisposeWindow; -else - _self->ob_freeit = NULL; -_res = Py_BuildValue("i", old); -return _res; -""" -f = ManualGenerator("AutoDispose", AutoDispose_body) -f.docstring = lambda: "(int)->int. Automatically DisposeHandle the object on Python object cleanup" -methods.append(f) diff --git a/project/jni/python/src/Mac/Modules/win/winscan.py b/project/jni/python/src/Mac/Modules/win/winscan.py deleted file mode 100644 index 8a2f726da..000000000 --- a/project/jni/python/src/Mac/Modules/win/winscan.py +++ /dev/null @@ -1,129 +0,0 @@ -# Scan an Apple header file, generating a Python file of generator calls. -import sys -from bgenlocations import TOOLBOXDIR, BGENDIR -sys.path.append(BGENDIR) - -from scantools import Scanner - -def main(): - input = "MacWindows.h" - output = "wingen.py" - defsoutput = TOOLBOXDIR + "Windows.py" - scanner = MyScanner(input, output, defsoutput) - scanner.scan() - scanner.close() - print "=== Testing definitions output code ===" - execfile(defsoutput, {}, {}) - print "=== Done scanning and generating, now importing the generated code... ===" - import winsupport - print "=== Done. It's up to you to compile it now! ===" - -class MyScanner(Scanner): - - def destination(self, type, name, arglist): - classname = "Function" - listname = "functions" - if arglist: - t, n, m = arglist[0] - if t in ("WindowPtr", "WindowPeek", "WindowRef") and m == "InMode": - classname = "Method" - listname = "methods" - return classname, listname - - def writeinitialdefs(self): - self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") - self.defsfile.write("false = 0\n") - self.defsfile.write("true = 1\n") - self.defsfile.write("kWindowNoConstrainAttribute = 0x80000000\n") - - def makeblacklistnames(self): - return [ - 'DisposeWindow', # Implied when the object is deleted - 'CloseWindow', - 'SetWindowProperty', # For the moment - 'GetWindowProperty', - 'GetWindowPropertySize', - 'RemoveWindowProperty', - 'MacCloseWindow', - 'GetWindowList', # Don't know whether this is safe... - # Constants with funny definitions - 'kMouseUpOutOfSlop', - 'kAllWindowClasses', - 'kWindowNoConstrainAttribute', - # OS8 only: - 'GetAuxWin', - 'GetWindowDataHandle', - 'SaveOld', - 'DrawNew', - 'SetWinColor', - 'SetDeskCPat', - 'InitWindows', - 'InitFloatingWindows', - 'GetWMgrPort', - 'GetCWMgrPort', - 'ValidRgn', # Use versions with Window in their name - 'ValidRect', - 'InvalRgn', - 'InvalRect', - 'IsValidWindowPtr', # I think this is useless for Python, but not sure... - 'GetWindowZoomFlag', # Not available in Carbon - 'GetWindowTitleWidth', # Ditto - 'GetWindowGoAwayFlag', - 'GetWindowSpareFlag', - ] - - def makeblacklisttypes(self): - return [ - 'ProcPtr', - 'DragGrayRgnUPP', - 'WindowPaintUPP', - 'Collection', # For now, to be done later - 'WindowDefSpec', # Too difficult for now - 'WindowDefSpec_ptr', - 'EventRef', #TBD - ] - - def makerepairinstructions(self): - return [ - - # GetWTitle - ([("Str255", "*", "InMode")], - [("*", "*", "OutMode")]), - - ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")], - [("InBuffer", "*", "*")]), - - ([("void", "*", "OutMode"), ("long", "*", "InMode"), - ("long", "*", "OutMode")], - [("VarVarOutBuffer", "*", "InOutMode")]), - - ([("void", "wStorage", "OutMode")], - [("NullStorage", "*", "InMode")]), - - # match FindWindowOfClass - ([("WindowRef", "outWindow", "OutMode"), ("WindowPartCode", "outWindowPart", "OutMode")], - [("ExistingWindowPtr", "*", "OutMode"), ("WindowPartCode", "outWindowPart", "OutMode")]), - # then match CreateNewWindow and CreateWindowFromResource - ([("WindowRef", "outWindow", "OutMode")], - [("WindowRef", "*", "*")]), - - ([("WindowPtr", "*", "OutMode")], - [("ExistingWindowPtr", "*", "*")]), - ([("WindowRef", "*", "OutMode")], # Same, but other style headerfiles - [("ExistingWindowPtr", "*", "*")]), - - ([("WindowPtr", "FrontWindow", "ReturnMode")], - [("ExistingWindowPtr", "*", "*")]), - ([("WindowRef", "FrontWindow", "ReturnMode")], # Ditto - [("ExistingWindowPtr", "*", "*")]), - ([("WindowPtr", "FrontNonFloatingWindow", "ReturnMode")], - [("ExistingWindowPtr", "*", "*")]), - ([("WindowRef", "FrontNonFloatingWindow", "ReturnMode")], # Ditto - [("ExistingWindowPtr", "*", "*")]), - - ([("Rect_ptr", "*", "ReturnMode")], # GetWindowXXXState accessors - [("void", "*", "ReturnMode")]), - ] - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/Modules/win/winsupport.py b/project/jni/python/src/Mac/Modules/win/winsupport.py deleted file mode 100644 index 08a0379c5..000000000 --- a/project/jni/python/src/Mac/Modules/win/winsupport.py +++ /dev/null @@ -1,226 +0,0 @@ -# This script generates a Python interface for an Apple Macintosh Manager. -# It uses the "bgen" package to generate C code. -# The function specifications are generated by scanning the mamager's header file, -# using the "scantools" package (customized for this particular manager). - -import string - -# Declarations that change for each manager -MACHEADERFILE = 'Windows.h' # The Apple header file -MODNAME = '_Win' # The name of the module -OBJECTNAME = 'Window' # The basic name of the objects used here - -# The following is *usually* unchanged but may still require tuning -MODPREFIX = 'Win' # The prefix for module-wide routines -OBJECTTYPE = OBJECTNAME + 'Ptr' # The C type used to represent them -OBJECTPREFIX = MODPREFIX + 'Obj' # The prefix for object methods -INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner -EDITFILE = string.lower(MODPREFIX) + 'edit.py' # The manual definitions -OUTPUTFILE = MODNAME + "module.c" # The file generated by this program - -from macsupport import * - -# Create the type objects - -WindowPtr = OpaqueByValueType(OBJECTTYPE, OBJECTPREFIX) -WindowRef = WindowPtr -WindowPeek = OpaqueByValueType("WindowPeek", OBJECTPREFIX) -WindowPeek.passInput = lambda name: "(WindowPeek)(%s)" % name -CGrafPtr = OpaqueByValueType("CGrafPtr", "GrafObj") -GrafPtr = OpaqueByValueType("GrafPtr", "GrafObj") - -DragReference = OpaqueByValueType("DragReference", "DragObj") - -RgnHandle = OpaqueByValueType("RgnHandle", "ResObj") -PicHandle = OpaqueByValueType("PicHandle", "ResObj") -WCTabHandle = OpaqueByValueType("WCTabHandle", "ResObj") -AuxWinHandle = OpaqueByValueType("AuxWinHandle", "ResObj") -PixPatHandle = OpaqueByValueType("PixPatHandle", "ResObj") -AliasHandle = OpaqueByValueType("AliasHandle", "ResObj") -IconRef = OpaqueByValueType("IconRef", "ResObj") - -WindowRegionCode = Type("WindowRegionCode", "H") -WindowClass = Type("WindowClass", "l") -WindowAttributes = Type("WindowAttributes", "l") -WindowPositionMethod = Type("WindowPositionMethod", "l") -WindowTransitionEffect = Type("WindowTransitionEffect", "l") -WindowTransitionAction = Type("WindowTransitionAction", "l") -RGBColor = OpaqueType("RGBColor", "QdRGB") -RGBColor_ptr = RGBColor -ScrollWindowOptions = Type("ScrollWindowOptions", "l") -WindowPartCode = Type("WindowPartCode", "h") -WindowDefPartCode = Type("WindowDefPartCode", "h") -WindowModality = Type("WindowModality", "l") -GDHandle = OpaqueByValueType("GDHandle", "ResObj") -WindowConstrainOptions = Type("WindowConstrainOptions", "l") - -PropertyCreator = OSTypeType("PropertyCreator") -PropertyTag = OSTypeType("PropertyTag") - -includestuff = includestuff + """ -#include - -#ifdef USE_TOOLBOX_OBJECT_GLUE -extern PyObject *_WinObj_New(WindowRef); -extern PyObject *_WinObj_WhichWindow(WindowRef); -extern int _WinObj_Convert(PyObject *, WindowRef *); - -#define WinObj_New _WinObj_New -#define WinObj_WhichWindow _WinObj_WhichWindow -#define WinObj_Convert _WinObj_Convert -#endif - -/* Classic calls that we emulate in carbon mode */ -#define GetWindowUpdateRgn(win, rgn) GetWindowRegion((win), kWindowUpdateRgn, (rgn)) -#define GetWindowStructureRgn(win, rgn) GetWindowRegion((win), kWindowStructureRgn, (rgn)) -#define GetWindowContentRgn(win, rgn) GetWindowRegion((win), kWindowContentRgn, (rgn)) - -/* Function to dispose a window, with a "normal" calling sequence */ -static void -PyMac_AutoDisposeWindow(WindowPtr w) -{ - DisposeWindow(w); -} -""" - -finalstuff = finalstuff + """ -/* Return the object corresponding to the window, or NULL */ - -PyObject * -WinObj_WhichWindow(WindowPtr w) -{ - PyObject *it; - - if (w == NULL) { - it = Py_None; - Py_INCREF(it); - } else { - it = (PyObject *) GetWRefCon(w); - if (it == NULL || !IsPointerValid((Ptr)it) || ((WindowObject *)it)->ob_itself != w || !WinObj_Check(it)) { - it = WinObj_New(w); - ((WindowObject *)it)->ob_freeit = NULL; - } else { - Py_INCREF(it); - } - } - return it; -} -""" - -initstuff = initstuff + """ - PyMac_INIT_TOOLBOX_OBJECT_NEW(WindowPtr, WinObj_New); - PyMac_INIT_TOOLBOX_OBJECT_NEW(WindowPtr, WinObj_WhichWindow); - PyMac_INIT_TOOLBOX_OBJECT_CONVERT(WindowPtr, WinObj_Convert); -""" - -class MyObjectDefinition(PEP253Mixin, GlobalObjectDefinition): - def outputCheckNewArg(self): - Output("if (itself == NULL) return PyMac_Error(resNotFound);") - Output("/* XXXX Or should we use WhichWindow code here? */") - def outputStructMembers(self): - GlobalObjectDefinition.outputStructMembers(self) - Output("void (*ob_freeit)(%s ptr);", self.itselftype) - def outputInitStructMembers(self): - GlobalObjectDefinition.outputInitStructMembers(self) - Output("it->ob_freeit = NULL;") - Output("if (GetWRefCon(itself) == 0)") - OutLbrace() - Output("SetWRefCon(itself, (long)it);") - Output("it->ob_freeit = PyMac_AutoDisposeWindow;") - OutRbrace() - def outputCheckConvertArg(self): - Out(""" - if (v == Py_None) { *p_itself = NULL; return 1; } - if (PyInt_Check(v)) { *p_itself = (WindowPtr)PyInt_AsLong(v); return 1; } - """) - OutLbrace() - Output("DialogRef dlg;") - OutLbrace("if (DlgObj_Convert(v, &dlg) && dlg)") - Output("*p_itself = GetDialogWindow(dlg);") - Output("return 1;") - OutRbrace() - Output("PyErr_Clear();") - OutRbrace() - def outputCleanupStructMembers(self): - Output("if (self->ob_freeit && self->ob_itself)") - OutLbrace() - Output("SetWRefCon(self->ob_itself, 0);") - Output("self->ob_freeit(self->ob_itself);") - OutRbrace() - Output("self->ob_itself = NULL;") - Output("self->ob_freeit = NULL;") - - def outputCompare(self): - Output() - Output("static int %s_compare(%s *self, %s *other)", self.prefix, self.objecttype, self.objecttype) - OutLbrace() - Output("if ( self->ob_itself > other->ob_itself ) return 1;") - Output("if ( self->ob_itself < other->ob_itself ) return -1;") - Output("return 0;") - OutRbrace() - - def outputHash(self): - Output() - Output("static int %s_hash(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("return (int)self->ob_itself;") - OutRbrace() - - def outputRepr(self): - Output() - Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype) - OutLbrace() - Output("char buf[100];") - Output("""sprintf(buf, "", (unsigned)self, (unsigned)self->ob_itself);""") - Output("return PyString_FromString(buf);") - OutRbrace() - -## def outputFreeIt(self, itselfname): -## Output("DisposeWindow(%s);", itselfname) -# From here on it's basically all boiler plate... - -# Create the generator groups and link them -module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff) -object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE) -module.addobject(object) - -# Create the generator classes used to populate the lists -Function = OSErrWeakLinkFunctionGenerator -Method = OSErrWeakLinkMethodGenerator - -# Create and populate the lists -functions = [] -methods = [] -execfile(INPUTFILE) - -# Add manual routines for converting integer WindowPtr's (as returned by -# various event routines) and Dialog objects to a WindowObject. -whichwin_body = """ -long ptr; - -if ( !PyArg_ParseTuple(_args, "i", &ptr) ) - return NULL; -_res = WinObj_WhichWindow((WindowPtr)ptr); -return _res; -""" - -f = ManualGenerator("WhichWindow", whichwin_body) -f.docstring = lambda : "Resolve an integer WindowPtr address to a Window object" - -functions.append(f) - -# And add the routines that access the internal bits of a window struct. They -# are currently #defined in Windows.h, they will be real routines in Copland -# (at which time this execfile can go) -execfile(EDITFILE) - -# add the populated lists to the generator groups -# (in a different wordl the scan program would generate this) -for f in functions: module.add(f) -for f in methods: object.add(f) - - - -# generate output (open the output file as late as possible) -SetOutputFileName(OUTPUTFILE) -module.generate() diff --git a/project/jni/python/src/Mac/PythonLauncher/English.lproj/Credits.rtf b/project/jni/python/src/Mac/PythonLauncher/English.lproj/Credits.rtf deleted file mode 100644 index 930ca221a..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/English.lproj/Credits.rtf +++ /dev/null @@ -1,30 +0,0 @@ -{\rtf1\mac\ansicpg10000\cocoartf100 -{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;} -{\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural - -\f0\b\fs24 \cf0 Engineering: -\f1\b0 \ - Jack Jansen\ -\ - -\f0\b Human Interface Design: -\f1\b0 \ - Jack Jansen\ -\ - -\f0\b Testing: -\f1\b0 \ - Jack Jansen\ - Pythonmac-SIG@python.org\ -\ - -\f0\b Documentation: -\f1\b0 \ - Missing\ -\ - -\f0\b With special thanks to: -\f1\b0 \ - Guido, of course\ -} \ No newline at end of file diff --git a/project/jni/python/src/Mac/PythonLauncher/English.lproj/MainMenu.nib/classes.nib b/project/jni/python/src/Mac/PythonLauncher/English.lproj/MainMenu.nib/classes.nib deleted file mode 100644 index 47b40aba3..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/English.lproj/MainMenu.nib/classes.nib +++ /dev/null @@ -1,12 +0,0 @@ -{ - IBClasses = ( - {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, - { - ACTIONS = {showPreferences = id; }; - CLASS = MyAppDelegate; - LANGUAGE = ObjC; - SUPERCLASS = NSObject; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/project/jni/python/src/Mac/PythonLauncher/English.lproj/MainMenu.nib/info.nib b/project/jni/python/src/Mac/PythonLauncher/English.lproj/MainMenu.nib/info.nib deleted file mode 100644 index b96759af1..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/English.lproj/MainMenu.nib/info.nib +++ /dev/null @@ -1,21 +0,0 @@ - - - - - IBDocumentLocation - 99 33 356 240 0 0 800 578 - IBEditorPositions - - 29 - 82 396 318 44 0 0 800 578 - - IBFramework Version - 263.2 - IBOpenObjects - - 29 - - IBSystem Version - 5S66 - - diff --git a/project/jni/python/src/Mac/PythonLauncher/English.lproj/MainMenu.nib/objects.nib b/project/jni/python/src/Mac/PythonLauncher/English.lproj/MainMenu.nib/objects.nib deleted file mode 100644 index 532a5c828967455b622d4670969ba546ec4adf21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5016 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 diff --git a/project/jni/python/src/Mac/PythonLauncher/English.lproj/MyDocument.nib/classes.nib b/project/jni/python/src/Mac/PythonLauncher/English.lproj/MyDocument.nib/classes.nib deleted file mode 100644 index bcdc0cdf0..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/English.lproj/MyDocument.nib/classes.nib +++ /dev/null @@ -1,26 +0,0 @@ -{ - IBClasses = ( - {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, - { - ACTIONS = {"do_apply" = id; "do_cancel" = id; "do_reset" = id; "do_run" = id; }; - CLASS = MyDocument; - LANGUAGE = ObjC; - OUTLETS = { - commandline = NSTextField; - debug = NSButton; - honourhashbang = NSButton; - inspect = NSButton; - interpreter = NSTextField; - nosite = NSButton; - optimize = NSButton; - others = NSTextField; - scriptargs = NSTextField; - tabs = NSButton; - verbose = NSButton; - "with_terminal" = NSButton; - }; - SUPERCLASS = NSDocument; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/project/jni/python/src/Mac/PythonLauncher/English.lproj/MyDocument.nib/info.nib b/project/jni/python/src/Mac/PythonLauncher/English.lproj/MyDocument.nib/info.nib deleted file mode 100644 index e258c7220..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/English.lproj/MyDocument.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBDocumentLocation - 398 60 356 240 0 0 1024 746 - IBFramework Version - 291.0 - IBOpenObjects - - 5 - - IBSystem Version - 6L60 - - diff --git a/project/jni/python/src/Mac/PythonLauncher/English.lproj/MyDocument.nib/objects.nib b/project/jni/python/src/Mac/PythonLauncher/English.lproj/MyDocument.nib/objects.nib deleted file mode 100644 index 0473a31a21f113e527bc0c4f1aa9dd0a26653a4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4845 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 D$`kO> diff --git a/project/jni/python/src/Mac/PythonLauncher/English.lproj/PreferenceWindow.nib/classes.nib b/project/jni/python/src/Mac/PythonLauncher/English.lproj/PreferenceWindow.nib/classes.nib deleted file mode 100644 index 467aa8b26..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/English.lproj/PreferenceWindow.nib/classes.nib +++ /dev/null @@ -1,26 +0,0 @@ -{ - IBClasses = ( - {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, - { - ACTIONS = {"do_apply" = id; "do_filetype" = id; "do_reset" = id; }; - CLASS = PreferencesWindowController; - LANGUAGE = ObjC; - OUTLETS = { - commandline = NSTextField; - debug = NSButton; - filetype = NSPopUpButton; - honourhashbang = NSButton; - inspect = NSButton; - interpreter = NSTextField; - nosite = NSButton; - optimize = NSButton; - others = NSTextField; - tabs = NSButton; - verbose = NSButton; - "with_terminal" = NSButton; - }; - SUPERCLASS = NSWindowController; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/project/jni/python/src/Mac/PythonLauncher/English.lproj/PreferenceWindow.nib/info.nib b/project/jni/python/src/Mac/PythonLauncher/English.lproj/PreferenceWindow.nib/info.nib deleted file mode 100644 index bc558f7e8..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/English.lproj/PreferenceWindow.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBDocumentLocation - 565 235 519 534 0 0 1280 1002 - IBFramework Version - 364.0 - IBOpenObjects - - 5 - - IBSystem Version - 7H63 - - diff --git a/project/jni/python/src/Mac/PythonLauncher/English.lproj/PreferenceWindow.nib/objects.nib b/project/jni/python/src/Mac/PythonLauncher/English.lproj/PreferenceWindow.nib/objects.nib deleted file mode 100644 index 3dfed33cbdb5b263001bd8bc5a1fd7ec268d704c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5882 zcmZSKE~zX?O(`xZN=?jdWPZ`Y=+M&A!si$4>Exf3m6}}Ql30@1$nc=0g~KlxBErx* z38KWgw74Wc7b2)RrG?1>q?N-jIJl%JGcTQSN(-a5bU;yRT53^hUUF)2cxGNoez|jg zUP)1YPEKl3TWebjW2W@97O>e)r6nc#c?>NroPNPjHJU9gY<|IEnW^QPEiK%B!9l6T z1^Ia?sYMJ^Cbi4~IfB(M*eSn4YYvFpI+LM=$HBqDAq@&3j`S@pNleN~bu21MtYm0u zVfPD$FsIDq1ew6=7aWjZ5Ly7SzLDX~tVs)JHgPd9FwAdlZEbC2nAFI)sgaRQih%({ zPFgsr6$D#YGLw@X7#JB^T3Q5AjBrlP$!TOV1c#w-YF?>lNop=wjNwvC3y)tg#3GQ0 zJ(%y9T#}ie2jUBYy$fPFPHADv%xr3L{KwG5!N9=K!UFPFYYSL`TYg@N=#-f%Ev(VT zX34Q^3=9lX3=9na{xkS6lrkhUWHO{MBr>=&6fq<+Y9mGn8wpLIqbNL0sLZp#t{uEH~vq6L!8O}^;VF5XVp=HAiF8`8@ z)FM#47q_)6p2<9E^Q4w7leV_-W;!@{dV*9rSYX;1>)@t3j#7`K3k4shU%!wal2o?icKto0y&o(gX5u zYF?>xMrv|)Zeme(TU%?(-f8<l zdI(85V=I#K))wYWhs-8h1_p+$3~gV>&zyh z254c&z`)A@!jRyA1W0QOH@HZ3a7eSV%4}_g1awOauU|0O80Y+)(%d}FDJ>kJa@WBj zIT=!%`<3P*kp zC{e?a6rKgEgM>!E+sTD zfMRLV4N&Uc-wG}%W`WWq4=DA5YMR7GM!!ae8$zHAdP4{$O@dMiBREWE%usO5$;mHQ z$S+GRD#}brRVdFa$xu*MRLIOzD25b(aKC-s(8zE?lBvnVCh-66-Jo(%7*_p&i@jiQ zQOG=HQp=1Ppjx{;vm`mAt*y1Kt*y1Sm5Hg5v7?c(161#U=t-9#$pS3NC)UW=)5zEZ zk_6GP@}z}5Ee(_gk{K94p$#fS7*-+jOzUojTj$%ZFf%ZK1K=1a`@#c2JT#V%fgzR; zW)?U*f|3JrLB#8vpPQSQm!go9nU`wSb{~`tK#~1tH^Zs(ZIfE}gAzWPxs8mqv4RW? zv4VI_=JCucNi8ZUN-aq(LMqq(BO45E8^9f0(8%c9$gm3>W4nY<3`dSJiJ;OvQ1m1! zgrpYbX67a4D3pU+LWshX2{opEw1SFrurI)c8z_0?2RAZ`34_90Oc=$g6Dylq3jaAm zizj%1uNVB8B|Yl7dnsJ4CS9F%!iD;f)Nv zU^{wo+aU-FnB2^&RD~pH3k2Z{aV$2pAo;?vkzo_q{7tycmvqT2230H2AX3OrQz*_X zN!2T;MA#!mz#i>JhG$@Vp5eAf-Zc+wO^BnDLUMjyab|HzYF=`sLNchOmYJ81uuT@5 zZO10fo7uz!D`dmD8yT6vxrj*^CGt@SrQJ{d*IjERTZ)Dg4O6MSY(tJpgY=b4%+(w3z;4nIg zJB(z(WmjTyNoHB9LN2JWnV43RT7*#}%)|_#dDFHooyNLwn(Vx3O7o^&yE5(1!fEs7 zPg}Zh+LcSwm=;bGnKy0c)@f4nrfuE|YQhWn1w*=VA*s0qIf*5yjf_90wD4wTg8E$G zmbpVR7gKU0!#7AqZz`x@0JVm>k@|t4Rv^1ya6n>SY7VGN!2+r(+ZMJmwy=OqVPI%v zWoTr6wT^Kg*o-feTGuhOO`Z1j%Cz|lr!7>Uc4^@>&V|zi=S@4haN7Tc)5PaZQG!N9wh4fb2rY&umF$1+{**5J8q{jjBtYOw4E(8W^h9~AE1tgVcRqjh|?flNE5@hX;LTxCT-I;Lj+*m zthQ-i(d+Hc%8O%P-n z+!r7%|3Ush3UQ;hX-6S}0cy#EdnQJPZPOIc#6VgPK@5Yr-3Z*J;X(96Q%e|HT3G#p zgHuaDjY&_2Hc)d~4b;>Z@eB6LO!6-+$w@77&dCoa-1>FpVjMSo3aCazC zA+0ngMa{hTal?v{qnJM`S<@u#KDGI4&sYME<#isk+4lsmYmXnaK*7d6^}di8+~7 ziQp;~Vx>4pqlRx{cB(>pYF=tlVo7QWyh>3h&dE&AD9Nc*D9%j;kLiE|fC;2W&c7fv z59W>>a7bn56_l3fL+d-RN>-3crI3uwVuj3Ng_4X^h0wgr3Wa27E3YJ9At_a%s5B4c z7N5OSLHU^*DhX-iCw zEvN`6g>&Q=lw^WxPN*0tC9vg#h9tmY>9cn#sLWs~Nlb$ALD_)44ANwPY69hNUQpva z9vTxlAc>Y1QE*Cy4sgNKTO-4H-@Qx0Wk5=PJj~%%AT4EkIYHu_Df#h5pw<^y&}Xj# zNRT5XH77M4JR~uxrEISVNDQPfv7jKQ60ERnuOK$Tnb-uyu?b3H6O_di4A=`QEU;!6 zbx5lblH)*icu8tr31lPzl(NCY39xu7+slM$w$I*cAVC!0`s|$wDyX@^xd75?2Za_? zDOXBjNg||w0}>6`3rY}J9cK}onvXePwmYmE$3T4u~Jg_@FI1Ti5qPa#pEAh9GPFEJNZNI*w*FdRG;R7CS-#e8rGwgKpp>cr z>NFJ>BqoCjgtkeoGo4zP95Ndj=49V)Wav%4EpBzYChGP~liT^hw=)B7Pi4H_$S@=G z_ScNt!H%~Z8QS7+E1BN@Z+*KW{C2AEZ4u+!;m)@k878OQ_IJ3wS?l&Z!`qDvO|iEN zLvCjW-oB)FJJ#d2pylmGhH2@yy*X|-GW4h1zLs>mF8cN#^V>VMZzp=+Ze*C1b-R(F zJMnfSLr22xrJA=FvfZwVyv=EMJKgVgwA<}ar`tz$Z#Ocu#N93pyM0LKwu0I1;?Uc< zLAPa%ZnN6nzM_9y%HVb*!^G6vOg6XY+uv?vXo$J3&U$;R#_eRE+wq>aBVA|a%wz!d XZv{M^ob!|O6Wxjub5qOnLF0P>rNd;m diff --git a/project/jni/python/src/Mac/PythonLauncher/FileSettings.h b/project/jni/python/src/Mac/PythonLauncher/FileSettings.h deleted file mode 100644 index d807bae59..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/FileSettings.h +++ /dev/null @@ -1,64 +0,0 @@ -// -// FileSettings.h -// PythonLauncher -// -// Created by Jack Jansen on Sun Jul 21 2002. -// Copyright (c) 2002 __MyCompanyName__. All rights reserved. -// - -#import - -@protocol FileSettingsSource -- (NSString *) interpreter; -- (BOOL) honourhashbang; -- (BOOL) debug; -- (BOOL) verbose; -- (BOOL) inspect; -- (BOOL) optimize; -- (BOOL) nosite; -- (BOOL) tabs; -- (NSString *) others; -- (BOOL) with_terminal; -- (NSString *) scriptargs; -@end - -@interface FileSettings : NSObject -{ - NSString *interpreter; // The pathname of the interpreter to use - NSArray *interpreters; // List of known interpreters - BOOL honourhashbang; // #! line overrides interpreter - BOOL debug; // -d option: debug parser - BOOL verbose; // -v option: verbose import - BOOL inspect; // -i option: interactive mode after script - BOOL optimize; // -O option: optimize bytecode - BOOL nosite; // -S option: don't import site.py - BOOL tabs; // -t option: warn about inconsistent tabs - NSString *others; // other options - NSString *scriptargs; // script arguments (not for preferences) - BOOL with_terminal; // Run in terminal window - - FileSettings *origsource; - NSString *prefskey; -} - -+ (id)getDefaultsForFileType: (NSString *)filetype; -+ (id)getFactorySettingsForFileType: (NSString *)filetype; -+ (id)newSettingsForFileType: (NSString *)filetype; - -//- (id)init; -- (id)initForFileType: (NSString *)filetype; -- (id)initForFSDefaultFileType: (NSString *)filetype; -- (id)initForDefaultFileType: (NSString *)filetype; -//- (id)initWithFileSettings: (FileSettings *)source; - -- (void)updateFromSource: (id )source; -- (NSString *)commandLineForScript: (NSString *)script; - -//- (void)applyFactorySettingsForFileType: (NSString *)filetype; -//- (void)saveDefaults; -//- (void)applyUserDefaults: (NSString *)filetype; -- (void)applyValuesFromDict: (NSDictionary *)dict; -- (void)reset; -- (NSArray *) interpreters; - -@end diff --git a/project/jni/python/src/Mac/PythonLauncher/FileSettings.m b/project/jni/python/src/Mac/PythonLauncher/FileSettings.m deleted file mode 100644 index 1f3695eec..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/FileSettings.m +++ /dev/null @@ -1,313 +0,0 @@ -// -// FileSettings.m -// PythonLauncher -// -// Created by Jack Jansen on Sun Jul 21 2002. -// Copyright (c) 2002 __MyCompanyName__. All rights reserved. -// - -#import "FileSettings.h" - -@implementation FileSettings - -+ (id)getFactorySettingsForFileType: (NSString *)filetype -{ - static FileSettings *fsdefault_py, *fsdefault_pyw, *fsdefault_pyc; - FileSettings **curdefault; - - if ([filetype isEqualToString: @"Python Script"]) { - curdefault = &fsdefault_py; - } else if ([filetype isEqualToString: @"Python GUI Script"]) { - curdefault = &fsdefault_pyw; - } else if ([filetype isEqualToString: @"Python Bytecode Document"]) { - curdefault = &fsdefault_pyc; - } else { - NSLog(@"Funny File Type: %@\n", filetype); - curdefault = &fsdefault_py; - filetype = @"Python Script"; - } - if (!*curdefault) { - *curdefault = [[FileSettings new] initForFSDefaultFileType: filetype]; - } - return *curdefault; -} - -+ (id)getDefaultsForFileType: (NSString *)filetype -{ - static FileSettings *default_py, *default_pyw, *default_pyc; - FileSettings **curdefault; - - if ([filetype isEqualToString: @"Python Script"]) { - curdefault = &default_py; - } else if ([filetype isEqualToString: @"Python GUI Script"]) { - curdefault = &default_pyw; - } else if ([filetype isEqualToString: @"Python Bytecode Document"]) { - curdefault = &default_pyc; - } else { - NSLog(@"Funny File Type: %@\n", filetype); - curdefault = &default_py; - filetype = @"Python Script"; - } - if (!*curdefault) { - *curdefault = [[FileSettings new] initForDefaultFileType: filetype]; - } - return *curdefault; -} - -+ (id)newSettingsForFileType: (NSString *)filetype -{ - FileSettings *cur; - - cur = [FileSettings new]; - [cur initForFileType: filetype]; - return [cur retain]; -} - -- (id)initWithFileSettings: (FileSettings *)source -{ - self = [super init]; - if (!self) return self; - - interpreter = [source->interpreter retain]; - honourhashbang = source->honourhashbang; - debug = source->debug; - verbose = source->verbose; - inspect = source->inspect; - optimize = source->optimize; - nosite = source->nosite; - tabs = source->tabs; - others = [source->others retain]; - scriptargs = [source->scriptargs retain]; - with_terminal = source->with_terminal; - prefskey = source->prefskey; - if (prefskey) [prefskey retain]; - - return self; -} - -- (id)initForFileType: (NSString *)filetype -{ - FileSettings *defaults; - - defaults = [FileSettings getDefaultsForFileType: filetype]; - self = [self initWithFileSettings: defaults]; - origsource = [defaults retain]; - return self; -} - -//- (id)init -//{ -// self = [self initForFileType: @"Python Script"]; -// return self; -//} - -- (id)initForFSDefaultFileType: (NSString *)filetype -{ - int i; - NSString *filename; - NSDictionary *dict; - static NSDictionary *factorySettings; - - self = [super init]; - if (!self) return self; - - if (factorySettings == NULL) { - NSBundle *bdl = [NSBundle mainBundle]; - NSString *path = [ bdl pathForResource: @"factorySettings" - ofType: @"plist"]; - factorySettings = [[NSDictionary dictionaryWithContentsOfFile: - path] retain]; - if (factorySettings == NULL) { - NSLog(@"Missing %@", path); - return NULL; - } - } - dict = [factorySettings objectForKey: filetype]; - if (dict == NULL) { - NSLog(@"factorySettings.plist misses file type \"%@\"", filetype); - interpreter = [@"no default found" retain]; - return NULL; - } - [self applyValuesFromDict: dict]; - interpreters = [dict objectForKey: @"interpreter_list"]; - interpreter = NULL; - for (i=0; i < [interpreters count]; i++) { - filename = [interpreters objectAtIndex: i]; - filename = [filename stringByExpandingTildeInPath]; - if ([[NSFileManager defaultManager] fileExistsAtPath: filename]) { - interpreter = [filename retain]; - break; - } - } - if (interpreter == NULL) - interpreter = [@"no default found" retain]; - origsource = NULL; - return self; -} - -- (void)applyUserDefaults: (NSString *)filetype -{ - NSUserDefaults *defaults; - NSDictionary *dict; - - defaults = [NSUserDefaults standardUserDefaults]; - dict = [defaults dictionaryForKey: filetype]; - if (!dict) - return; - [self applyValuesFromDict: dict]; -} - -- (id)initForDefaultFileType: (NSString *)filetype -{ - FileSettings *fsdefaults; - - fsdefaults = [FileSettings getFactorySettingsForFileType: filetype]; - self = [self initWithFileSettings: fsdefaults]; - if (!self) return self; - interpreters = [fsdefaults->interpreters retain]; - scriptargs = [@"" retain]; - [self applyUserDefaults: filetype]; - prefskey = [filetype retain]; - return self; -} - -- (void)reset -{ - if (origsource) { - [self updateFromSource: origsource]; - } else { - FileSettings *fsdefaults; - fsdefaults = [FileSettings getFactorySettingsForFileType: prefskey]; - [self updateFromSource: fsdefaults]; - } -} - -- (void)updateFromSource: (id )source -{ - interpreter = [[source interpreter] retain]; - honourhashbang = [source honourhashbang]; - debug = [source debug]; - verbose = [source verbose]; - inspect = [source inspect]; - optimize = [source optimize]; - nosite = [source nosite]; - tabs = [source tabs]; - others = [[source others] retain]; - scriptargs = [[source scriptargs] retain]; - with_terminal = [source with_terminal]; - // And if this is a user defaults object we also save the - // values - if (!origsource) { - NSUserDefaults *defaults; - NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: - interpreter, @"interpreter", - [NSNumber numberWithBool: honourhashbang], @"honourhashbang", - [NSNumber numberWithBool: debug], @"debug", - [NSNumber numberWithBool: verbose], @"verbose", - [NSNumber numberWithBool: inspect], @"inspect", - [NSNumber numberWithBool: optimize], @"optimize", - [NSNumber numberWithBool: nosite], @"nosite", - [NSNumber numberWithBool: tabs], @"tabs", - others, @"others", - scriptargs, @"scriptargs", - [NSNumber numberWithBool: with_terminal], @"with_terminal", - nil]; - defaults = [NSUserDefaults standardUserDefaults]; - [defaults setObject: dict forKey: prefskey]; - } -} - -- (void)applyValuesFromDict: (NSDictionary *)dict -{ - id value; - - value = [dict objectForKey: @"interpreter"]; - if (value) interpreter = [value retain]; - value = [dict objectForKey: @"honourhashbang"]; - if (value) honourhashbang = [value boolValue]; - value = [dict objectForKey: @"debug"]; - if (value) debug = [value boolValue]; - value = [dict objectForKey: @"verbose"]; - if (value) verbose = [value boolValue]; - value = [dict objectForKey: @"inspect"]; - if (value) inspect = [value boolValue]; - value = [dict objectForKey: @"optimize"]; - if (value) optimize = [value boolValue]; - value = [dict objectForKey: @"nosite"]; - if (value) nosite = [value boolValue]; - value = [dict objectForKey: @"tabs"]; - if (value) tabs = [value boolValue]; - value = [dict objectForKey: @"others"]; - if (value) others = [value retain]; - value = [dict objectForKey: @"scriptargs"]; - if (value) scriptargs = [value retain]; - value = [dict objectForKey: @"with_terminal"]; - if (value) with_terminal = [value boolValue]; -} - -- (NSString*)_replaceSingleQuotes: (NSString*)string -{ - /* Replace all single-quotes by '"'"', that way shellquoting will - * be correct when the result value is delimited using single quotes. - */ - NSArray* components = [string componentsSeparatedByString:@"'"]; - - return [components componentsJoinedByString:@"'\"'\"'"]; -} - -- (NSString *)commandLineForScript: (NSString *)script -{ - NSString *cur_interp = NULL; - NSString* script_dir = NULL; - char hashbangbuf[1024]; - FILE *fp; - char *p; - - script_dir = [script substringToIndex: - [script length]-[[script lastPathComponent] length]]; - - if (honourhashbang && - (fp=fopen([script cString], "r")) && - fgets(hashbangbuf, sizeof(hashbangbuf), fp) && - strncmp(hashbangbuf, "#!", 2) == 0 && - (p=strchr(hashbangbuf, '\n'))) { - *p = '\0'; - p = hashbangbuf + 2; - while (*p == ' ') p++; - cur_interp = [NSString stringWithCString: p]; - } - if (!cur_interp) - cur_interp = interpreter; - - return [NSString stringWithFormat: - @"cd '%@' && '%@'%s%s%s%s%s%s %@ '%@' %@ %s", - [self _replaceSingleQuotes:script_dir], - [self _replaceSingleQuotes:cur_interp], - debug?" -d":"", - verbose?" -v":"", - inspect?" -i":"", - optimize?" -O":"", - nosite?" -S":"", - tabs?" -t":"", - others, - [self _replaceSingleQuotes:script], - scriptargs ? scriptargs : @"", - with_terminal? "&& echo Exit status: $? && exit 1" : " &"]; -} - -- (NSArray *) interpreters { return interpreters;}; - -// FileSettingsSource protocol -- (NSString *) interpreter { return interpreter;}; -- (BOOL) honourhashbang { return honourhashbang; }; -- (BOOL) debug { return debug;}; -- (BOOL) verbose { return verbose;}; -- (BOOL) inspect { return inspect;}; -- (BOOL) optimize { return optimize;}; -- (BOOL) nosite { return nosite;}; -- (BOOL) tabs { return tabs;}; -- (NSString *) others { return others;}; -- (NSString *) scriptargs { return scriptargs;}; -- (BOOL) with_terminal { return with_terminal;}; - -@end diff --git a/project/jni/python/src/Mac/PythonLauncher/Info.plist.in b/project/jni/python/src/Mac/PythonLauncher/Info.plist.in deleted file mode 100644 index 3c726d752..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/Info.plist.in +++ /dev/null @@ -1,65 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeExtensions - - py - pyw - - CFBundleTypeIconFile - PythonSource.icns - CFBundleTypeName - Python Script - CFBundleTypeRole - Viewer - NSDocumentClass - MyDocument - - - CFBundleTypeExtensions - - pyc - pyo - - CFBundleTypeIconFile - PythonCompiled.icns - CFBundleTypeName - Python Bytecode Document - CFBundleTypeRole - Viewer - NSDocumentClass - MyDocument - - - CFBundleExecutable - PythonLauncher - CFBundleGetInfoString - %VERSION%, © 001-2006 Python Software Foundation - CFBundleIconFile - PythonLauncher.icns - CFBundleIdentifier - org.python.PythonLauncher - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Python Launcher - CFBundlePackageType - APPL - CFBundleShortVersionString - %VERSION% - CFBundleSignature - PytL - CFBundleVersion - %VERSION% - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/project/jni/python/src/Mac/PythonLauncher/Makefile.in b/project/jni/python/src/Mac/PythonLauncher/Makefile.in deleted file mode 100644 index d61e1aa59..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/Makefile.in +++ /dev/null @@ -1,82 +0,0 @@ -CC=@CC@ -LD=@CC@ -BASECFLAGS=@BASECFLAGS@ -OPT=@OPT@ -CFLAGS=$(BASECFLAGS) $(OPT) -LDFLAGS=@LDFLAGS@ -srcdir= @srcdir@ -VERSION= @VERSION@ -UNIVERSALSDK=@UNIVERSALSDK@ -builddir= ../.. - -RUNSHARED= @RUNSHARED@ -BUILDEXE= @BUILDEXEEXT@ -BUILDPYTHON= $(builddir)/python$(BUILDEXE) -PYTHONFRAMEWORK=@PYTHONFRAMEWORK@ - -# Deployment target selected during configure, to be checked -# by distutils -MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@ -@EXPORT_MACOSX_DEPLOYMENT_TARGET@export MACOSX_DEPLOYMENT_TARGET - -BUNDLEBULDER=$(srcdir)/../../Lib/plat-mac/bundlebuilder.py - -PYTHONAPPSDIR=/Applications/$(PYTHONFRAMEWORK) $(VERSION) -OBJECTS=FileSettings.o MyAppDelegate.o MyDocument.o PreferencesWindowController.o doscript.o main.o - -all: Python\ Launcher.app - -install: Python\ Launcher.app - test -d "$(DESTDIR)$(PYTHONAPPSDIR)" || mkdir -p "$(DESTDIR)$(PYTHONAPPSDIR)" - -test -d "$(DESTDIR)$(PYTHONAPPSDIR)/Python Launcher.app" && rm -r "$(DESTDIR)$(PYTHONAPPSDIR)/Python Launcher.app" - /bin/cp -r "Python Launcher.app" "$(DESTDIR)$(PYTHONAPPSDIR)" - touch "$(DESTDIR)$(PYTHONAPPSDIR)/Python Launcher.app" - -clean: - rm -f *.o "Python Launcher" - rm -rf "Python Launcher.app" - -Python\ Launcher.app: Info.plist \ - Python\ Launcher $(srcdir)/../Icons/PythonLauncher.icns \ - $(srcdir)/../Icons/PythonSource.icns \ - $(srcdir)/../Icons/PythonCompiled.icns \ - $(srcdir)/factorySettings.plist - rm -fr "Python Launcher.app" - $(RUNSHARED) $(BUILDPYTHON) $(BUNDLEBULDER) \ - --builddir=. \ - --name="Python Launcher" \ - --executable="Python Launcher" \ - --iconfile=$(srcdir)/../Icons/PythonLauncher.icns \ - --bundle-id=org.python.PythonLauncher \ - --resource=$(srcdir)/../Icons/PythonSource.icns \ - --resource=$(srcdir)/../Icons/PythonCompiled.icns \ - --resource=$(srcdir)/English.lproj \ - --resource=$(srcdir)/factorySettings.plist \ - --plist Info.plist \ - build - find "Python Launcher.app" -name '.svn' -print0 | xargs -0 rm -r - - -FileSettings.o: $(srcdir)/FileSettings.m - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/FileSettings.m - -MyAppDelegate.o: $(srcdir)/MyAppDelegate.m - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/MyAppDelegate.m - -MyDocument.o: $(srcdir)/MyDocument.m - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/MyDocument.m - -PreferencesWindowController.o: $(srcdir)/PreferencesWindowController.m - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/PreferencesWindowController.m - -doscript.o: $(srcdir)/doscript.m - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/doscript.m - -main.o: $(srcdir)/main.m - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/main.m - -Python\ Launcher: $(OBJECTS) - $(CC) $(LDFLAGS) -o "Python Launcher" $(OBJECTS) -framework AppKit -framework Carbon - -Info.plist: $(srcdir)/Info.plist.in - sed 's/%VERSION%/'"`$(RUNSHARED) $(BUILDPYTHON) -c 'import platform; print platform.python_version()'`"'/g' < $(srcdir)/Info.plist.in > Info.plist diff --git a/project/jni/python/src/Mac/PythonLauncher/MyAppDelegate.h b/project/jni/python/src/Mac/PythonLauncher/MyAppDelegate.h deleted file mode 100644 index 097b54177..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/MyAppDelegate.h +++ /dev/null @@ -1,15 +0,0 @@ -/* MyAppDelegate */ - -#import - -@interface MyAppDelegate : NSObject -{ - BOOL initial_action_done; - BOOL should_terminate; -} -- (id)init; -- (IBAction)showPreferences:(id)sender; -- (BOOL)shouldShowUI; -- (BOOL)shouldTerminate; -- (void)testFileTypeBinding; -@end diff --git a/project/jni/python/src/Mac/PythonLauncher/MyAppDelegate.m b/project/jni/python/src/Mac/PythonLauncher/MyAppDelegate.m deleted file mode 100644 index a5ba75107..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/MyAppDelegate.m +++ /dev/null @@ -1,96 +0,0 @@ -#import "MyAppDelegate.h" -#import "PreferencesWindowController.h" -#import -#import - -@implementation MyAppDelegate - -- (id)init -{ - self = [super init]; - initial_action_done = NO; - should_terminate = NO; - return self; -} - -- (IBAction)showPreferences:(id)sender -{ - [PreferencesWindowController getPreferencesWindow]; -} - -- (void)applicationDidFinishLaunching:(NSNotification *)notification -{ - // Test that the file mappings are correct - [self testFileTypeBinding]; - // If we were opened because of a file drag or doubleclick - // we've set initial_action_done in shouldShowUI - // Otherwise we open a preferences dialog. - if (!initial_action_done) { - initial_action_done = YES; - [self showPreferences: self]; - } -} - -- (BOOL)shouldShowUI -{ - // if this call comes before applicationDidFinishLaunching: we - // should terminate immedeately after starting the script. - if (!initial_action_done) - should_terminate = YES; - initial_action_done = YES; - if( GetCurrentKeyModifiers() & optionKey ) - return YES; - return NO; -} - -- (BOOL)shouldTerminate -{ - return should_terminate; -} - -- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender -{ - return NO; -} - -- (void)testFileTypeBinding -{ - NSURL *ourUrl; - OSStatus err; - FSRef appRef; - NSURL *appUrl; - static NSString *extensions[] = { @"py", @"pyw", @"pyc", NULL}; - NSString **ext_p; - int i; - - if ([[NSUserDefaults standardUserDefaults] boolForKey: @"SkipFileBindingTest"]) - return; - ourUrl = [NSURL fileURLWithPath: [[NSBundle mainBundle] bundlePath]]; - for( ext_p = extensions; *ext_p; ext_p++ ) { - err = LSGetApplicationForInfo( - kLSUnknownType, - kLSUnknownCreator, - (CFStringRef)*ext_p, - kLSRolesViewer, - &appRef, - (CFURLRef *)&appUrl); - if (err || ![appUrl isEqual: ourUrl] ) { - i = NSRunAlertPanel(@"File type binding", - @"PythonLauncher is not the default application for all " \ - @"Python script types. You should fix this with the " \ - @"Finder's \"Get Info\" command.\n\n" \ - @"See \"Changing the application that opens a file\" in " \ - @"Mac Help for details.", - @"OK", - @"Don't show this warning again", - NULL); - if ( i == 0 ) { // Don't show again - [[NSUserDefaults standardUserDefaults] - setObject:@"YES" forKey:@"SkipFileBindingTest"]; - } - return; - } - } -} - -@end diff --git a/project/jni/python/src/Mac/PythonLauncher/MyDocument.h b/project/jni/python/src/Mac/PythonLauncher/MyDocument.h deleted file mode 100644 index 00c1bae54..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/MyDocument.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// MyDocument.h -// PythonLauncher -// -// Created by Jack Jansen on Fri Jul 19 2002. -// Copyright (c) 2002 __MyCompanyName__. All rights reserved. -// - - -#import - -#import "FileSettings.h" - -@interface MyDocument : NSDocument -{ - IBOutlet NSTextField *interpreter; - IBOutlet NSButton *honourhashbang; - IBOutlet NSButton *debug; - IBOutlet NSButton *verbose; - IBOutlet NSButton *inspect; - IBOutlet NSButton *optimize; - IBOutlet NSButton *nosite; - IBOutlet NSButton *tabs; - IBOutlet NSTextField *others; - IBOutlet NSButton *with_terminal; - IBOutlet NSTextField *scriptargs; - IBOutlet NSTextField *commandline; - - NSString *script; - NSString *filetype; - FileSettings *settings; -} - -- (IBAction)do_run:(id)sender; -- (IBAction)do_cancel:(id)sender; -- (IBAction)do_reset:(id)sender; -- (IBAction)do_apply:(id)sender; - -- (void)controlTextDidChange:(NSNotification *)aNotification; - -@end diff --git a/project/jni/python/src/Mac/PythonLauncher/MyDocument.m b/project/jni/python/src/Mac/PythonLauncher/MyDocument.m deleted file mode 100644 index 86112c4b1..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/MyDocument.m +++ /dev/null @@ -1,175 +0,0 @@ -// -// MyDocument.m -// PythonLauncher -// -// Created by Jack Jansen on Fri Jul 19 2002. -// Copyright (c) 2002 __MyCompanyName__. All rights reserved. -// - -#import "MyDocument.h" -#import "MyAppDelegate.h" -#import "doscript.h" - -@implementation MyDocument - -- (id)init -{ - self = [super init]; - if (self) { - - // Add your subclass-specific initialization here. - // If an error occurs here, send a [self dealloc] message and return nil. - script = [@".py" retain]; - filetype = [@"Python Script" retain]; - settings = NULL; - } - return self; -} - -- (NSString *)windowNibName -{ - // Override returning the nib file name of the document - // If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead. - return @"MyDocument"; -} - -- (void)close -{ - NSApplication *app = [NSApplication sharedApplication]; - [super close]; - if ([[app delegate] shouldTerminate]) - [app terminate: self]; -} - -- (void)load_defaults -{ -// if (settings) [settings release]; - settings = [FileSettings newSettingsForFileType: filetype]; -} - -- (void)update_display -{ -// [[self window] setTitle: script]; - - [interpreter setStringValue: [settings interpreter]]; - [honourhashbang setState: [settings honourhashbang]]; - [debug setState: [settings debug]]; - [verbose setState: [settings verbose]]; - [inspect setState: [settings inspect]]; - [optimize setState: [settings optimize]]; - [nosite setState: [settings nosite]]; - [tabs setState: [settings tabs]]; - [others setStringValue: [settings others]]; - [scriptargs setStringValue: [settings scriptargs]]; - [with_terminal setState: [settings with_terminal]]; - - [commandline setStringValue: [settings commandLineForScript: script]]; -} - -- (void)update_settings -{ - [settings updateFromSource: self]; -} - -- (BOOL)run -{ - const char *cmdline; - int sts; - - cmdline = [[settings commandLineForScript: script] cString]; - if ([settings with_terminal]) { - sts = doscript(cmdline); - } else { - sts = system(cmdline); - } - if (sts) { - NSLog(@"Exit status: %d\n", sts); - return NO; - } - return YES; -} - -- (void)windowControllerDidLoadNib:(NSWindowController *) aController -{ - [super windowControllerDidLoadNib:aController]; - // Add any code here that need to be executed once the windowController has loaded the document's window. - [self load_defaults]; - [self update_display]; -} - -- (NSData *)dataRepresentationOfType:(NSString *)aType -{ - // Insert code here to write your document from the given data. You can also choose to override -fileWrapperRepresentationOfType: or -writeToFile:ofType: instead. - return nil; -} - -- (BOOL)readFromFile:(NSString *)fileName ofType:(NSString *)type; -{ - // Insert code here to read your document from the given data. You can also choose to override -loadFileWrapperRepresentation:ofType: or -readFromFile:ofType: instead. - BOOL show_ui; - - // ask the app delegate whether we should show the UI or not. - show_ui = [[[NSApplication sharedApplication] delegate] shouldShowUI]; - [script release]; - script = [fileName retain]; - [filetype release]; - filetype = [type retain]; -// if (settings) [settings release]; - settings = [FileSettings newSettingsForFileType: filetype]; - if (show_ui) { - [self update_display]; - return YES; - } else { - [self run]; - [self performSelector:@selector(close) withObject:nil afterDelay:0.0]; - return YES; - } -} - -- (IBAction)do_run:(id)sender -{ - [self update_settings]; - [self update_display]; - if ([self run]) - [self close]; -} - -- (IBAction)do_cancel:(id)sender -{ - [self close]; -} - - -- (IBAction)do_reset:(id)sender -{ - [settings reset]; - [self update_display]; -} - -- (IBAction)do_apply:(id)sender -{ - [self update_settings]; - [self update_display]; -} - -// FileSettingsSource protocol -- (NSString *) interpreter { return [interpreter stringValue];}; -- (BOOL) honourhashbang { return [honourhashbang state];}; -- (BOOL) debug { return [debug state];}; -- (BOOL) verbose { return [verbose state];}; -- (BOOL) inspect { return [inspect state];}; -- (BOOL) optimize { return [optimize state];}; -- (BOOL) nosite { return [nosite state];}; -- (BOOL) tabs { return [tabs state];}; -- (NSString *) others { return [others stringValue];}; -- (NSString *) scriptargs { return [scriptargs stringValue];}; -- (BOOL) with_terminal { return [with_terminal state];}; - -// Delegates -- (void)controlTextDidChange:(NSNotification *)aNotification -{ - [self update_settings]; - [self update_display]; -}; - -@end diff --git a/project/jni/python/src/Mac/PythonLauncher/PreferencesWindowController.h b/project/jni/python/src/Mac/PythonLauncher/PreferencesWindowController.h deleted file mode 100644 index 63469968c..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/PreferencesWindowController.h +++ /dev/null @@ -1,38 +0,0 @@ -/* PreferencesWindowController */ - -#import - -#import "FileSettings.h" - -@interface PreferencesWindowController : NSWindowController -{ - IBOutlet NSPopUpButton *filetype; - IBOutlet NSComboBox *interpreter; - IBOutlet NSButton *honourhashbang; - IBOutlet NSButton *debug; - IBOutlet NSButton *verbose; - IBOutlet NSButton *inspect; - IBOutlet NSButton *optimize; - IBOutlet NSButton *nosite; - IBOutlet NSButton *tabs; - IBOutlet NSTextField *others; - IBOutlet NSButton *with_terminal; - IBOutlet NSTextField *commandline; - - FileSettings *settings; -} - -+ getPreferencesWindow; - -- (IBAction)do_reset:(id)sender; -- (IBAction)do_apply:(id)sender; -- (IBAction)do_filetype:(id)sender; - -- (void)controlTextDidChange:(NSNotification *)aNotification; - -- (unsigned int)comboBox:(NSComboBox *)aComboBox indexOfItemWithStringValue:(NSString *)aString; -- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(int)index; -- (int)numberOfItemsInComboBox:(NSComboBox *)aComboBox; - - -@end diff --git a/project/jni/python/src/Mac/PythonLauncher/PreferencesWindowController.m b/project/jni/python/src/Mac/PythonLauncher/PreferencesWindowController.m deleted file mode 100644 index 311c37502..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/PreferencesWindowController.m +++ /dev/null @@ -1,121 +0,0 @@ -#import "PreferencesWindowController.h" - -@implementation PreferencesWindowController - -+ getPreferencesWindow -{ - static PreferencesWindowController *_singleton; - - if (!_singleton) - _singleton = [[PreferencesWindowController alloc] init]; - [_singleton showWindow: _singleton]; - return _singleton; -} - -- (id) init -{ - self = [self initWithWindowNibName: @"PreferenceWindow"]; - return self; -} - -- (void)load_defaults -{ - NSString *title = [filetype titleOfSelectedItem]; - - settings = [FileSettings getDefaultsForFileType: title]; -} - -- (void)update_display -{ -// [[self window] setTitle: script]; - - [interpreter reloadData]; - [interpreter setStringValue: [settings interpreter]]; - [honourhashbang setState: [settings honourhashbang]]; - [debug setState: [settings debug]]; - [verbose setState: [settings verbose]]; - [inspect setState: [settings inspect]]; - [optimize setState: [settings optimize]]; - [nosite setState: [settings nosite]]; - [tabs setState: [settings tabs]]; - [others setStringValue: [settings others]]; - [with_terminal setState: [settings with_terminal]]; - // Not scriptargs, it isn't for preferences - - [commandline setStringValue: [settings commandLineForScript: @""]]; -} - -- (void) windowDidLoad -{ - [super windowDidLoad]; - [self load_defaults]; - [self update_display]; -} - -- (void)update_settings -{ - [settings updateFromSource: self]; -} - -- (IBAction)do_filetype:(id)sender -{ - [self load_defaults]; - [self update_display]; -} - -- (IBAction)do_reset:(id)sender -{ - [settings reset]; - [self update_display]; -} - -- (IBAction)do_apply:(id)sender -{ - [self update_settings]; - [self update_display]; -} - -// FileSettingsSource protocol -- (NSString *) interpreter { return [interpreter stringValue];}; -- (BOOL) honourhashbang { return [honourhashbang state]; }; -- (BOOL) debug { return [debug state];}; -- (BOOL) verbose { return [verbose state];}; -- (BOOL) inspect { return [inspect state];}; -- (BOOL) optimize { return [optimize state];}; -- (BOOL) nosite { return [nosite state];}; -- (BOOL) tabs { return [tabs state];}; -- (NSString *) others { return [others stringValue];}; -- (BOOL) with_terminal { return [with_terminal state];}; -- (NSString *) scriptargs { return @"";}; - -// Delegates -- (void)controlTextDidChange:(NSNotification *)aNotification -{ - [self update_settings]; - [self update_display]; -}; - -// NSComboBoxDataSource protocol -- (unsigned int)comboBox:(NSComboBox *)aComboBox indexOfItemWithStringValue:(NSString *)aString -{ - NSArray *interp_list = [settings interpreters]; - unsigned int rv = [interp_list indexOfObjectIdenticalTo: aString]; - return rv; -} - -- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(int)index -{ - NSArray *interp_list = [settings interpreters]; - id rv = [interp_list objectAtIndex: index]; - return rv; -} - -- (int)numberOfItemsInComboBox:(NSComboBox *)aComboBox -{ - NSArray *interp_list = [settings interpreters]; - int rv = [interp_list count]; - return rv; -} - - -@end diff --git a/project/jni/python/src/Mac/PythonLauncher/doscript.h b/project/jni/python/src/Mac/PythonLauncher/doscript.h deleted file mode 100644 index eef0b5641..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/doscript.h +++ /dev/null @@ -1,12 +0,0 @@ -/* - * doscript.h - * PythonLauncher - * - * Created by Jack Jansen on Wed Jul 31 2002. - * Copyright (c) 2002 __MyCompanyName__. All rights reserved. - * - */ - -#include - -extern int doscript(const char *command); \ No newline at end of file diff --git a/project/jni/python/src/Mac/PythonLauncher/doscript.m b/project/jni/python/src/Mac/PythonLauncher/doscript.m deleted file mode 100644 index 024b883f1..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/doscript.m +++ /dev/null @@ -1,59 +0,0 @@ -/* - * doscript.c - * PythonLauncher - * - * Created by Jack Jansen on Wed Jul 31 2002. - * Copyright (c) 2002 __MyCompanyName__. All rights reserved. - * - */ - -#import -#import -#import "doscript.h" - -extern int -doscript(const char *command) -{ - char *bundleID = "com.apple.Terminal"; - AppleEvent evt, res; - AEDesc desc; - OSStatus err; - - [[NSWorkspace sharedWorkspace] launchApplication:@"/Applications/Utilities/Terminal.app/"]; - - // Build event - err = AEBuildAppleEvent(kAECoreSuite, kAEDoScript, - typeApplicationBundleID, - bundleID, strlen(bundleID), - kAutoGenerateReturnID, - kAnyTransactionID, - &evt, NULL, - "'----':utf8(@)", strlen(command), - command); - if (err) { - NSLog(@"AEBuildAppleEvent failed: %d\n", err); - return err; - } - - // Send event and check for any Apple Event Manager errors - err = AESendMessage(&evt, &res, kAEWaitReply, kAEDefaultTimeout); - AEDisposeDesc(&evt); - if (err) { - NSLog(@"AESendMessage failed: %d\n", err); - return err; - } - // Check for any application errors - err = AEGetParamDesc(&res, keyErrorNumber, typeSInt32, &desc); - AEDisposeDesc(&res); - if (!err) { - AEGetDescData(&desc, &err, sizeof(err)); - NSLog(@"Terminal returned an error: %d", err); - AEDisposeDesc(&desc); - } else if (err == errAEDescNotFound) { - err = noErr; - } else { - NSLog(@"AEGetPArmDesc returned an error: %d", err); - } - - return err; -} diff --git a/project/jni/python/src/Mac/PythonLauncher/factorySettings.plist b/project/jni/python/src/Mac/PythonLauncher/factorySettings.plist deleted file mode 100644 index 120242135..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/factorySettings.plist +++ /dev/null @@ -1,87 +0,0 @@ - - - - - Python GUI Script - - debug - - inspect - - interpreter_list - - /usr/local/bin/pythonw - /usr/bin/pythonw - /sw/bin/pythonw - - honourhashbang - - nosite - - optimize - - others - - verbose - - with_terminal - - - Python Script - - debug - - inspect - - interpreter_list - - /usr/local/bin/pythonw - /usr/local/bin/python - /usr/bin/pythonw - /usr/bin/python - /sw/bin/pythonw - /sw/bin/python - - honourhashbang - - nosite - - optimize - - others - - verbose - - with_terminal - - - Python Bytecode Document - - debug - - inspect - - interpreter_list - - /usr/local/bin/pythonw - /usr/local/bin/python - /usr/bin/pythonw - /usr/bin/python - /sw/bin/pythonw - /sw/bin/python - - honourhashbang - - nosite - - optimize - - others - - verbose - - with_terminal - - - - diff --git a/project/jni/python/src/Mac/PythonLauncher/main.m b/project/jni/python/src/Mac/PythonLauncher/main.m deleted file mode 100644 index 6841433f4..000000000 --- a/project/jni/python/src/Mac/PythonLauncher/main.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// main.m -// PythonLauncher -// -// Created by Jack Jansen on Fri Jul 19 2002. -// Copyright (c) 2002 __MyCompanyName__. All rights reserved. -// - -#import -#include - -int main(int argc, const char *argv[]) -{ - char *home = getenv("HOME"); - if (home) chdir(home); - return NSApplicationMain(argc, argv); -} diff --git a/project/jni/python/src/Mac/README b/project/jni/python/src/Mac/README deleted file mode 100644 index 5e74d7bde..000000000 --- a/project/jni/python/src/Mac/README +++ /dev/null @@ -1,163 +0,0 @@ -============ -MacOSX Notes -============ - -This document provides a quick overview of some Mac OS X specific features in -the Python distribution. - - -Building and using a universal binary of Python on Mac OS X -=========================================================== - -1. What is a universal binary ------------------------------ - -A universal binary build of Python contains object code for both PPC and i386 -and can therefore run at native speed on both classic powerpc based macs and -the newer intel based macs. - -2. How do I build a universal binary ------------------------------------- - -You can enable universal binaries by specifying the "--enable-universalsdk" -flag to configure:: - - $ ./configure --enable-universalsdk - $ make - $ make install - -This flag can be used a framework build of python, but also with a classic -unix build. Either way you will have to build python on Mac OS X 10.4 (or later) -with Xcode 2.1 (or later). You also have to install the 10.4u SDK when -installing Xcode. - - -Building and using a framework-based Python on Mac OS X. -======================================================== - - -1. Why would I want a framework Python instead of a normal static Python? --------------------------------------------------------------------------- - -The main reason is because you want to create GUI programs in Python. With the -exception of X11/XDarwin-based GUI toolkits all GUI programs need to be run -from a fullblown MacOSX application (a ".app" bundle). - -While it is technically possible to create a .app without using frameworks you -will have to do the work yourself if you really want this. - -A second reason for using frameworks is that they put Python-related items in -only two places: "/Library/Framework/Python.framework" and -"/Applications/MacPython 2.6". This simplifies matters for users installing -Python from a binary distribution if they want to get rid of it again. Moreover, -due to the way frameworks work a user without admin privileges can install a -binary distribution in his or her home directory without recompilation. - -2. How does a framework Python differ from a normal static Python? ------------------------------------------------------------------- - -In everyday use there is no difference, except that things are stored in -a different place. If you look in /Library/Frameworks/Python.framework -you will see lots of relative symlinks, see the Apple documentation for -details. If you are used to a normal unix Python file layout go down to -Versions/Current and you will see the familiar bin and lib directories. - -3. Do I need extra packages? ----------------------------- - -Yes, probably. If you want Tkinter support you need to get the OSX AquaTk -distribution, this is installed by default on Mac OS X 10.4 or later. If -you want wxPython you need to get that. If you want Cocoa you need to get -PyObjC. - -4. How do I build a framework Python? -------------------------------------- - -This directory contains a Makefile that will create a couple of python-related -applications (fullblown OSX .app applications, that is) in -"/Applications/MacPython 2.6", and a hidden helper application Python.app -inside the Python.framework, and unix tools "python" and "pythonw" into -/usr/local/bin. In addition it has a target "installmacsubtree" that installs -the relevant portions of the Mac subtree into the Python.framework. - -It is normally invoked indirectly through the main Makefile, as the last step -in the sequence - - 1. ./configure --enable-framework - - 2. make - - 3. make install - -This sequence will put the framework in /Library/Framework/Python.framework, -the applications in "/Applications/MacPython 2.6" and the unix tools in -/usr/local/bin. - -Installing in another place, for instance $HOME/Library/Frameworks if you have -no admin privileges on your machine, has only been tested very lightly. This -can be done by configuring with --enable-framework=$HOME/Library/Frameworks. -The other two directories, "/Applications/MacPython-2.6" and /usr/local/bin, -will then also be deposited in $HOME. This is sub-optimal for the unix tools, -which you would want in $HOME/bin, but there is no easy way to fix this right -now. - -If you want to install some part, but not all, read the main Makefile. The -frameworkinstall is composed of a couple of sub-targets that install the -framework itself, the Mac subtree, the applications and the unix tools. - -There is an extra target frameworkinstallextras that is not part of the -normal frameworkinstall which installs the Demo and Tools directories -into "/Applications/MacPython 2.6", this is useful for binary distributions. - -What do all these programs do? -=============================== - -"IDLE.app" is an integrated development environment for Python: editor, -debugger, etc. - -"PythonLauncher.app" is a helper application that will handle things when you -double-click a .py, .pyc or .pyw file. For the first two it creates a Terminal -window and runs the scripts with the normal command-line Python. For the -latter it runs the script in the Python.app interpreter so the script can do -GUI-things. Keep the "alt" key depressed while dragging or double-clicking a -script to set runtime options. These options can be set once and for all -through PythonLauncher's preferences dialog. - -"BuildApplet.app" creates an applet from a Python script. Drop the script on it -and out comes a full-featured MacOS application. There is much more to this, -to be supplied later. Some useful (but outdated) info can be found in -Mac/Demo. - -The commandline scripts /usr/local/bin/python and pythonw can be used to run -non-GUI and GUI python scripts from the command line, respectively. - -How do I create a binary distribution? -====================================== - -Go to the directory "Mac/OSX/BuildScript". There you'll find a script -"build-installer.py" that does all the work. This will download and build -a number of 3th-party libaries, configures and builds a framework Python, -installs it, creates the installer pacakge files and then packs this in a -DMG image. - -The script will build a universal binary, you'll therefore have to run this -script on Mac OS X 10.4 or later and with Xcode 2.1 or later installed. - -All of this is normally done completely isolated in /tmp/_py, so it does not -use your normal build directory nor does it install into /. - -Because of the way the script locates the files it needs you have to run it -from within the BuildScript directory. The script accepts a number of -command-line arguments, run it with --help for more information. - -Odds and ends -============= - -Something to take note of is that the ".rsrc" files in the distribution are -not actually resource files, they're AppleSingle encoded resource files. The -macresource module and the Mac/OSX/Makefile cater for this, and create -".rsrc.df.rsrc" files on the fly that are normal datafork-based resource -files. - - Jack Jansen, Jack.Jansen@cwi.nl, 15-Jul-2004. - Ronald Oussoren, RonaldOussoren@mac.com, 26-May-2006 diff --git a/project/jni/python/src/Mac/Resources/app/Info.plist.in b/project/jni/python/src/Mac/Resources/app/Info.plist.in deleted file mode 100644 index bd4a54c29..000000000 --- a/project/jni/python/src/Mac/Resources/app/Info.plist.in +++ /dev/null @@ -1,60 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeOSTypes - - **** - fold - disk - - CFBundleTypeRole - Viewer - - - CFBundleExecutable - Python - CFBundleGetInfoString - %version%, (c) 2004-2009 Python Software Foundation. - CFBundleHelpBookFolder - - Documentation - PythonDocumentation - - CFBundleHelpBookName - MacPython Help - CFBundleHelpTOCFile - index.html - CFBundleIconFile - PythonInterpreter.icns - CFBundleIdentifier - %bundleid% - CFBundleInfoDictionaryVersion - 6.0 - CFBundleLongVersionString - %version%, (c) 2004-2009 Python Software Foundation. - CFBundleName - Python - CFBundlePackageType - APPL - CFBundleShortVersionString - %version% - CFBundleSignature - PytX - CFBundleVersion - %version% - CSResourcesFileMapped - - LSRequiresCarbon - - NSAppleScriptEnabled - - NSHumanReadableCopyright - (c) 2004 Python Software Foundation. - - diff --git a/project/jni/python/src/Mac/Resources/app/PkgInfo b/project/jni/python/src/Mac/Resources/app/PkgInfo deleted file mode 100644 index 67c491a8f..000000000 --- a/project/jni/python/src/Mac/Resources/app/PkgInfo +++ /dev/null @@ -1 +0,0 @@ -APPLPytX \ No newline at end of file diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/PackageManager.gif b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/PackageManager.gif deleted file mode 100644 index 2b93dc8d0c0060e89c93d5ef95701e2b02c5a511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6087 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 - - - - What is MacPython? - - - - - - - - - - -
- - -

MacPython Community

-
-
- -

Web Sites

- -

The MacPython homepage, -www.cwi.nl/~jack/macpython.html -is where you can find installers, documents, links to useful packages and more. -And, of course, -www.python.org has a much larger collection -of material on Python that is not Mac-specific.

- -

News groups and Mailing lists

- -

There are a lot of mailing lists on Python. Some of the more interesting -ones are:

-
    -
  • python-help@python.org where -you can send questions for individual support. Please check the websites mentioned -above first, though!
  • -
  • The comp.lang.python newsgroup for general -discussion. Also available as a -mailing list.
  • -
  • The comp.lang.python.announce -newsgroup for announcements. Low-volume and moderated. Also available as a -mailing list.
  • -
  • Last but not least, the pythonmac-sig -mailing list is specifically for MacPython. Discussions on the implementation of new -features, but beginners questions are welcome too.
  • -
- -

In addition there are Python Special Interest Group -mailing lists on a wide variety of topics such as image processing, numerical algorithms -and more.

- -

More

- -

An index of conferences, Wiki's, bookshops and more can be found at the -Community section of the Python website.

- -

If you find a bug you are kindly requested to report it, preferrably through the -automatic bug tracker at www.python.org

- -

If you want to become an active developer you are very welcome! Join the -pythonmac-sig mailing list mentioned above, and read the -Developer section on the Python website.

- - - diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/doc/index.html b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/doc/index.html deleted file mode 100644 index 2ce7357a5..000000000 --- a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/doc/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Python Language Documentation - - - -

Python Language and runtime documentation

- -

This volume of documentation is rather big (17 Megabytes) and contains -a tutorial, full description of the Python library (all the modules -and packages included), formal description of the language and more.

- -

You can view it online, where -you can also download PDFs for printing, or you can download and install it -through the Package Manager for viewing and -searching via Apple Help Viewer.

- - diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/finder.html b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/finder.html deleted file mode 100644 index a8877ba88..000000000 --- a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/finder.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - Python and the Finder - - - - - -

Running Python scripts from the Finder

- - - - - -
- - -

The application PythonLauncher will start a Python interpreter - when you drop a Python source file onto it, any file with a .py - or .pyw extension. If you set PythonLauncher as the default - application to open a file -( -tell me more) this also works when you double click a Python script.

- -

PythonLauncher has preferences per filetype for selecting - the interpreter to use, and how to launch it: in a Terminal window - or not, etc. Holding the Option key while launching your script will - bring up a window that allows changing these settings for a single - run.

-
-
- - diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/gui.html b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/gui.html deleted file mode 100644 index 252c78c32..000000000 --- a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/gui.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - Creating a User Interface with MacPython - - - - - -

Creating a User Interface with MacPython

- -

There are a number of packages that allow creation of a user interface -for your Python code, each of which has its own merits:

- -
    -
  • The Carbon package gives low-level access to the old Macintosh toolbox - calls for windows, events, dialogs and more. The FrameWork module - wraps these in a minimal framework. For documentation see the Macintosh - Library section of the Python Language and runtime - documentation and the Human Interface Toolbox section of - Apple's Carbon Documentation. - This solution is compatible with MacPython-OS9.
  • -
  • The W framework is built on top of this, and easier to use. - The MacPython IDE uses W. Some documentation is available on - Corran Webster's website. - Compatible with MacPython-OS9.
  • -
- -

For new work, however, one of the following packages may be better suited. -They may be available out of the box in this distribution, otherwise you -can install them through the Package Manager:

- -
    -
  • PyObjC allows complete access to Cocoa. - In technical terms it is a - bidirectional bridge between Python and Objectve-C, similar to Apple's Java - bridge. Probably the best choice for Mac OS X-only applications, but at the - time of this writing PyObjC is still in beta.
  • - -
  • wxPython gives Python programs - access to the wxWindows GUI toolkit. Many people consider this - the best open source cross-platform GUI solution available today.
  • - -
  • Tkinter is the oldest cross-platform GUI toolkit for Python, bridging Python - to Tcl/Tk. If you install AquaTk it creates a native user interface on Mac OS X. - Documented in the Library section, Tkinter subsection of the - Python Language and runtime documentation. Tkinter - is not available for MacPython-OS9.
  • -
- - - diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/IDE.gif b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/IDE.gif deleted file mode 100644 index da9325d02c03cf8294169a26071b7d2c3b0eed65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10249 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 diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/entering_in_new_window.gif b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/entering_in_new_window.gif deleted file mode 100644 index baa400ee1b1f1a140eeae81f137429522256466d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15578 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 diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/hello_world.gif b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/hello_world.gif deleted file mode 100644 index c7390af9deb5690bf4f80c89e3c1ca0545465033..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15681 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 VpmBjvlt8QTEJwo`jt&eA)&NgAiuC{h diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/index.html b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/index.html deleted file mode 100644 index a169f5e20..000000000 --- a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/index.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - One Day of MacPython IDE Toying - - - - -

One Day of MacPython IDE Toying

- - - - - -
- - -

This document gives a very basic introduction to the - MacPython Integrated Development Environment (IDE) on Mac OS. It was - written specifically for MacPython 2.3 on Mac OS X, but most of - it is applicable to MacPython-OS9 too. It is based on - "One - Day of IDLE Toying" by Danny Yoo, which you should read if - you want to use the cross-platform IDLE Python development - environment.

- -
-
-
- -

Ok, let's assume that we've already installed Python. (If not, we can -visit: http://www.cwi.nl/~jack/macpython.html -or http://python.org -and download the most recent Python interpreter. Get the Mac OSX binary -installer.) The first thing we'd like to do is actually start running it! -We can do this by opening up the IDE, which should be in Applications -under the newly-created MacPython program folder:

image of IDE icon

- -

- -

The IDE starts up and shows an interactive window:

-

image of new window

- -

If the window does not show up (because you have run the IDE before -and closed it: it remembers that between runs) open it with the Windows->Python Interactive -menu entry.

- -

This is the interactive window to the IDE, it allows us to enter -commands directly into Python, and as soon as we enter a command, -Python will execute it and spit its result back to us. We'll be -using this interactive window a lot when we're exploring Python: it's -very nice because we get back our results immediately. If it helps, -we can think of it as a very powerful calculator.

- -

- -

Let's try something now! As per tradition, let's get Python to say -the immortal words, "Hello World". image of hello world program

Those '>>>' signs act as a prompt -for us: Python is ready to read in a new command by giving us that -visual cue. Also, we notice that as we enter commands, Python will -give us its output immediately. -

- -

- -

Ok, this seems pretty simple enough. Let's try a few more -commands. If we look below:

- -

image of command window

- -

we'll see the result of running a few more commands. Don't worry -too much about knowing the exact rules for making programs yet: the -idea is that we can experiment with Python by typing in commands. If -things don't work, then we can correct the mistake, and try it -again.

- -

If you got to this point, you now know enough to start playing -around with Python! Crack open one of the tutorials from the Python For Beginners web -page, and start exploring with the interpreter. No time limit here. *grin*

- -

- -

Now that we've paddled long enough, we might be asking: ok, this is -neat, but if we close down Python and start it up again, how do we get -the computer to remember what we typed?

- -

The solution is a little subtle: we can't directly save what's in -the interpreter window, because it will include both our commands and -the system's responses. What we'd like is to make a prepared file, -with just our own commands, and to be able to save that file as a -document. When we're in the mood, we can later open that file and -"run" Python over it, saving us the time of retyping the whole -thing over again.

- -

Let's try this. First, let's start with a clean slate by opening -up a new window.

- -

image of making new window

- -

Here's the result of that menu command:

- -

image of new window

- -

We notice that there's nothing in this new window. What this means -is that this file is purely for our commands: Python won't interject -with its own responses as we enter the program, that is, not until we -tell it to. This is called an edit window, and it is very similar -to edit windows in other editors such as TextEdit or BBEdit.

- -

- -

What we wanted to do before was save some of the stuff we had -tried out on the interpreter window. Let's do that by typing (or -copy/pasting) those commands into our edit window.

-

image of entering commands

- -

Ok, we're done with copying and pasting. -One big thing to notice -is that we're careful to get rid of the ">>>" -prompts because they're not really part of our program. The -interpreter uses them just to tell us that we're in the interpreter, -but now that we're editing in a separate file, we can remove the -artifacts that the interpreter introduces. -I have added -an extra empty print statement so our output ends with a newline. -

- -

- -

Let's save the file now. The Save command is located under the File menu:

-

image of saving file

- - -

- -

Now that we've saved the program, how do we run the program? Use the -Run All button at the top of the editing window, or the equivalent -menu command Python->Run Window. The output will appear in a new -window called Output Window.

- -

By the way, one thing to notice is that I made a typo: I didn't -quite copy exactly what I had entered in the interpreter window -before. Does this affect things?

- -

image of syntax error

- -

Ooops. Here is an example of what Python calls a "syntax error". -Python sees that we made a typo, and warns us to take a much closer -look at our program. The designers of Python feel that having the -system point out the error is better than trying to guess at what the -programmer meant. Press the Edit button and you will be brought to -the trouble spot.

- -

Python is often perceptive enough to direct us toward the problem, -and in this case, it's telling us that we forgot to put something at -the end of this line. In this case, we need to add a -quotation mark at the end. Let's add that in now.

- -

Other errors, which usually occur later, when your program has -already done something, result in a different dialog that allows you -to look at variables and such in addition to showing you where -the error occurred.

- -

- -

Ok, let's say that we fixed that silly typo. Let's try to run the -program again. This gives us a new window, the Output window, showing -the output of our program:

-

image of output window

- -

- -

As we play with Python, we'll find ourselves "switching modes" -between the Interpreter window and the edit window. However, -if we try anything more complicated than two or three lines it -is often a good idea to work in an edit window. Align -your edit and output window such that you can see them at the same time.

- -

This is pretty much all we need to know about the MacPython IDE to actually do -interesting things. There is a lot more to the IDE, here is a quick -breakdown of things to see and explore:

- -
    -
  • All sorts of edit commands such as find and replace can be - used in the editor windows. See the Edit menu.
  • - -
  • The bottom of the edit window has the scrollbar, but at the - left are two navigation devices: a line number box that you can type - numbers into to quickly go to a specific place, and a popup menu - that lists all classes, functions and methods in your file.
  • - -
  • Above the vertical scrollbar you find another popup menu, this - influences how the Run command works. You should try the debugger - some time! If you do, and you wonder what the new small column on - the left of your script is: you can click in it to make Python stop - when it reaches this line so you can inspect things. The profiler - is also nifty: it shows you where your program is spending its time.
  • - -
  • The module browser (Python->Module Browser) shows you all Python - modules currently loaded. You can look at the contents of the module with - Browse... and (for modules written in Python) at the source with Source...
  • - -
  • The Package Manager (under the File menu, also available as a - separate application) allows you to easily install Python extension packages - for all sorts of things: scientific computation, image processing, - building user interfaces and more.
  • - -
  • The Help menu gives you quick access to both the Python documentation, - if you have installed it with the Package Manager, and the Apple Developer - documentation.
  • - -
  • The File->Save as Applet menu command saves your script as a MacOSX - application. This allows you to create a script that you can drop files on, - and much more. The IDE itself is such an applet, completely written in Python.
  • - -
- - diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/loading_ide.gif b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/loading_ide.gif deleted file mode 100644 index e7cca3de5fcdccbc6156d15fd5167a2a24a74ea9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50595 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 Lhm(tig~1vCwnV++ diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/saving_edited_file.gif b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/saving_edited_file.gif deleted file mode 100644 index 6e5c9261ea33a2281479822587f4b539d109dadd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26559 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 diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/simple_commands.gif b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/simple_commands.gif deleted file mode 100644 index 1dba570083e70b6dca61e8060c620044f9982ca3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14134 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 I78V9;02i0^XaE2J diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/syntax_error.gif b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/ide/syntax_error.gif deleted file mode 100644 index 2e95b87c83b0f9919cc3d850862fd81a64139946..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12850 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 - - - - MacPython Help - - - - - - - -

MacPython Help

- - - - - -
- - -

Choose a topic, or enter keywords into the search field:

- - -
-
- - - diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/intro.html b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/intro.html deleted file mode 100644 index f0ab3718b..000000000 --- a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/intro.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - What is MacPython? - - - - - -

What is MacPython?

- - - - - -
- - -

Python is a programming language. MacPython is a package containing -that programming language plus Mac-specific tools and extensions.

- -
-
- -

The Python Language

-

The Python programming language is available for many hardware -platforms, and most general documentation is Unix- or Windows-centered. Keep -this in mind when reading the rest of this help, or information on the web. -

- -

The Python website, www.python.org, -has a Beginners Guide section including an -executive summary on -the language and a -comparison of Python -to other languages. Or read the (rather longwinded) Python -Tutorial in the Python Language and runtime documentation.

- -

MacPython contains a complete unix interpreter so -if you are familiar with Python on unix you should feel right at home.

- -

MacPython additions

- -

The MacPython Integrated Development Environment (IDE) allows -easy editing, running and debugging of scripts. Read the -Introduction -to the IDE to whet your appetite.

- -

MacPython comes with lots of modules that allow access to -MacOS-specific technology, such as Carbon, Quicktime and AppleScript. -See the Macintosh -Modules section of the -Python Language and runtime documentation, -but please keep in mind that some information there still pertains to -Mac OS 9. - -Full access to the Cocoa APIs -and tools such as Interface Builder is available separately through the -Package Manager.

- -

The Package Manager also gives you access to extension -packages for cross-platform GUI development (Tkinter, wxPython, PyOpenGL), -image processing (PIL), scientific -computing (Numeric) and much more. PyObjC deserves a special mention: it allows -transparent access to Cocoa and Interface Builder, similar to what Java provides, -thereby making Python a first class citizen in the Mac OS X developer world.

- -

Python scripts can be saved as applets, semi-standalone applications -that work just like a normal application. Additionally you can even create -true standalone application that have everything embedded and can be -shipped to anyone, without the need to install Python. You do not -need to install the Apple Developer Tools for this.

- - diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/packman.html b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/packman.html deleted file mode 100644 index 355e0da8d..000000000 --- a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/packman.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - Python Package Manager - - - - - -

Installing additional Python Packages

- - - - - -
- - -

The Python Package Manager helps you installing additional - packages that enhance Python. It determines the exact MacOS version - and Python version you have and uses that information to download - a database that has packages that are test and tried on that - combination. In other words: if something is in your Package Manager - window but does not work you are free to blame the database maintainer.

- -

PackageManager then checks which of the packages you have installed - and which ones not. This should also work when you have installed packages - outside of PackageManager. - You can select packages and install them, and PackageManager will work - out the requirements and install these too.

- -

Often PackageManager will list a package in two flavors: binary - and source. Binary should always work, source will only work if - you have installed the Apple Developer Tools. PackageManager will warn - you about this, and also about other external dependencies.

- -

PackageManager is available as a separate application and also - as a function of the IDE, through the File->Package Manager menu - entry.

- -

Troubleshooting

- -

If package manager fails to open the database first check that you are - connected to the internet. If you are connected then the problem - could be that there is no database (yet?) for your version of Mac OS X. - You may be able to find an alternative - database that works for your system at - http://www.python.org/packman. - In the standalone Package Manager you can then open such an alternative database - with the File->Open URL... command, but you should realize that - you are now on untested ground.

- -

Another potential problem source is that you are behind a firewall. This version - of PackageManager uses the Unix method of setting a firewall: you need to set the - environment variable http_proxy to "http://proxyhost:port". - See Apple Technical - Q&A QA1067 for instructions.

- -
-
- - diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/python.gif b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/python.gif deleted file mode 100644 index 3d4aa5debc9f5eabcf63763b37fe49eae5ead63a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6389 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 r<9I)7F?PFjxZs|1}Pd diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/pythonsmall.gif b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/pythonsmall.gif deleted file mode 100644 index 440225ee95801a2df2ae8f741e64b54b39307fad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmZ?wbhEHb - - - - Controlling other Applications from MacPython - - - - - -

Controlling other Applications from MacPython

- -

Python has a fairly complete implementation of the Open Scripting -Architecure (OSA, also commonly referred to as AppleScript), allowing -you to control scriptable applications from your Python program, -and with a fairly pythonic interface. This piece of -Python:

- -

-import Finder
-
-f = Finder.Finder()
-print f.get(f.window(1).name)
-
- -

is identical to the following piece of AppleScript:

- -

-tell application "Finder"
-	get name of window 1
-end tell
-
- -

To send AppleEvents to an application you must first create the Python -modules interfacing to the terminology of the application (what -Script Editor calls the "Dictionary"). Use the IDE menu command -File->Generate OSA Suite... for this. For more control run

- -
-pythonw .../Lib/plat-mac/gensuitemodule.py --help -
- -

from a terminal window.

- -

Creating a scriptable application in Python

- -You can also create a scriptable application in Python, but this is not -very well documented. For Carbon -applications you should look at the MiniAEFrame module. - - - diff --git a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/shell.html b/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/shell.html deleted file mode 100644 index 56f564645..000000000 --- a/project/jni/python/src/Mac/Resources/app/Resources/English.lproj/Documentation/shell.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - Python and the Unix Shell - - - - - -

Running Python scripts from the Unix Shell

- - - - - -
- - -

MacPython 2.3 installs a perfectly normal Unix commandline - python interpreter in /usr/local/bin/python. As of Mac OS X 10.2, however, - /usr/local/bin is not on the search path of your shell. Moreover, - Apple's python 2.2, which lives in /usr/bin is on your - search path, so this can lead to confusion.

- -

If you use tcsh you should add the following line - to the file .login in your home directory and restart Terminal: -
- setenv PATH /usr/local/bin:$PATH -

- -

If you use bash or zsh - you should add the following line - to the file .profile in your home directory and restart Terminal: -
- export PATH=/usr/local/bin:$PATH -

- -

GUI scripts

- -

Due to the way MacOS handles windowing applications you need to run - all scripts that use the window manager (be it through - Carbon, Cocoa, Tkinter, wxPython, PyOpenGL or anything else) with the - pythonw interpreter, also installed in /usr/local/bin.

- -

Running with python results in an inability to bring the - script to the front, or interacting with it.

-
-
- - diff --git a/project/jni/python/src/Mac/Resources/app/Resources/PythonApplet.icns b/project/jni/python/src/Mac/Resources/app/Resources/PythonApplet.icns deleted file mode 100644 index c8aad9fc37a27872bae18af78b1623bfb8f9a9f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63136 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%0D88K#h`WoufxN75+l)2)&tAI& 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 diff --git a/project/jni/python/src/Mac/Resources/app/Resources/PythonInterpreter.icns b/project/jni/python/src/Mac/Resources/app/Resources/PythonInterpreter.icns deleted file mode 100644 index e09fd381e4dfb842e2e7861c9104c70a7b175647..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42658 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

M= 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

WUeu& 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 diff --git a/project/jni/python/src/Mac/Resources/framework/Info.plist.in b/project/jni/python/src/Mac/Resources/framework/Info.plist.in deleted file mode 100644 index a753e88d7..000000000 --- a/project/jni/python/src/Mac/Resources/framework/Info.plist.in +++ /dev/null @@ -1,28 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - Python - CFBundleGetInfoString - Python Runtime and Library - CFBundleIdentifier - @PYTHONFRAMEWORKIDENTIFIER@ - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Python - CFBundlePackageType - FMWK - CFBundleShortVersionString - %VERSION%, (c) 2004-2008 Python Software Foundation. - CFBundleLongVersionString - %VERSION%, (c) 2004-2008 Python Software Foundation. - CFBundleSignature - ???? - CFBundleVersion - %VERSION% - - diff --git a/project/jni/python/src/Mac/Resources/iconsrc/IDE.psd b/project/jni/python/src/Mac/Resources/iconsrc/IDE.psd deleted file mode 100644 index b9637b993f4cde22c786b1f0e6f5a8e4edd5b116..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83876 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�$&5?&HZf7P68ZiA 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%0DnI}e_tOTcNaG=FBdlf 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 NWai*xV`f~(008)k&K>{& diff --git a/project/jni/python/src/Mac/Resources/iconsrc/PackageManager.psd b/project/jni/python/src/Mac/Resources/iconsrc/PackageManager.psd deleted file mode 100644 index 42f41b125ffdd8c79dfcba2d312f8b6c359de3aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71056 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 +i=&0xyl%wWmj#$eB2#^BE2 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 diff --git a/project/jni/python/src/Mac/Resources/iconsrc/PythonCompiled.psd b/project/jni/python/src/Mac/Resources/iconsrc/PythonCompiled.psd deleted file mode 100644 index 61fc4d18ae2b45bc0adf3d9af10c2bb1ec3c6a1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76118 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 diff --git a/project/jni/python/src/Mac/Resources/iconsrc/PythonSource.psd b/project/jni/python/src/Mac/Resources/iconsrc/PythonSource.psd deleted file mode 100644 index eba8f28d378cf50d07889ea8f4db5ea73571f370..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62075 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�ZqOPp)(S`SQ_ve?w#a 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 diff --git a/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Help_Indexing_Tool_Suite.py b/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Help_Indexing_Tool_Suite.py deleted file mode 100644 index 58d73076d..000000000 --- a/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Help_Indexing_Tool_Suite.py +++ /dev/null @@ -1,110 +0,0 @@ -"""Suite Help Indexing Tool Suite: Special events that just the Help Indexing Tool supports. -Level 0, version 0 - -Generated from /Developer/Applications/Apple Help Indexing Tool.app -AETE/AEUT resource version 1/1, language 0, script 0 -""" - -import aetools -import MacOS - -_code = 'HIT ' - -class Help_Indexing_Tool_Suite_Events: - - def turn_anchor_indexing(self, _object, _attributes={}, **_arguments): - """turn anchor indexing: Turns anchor indexing on or off. - Required argument: \xd2on\xd3 or \xd2off\xd3, to turn anchor indexing on or off - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'HIT ' - _subcode = 'tAnc' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_turn_remote_root = { - 'with_root_url' : 'rURL', - } - - def turn_remote_root(self, _object, _attributes={}, **_arguments): - """turn remote root: Turn usage of remote root for content on the web on or off. If turning \xd2on\xd3, supply a string as second parameter. - Required argument: \xd2on\xd3 or \xd2off\xd3, to turn remote root on or off - Keyword argument with_root_url: The remote root to use, in the form of \xd2http://www.apple.com/help/\xd3. - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'HIT ' - _subcode = 'tRem' - - aetools.keysubst(_arguments, self._argmap_turn_remote_root) - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def use_tokenizer(self, _object, _attributes={}, **_arguments): - """use tokenizer: Tells the indexing tool which tokenizer to use. - Required argument: Specify \xd2English\xd3, \xd2European\xd3, \xd2Japanese\xd3, \xd2Korean\xd3, or \xd2Simple\xd3. - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'HIT ' - _subcode = 'uTok' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - -class application(aetools.ComponentItem): - """application - Application class """ - want = 'capp' -class _Prop_idleStatus(aetools.NProperty): - """idleStatus - """ - which = 'sIdl' - want = 'bool' -application._superclassnames = [] -application._privpropdict = { - 'idleStatus' : _Prop_idleStatus, -} -application._privelemdict = { -} - -# -# Indices of types declared in this module -# -_classdeclarations = { - 'capp' : application, -} - -_propdeclarations = { - 'sIdl' : _Prop_idleStatus, -} - -_compdeclarations = { -} - -_enumdeclarations = { -} diff --git a/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Miscellaneous_Standards.py b/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Miscellaneous_Standards.py deleted file mode 100644 index 3cf745f98..000000000 --- a/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Miscellaneous_Standards.py +++ /dev/null @@ -1,49 +0,0 @@ -"""Suite Miscellaneous Standards: Useful events that aren\xd5t in any other suite -Level 0, version 0 - -Generated from /Developer/Applications/Apple Help Indexing Tool.app -AETE/AEUT resource version 1/1, language 0, script 0 -""" - -import aetools -import MacOS - -_code = 'misc' - -class Miscellaneous_Standards_Events: - - def revert(self, _object, _attributes={}, **_arguments): - """revert: Revert an object to the most recently saved version - Required argument: object to revert - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'misc' - _subcode = 'rvrt' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - -# -# Indices of types declared in this module -# -_classdeclarations = { -} - -_propdeclarations = { -} - -_compdeclarations = { -} - -_enumdeclarations = { -} diff --git a/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Required_Suite.py b/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Required_Suite.py deleted file mode 100644 index eb9fee001..000000000 --- a/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Required_Suite.py +++ /dev/null @@ -1,32 +0,0 @@ -"""Suite Required Suite: Terms that every application should support -Level 1, version 1 - -Generated from /Developer/Applications/Apple Help Indexing Tool.app -AETE/AEUT resource version 1/1, language 0, script 0 -""" - -import aetools -import MacOS - -_code = 'reqd' - -from StdSuites.Required_Suite import * -class Required_Suite_Events(Required_Suite_Events): - - pass - - -# -# Indices of types declared in this module -# -_classdeclarations = { -} - -_propdeclarations = { -} - -_compdeclarations = { -} - -_enumdeclarations = { -} diff --git a/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Standard_Suite.py b/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Standard_Suite.py deleted file mode 100644 index 0e62a02f5..000000000 --- a/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/Standard_Suite.py +++ /dev/null @@ -1,343 +0,0 @@ -"""Suite Standard Suite: Common terms for most applications -Level 1, version 1 - -Generated from /Developer/Applications/Apple Help Indexing Tool.app -AETE/AEUT resource version 1/1, language 0, script 0 -""" - -import aetools -import MacOS - -_code = 'CoRe' - -from StdSuites.Standard_Suite import * -class Standard_Suite_Events(Standard_Suite_Events): - - _argmap_close = { - 'saving' : 'savo', - 'in_' : 'kfil', - } - - def close(self, _object, _attributes={}, **_arguments): - """close: Close an object - Required argument: the objects to close - Keyword argument saving: specifies whether or not changes should be saved before closing - Keyword argument in_: the file in which to save the object - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'core' - _subcode = 'clos' - - aetools.keysubst(_arguments, self._argmap_close) - _arguments['----'] = _object - - aetools.enumsubst(_arguments, 'savo', _Enum_savo) - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def data_size(self, _object, _attributes={}, **_arguments): - """data size: Return the size in bytes of an object - Required argument: the object whose data size is to be returned - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: the size of the object in bytes - """ - _code = 'core' - _subcode = 'dsiz' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def get(self, _object, _attributes={}, **_arguments): - """get: Get the data for an object - Required argument: the object whose data is to be returned - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: The data from the object - """ - _code = 'core' - _subcode = 'getd' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_make = { - 'new' : 'kocl', - 'at' : 'insh', - 'with_data' : 'data', - 'with_properties' : 'prdt', - } - - def make(self, _no_object=None, _attributes={}, **_arguments): - """make: Make a new element - Keyword argument new: the class of the new element - Keyword argument at: the location at which to insert the element - Keyword argument with_data: the initial data for the element - Keyword argument with_properties: the initial values for the properties of the element - Keyword argument _attributes: AppleEvent attribute dictionary - Returns: Object specifier for the new element - """ - _code = 'core' - _subcode = 'crel' - - aetools.keysubst(_arguments, self._argmap_make) - if _no_object is not None: raise TypeError, 'No direct arg expected' - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def open(self, _object, _attributes={}, **_arguments): - """open: Open the specified object(s) - Required argument: Objects to open. Can be a list of files or an object specifier. - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'aevt' - _subcode = 'odoc' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - def print_(self, _object, _attributes={}, **_arguments): - """print: Print the specified object(s) - Required argument: Objects to print. Can be a list of files or an object specifier. - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'aevt' - _subcode = 'pdoc' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_save = { - 'in_' : 'kfil', - 'as' : 'fltp', - } - - def save(self, _object, _attributes={}, **_arguments): - """save: save a set of objects - Required argument: Objects to save. - Keyword argument in_: the file in which to save the object(s) - Keyword argument as: the file type of the document in which to save the data - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'core' - _subcode = 'save' - - aetools.keysubst(_arguments, self._argmap_save) - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - _argmap_set = { - 'to' : 'data', - } - - def set(self, _object, _attributes={}, **_arguments): - """set: Set an object\xd5s data - Required argument: the object to change - Keyword argument to: the new value - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'core' - _subcode = 'setd' - - aetools.keysubst(_arguments, self._argmap_set) - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - -class application(aetools.ComponentItem): - """application - An application program """ - want = 'capp' -# element 'cwin' as ['indx', 'name', 'rele'] -# element 'docu' as ['name'] - -class window(aetools.ComponentItem): - """window - A Window """ - want = 'cwin' -class _Prop_bounds(aetools.NProperty): - """bounds - the boundary rectangle for the window """ - which = 'pbnd' - want = 'qdrt' -class _Prop_closeable(aetools.NProperty): - """closeable - Does the window have a close box? """ - which = 'hclb' - want = 'bool' -class _Prop_floating(aetools.NProperty): - """floating - Does the window float? """ - which = 'isfl' - want = 'bool' -class _Prop_index(aetools.NProperty): - """index - the number of the window """ - which = 'pidx' - want = 'long' -class _Prop_modal(aetools.NProperty): - """modal - Is the window modal? """ - which = 'pmod' - want = 'bool' -class _Prop_name(aetools.NProperty): - """name - the title of the window """ - which = 'pnam' - want = 'itxt' -class _Prop_position(aetools.NProperty): - """position - upper left coordinates of window """ - which = 'ppos' - want = 'QDpt' -class _Prop_resizable(aetools.NProperty): - """resizable - Is the window resizable? """ - which = 'prsz' - want = 'bool' -class _Prop_titled(aetools.NProperty): - """titled - Does the window have a title bar? """ - which = 'ptit' - want = 'bool' -class _Prop_visible(aetools.NProperty): - """visible - is the window visible? """ - which = 'pvis' - want = 'bool' -class _Prop_zoomable(aetools.NProperty): - """zoomable - Is the window zoomable? """ - which = 'iszm' - want = 'bool' -class _Prop_zoomed(aetools.NProperty): - """zoomed - Is the window zoomed? """ - which = 'pzum' - want = 'bool' - -class document(aetools.ComponentItem): - """document - A Document """ - want = 'docu' -class _Prop_modified(aetools.NProperty): - """modified - Has the document been modified since the last save? """ - which = 'imod' - want = 'bool' -application._superclassnames = [] -application._privpropdict = { -} -application._privelemdict = { - 'document' : document, - 'window' : window, -} -window._superclassnames = [] -window._privpropdict = { - 'bounds' : _Prop_bounds, - 'closeable' : _Prop_closeable, - 'floating' : _Prop_floating, - 'index' : _Prop_index, - 'modal' : _Prop_modal, - 'name' : _Prop_name, - 'position' : _Prop_position, - 'resizable' : _Prop_resizable, - 'titled' : _Prop_titled, - 'visible' : _Prop_visible, - 'zoomable' : _Prop_zoomable, - 'zoomed' : _Prop_zoomed, -} -window._privelemdict = { -} -document._superclassnames = [] -document._privpropdict = { - 'modified' : _Prop_modified, - 'name' : _Prop_name, -} -document._privelemdict = { -} -_Enum_savo = { - 'yes' : 'yes ', # Save objects now - 'no' : 'no ', # Do not save objects - 'ask' : 'ask ', # Ask the user whether to save -} - - -# -# Indices of types declared in this module -# -_classdeclarations = { - 'capp' : application, - 'cwin' : window, - 'docu' : document, -} - -_propdeclarations = { - 'hclb' : _Prop_closeable, - 'imod' : _Prop_modified, - 'isfl' : _Prop_floating, - 'iszm' : _Prop_zoomable, - 'pbnd' : _Prop_bounds, - 'pidx' : _Prop_index, - 'pmod' : _Prop_modal, - 'pnam' : _Prop_name, - 'ppos' : _Prop_position, - 'prsz' : _Prop_resizable, - 'ptit' : _Prop_titled, - 'pvis' : _Prop_visible, - 'pzum' : _Prop_zoomed, -} - -_compdeclarations = { -} - -_enumdeclarations = { - 'savo' : _Enum_savo, -} diff --git a/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/__init__.py b/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/__init__.py deleted file mode 100644 index 5359df53c..000000000 --- a/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/__init__.py +++ /dev/null @@ -1,78 +0,0 @@ -""" -Package generated from /Developer/Applications/Apple Help Indexing Tool.app -""" -import aetools -Error = aetools.Error -import Standard_Suite -import Help_Indexing_Tool_Suite -import odds_and_ends -import Miscellaneous_Standards -import Required_Suite - - -_code_to_module = { - 'CoRe' : Standard_Suite, - 'HIT ' : Help_Indexing_Tool_Suite, - 'Odds' : odds_and_ends, - 'misc' : Miscellaneous_Standards, - 'reqd' : Required_Suite, -} - - - -_code_to_fullname = { - 'CoRe' : ('HelpIndexingTool.Standard_Suite', 'Standard_Suite'), - 'HIT ' : ('HelpIndexingTool.Help_Indexing_Tool_Suite', 'Help_Indexing_Tool_Suite'), - 'Odds' : ('HelpIndexingTool.odds_and_ends', 'odds_and_ends'), - 'misc' : ('HelpIndexingTool.Miscellaneous_Standards', 'Miscellaneous_Standards'), - 'reqd' : ('HelpIndexingTool.Required_Suite', 'Required_Suite'), -} - -from Standard_Suite import * -from Help_Indexing_Tool_Suite import * -from odds_and_ends import * -from Miscellaneous_Standards import * -from Required_Suite import * - -def getbaseclasses(v): - if not getattr(v, '_propdict', None): - v._propdict = {} - v._elemdict = {} - for superclassname in getattr(v, '_superclassnames', []): - superclass = eval(superclassname) - getbaseclasses(superclass) - v._propdict.update(getattr(superclass, '_propdict', {})) - v._elemdict.update(getattr(superclass, '_elemdict', {})) - v._propdict.update(getattr(v, '_privpropdict', {})) - v._elemdict.update(getattr(v, '_privelemdict', {})) - -import StdSuites - -# -# Set property and element dictionaries now that all classes have been defined -# -getbaseclasses(window) -getbaseclasses(application) -getbaseclasses(document) -getbaseclasses(application) - -# -# Indices of types declared in this module -# -_classdeclarations = { - 'cwin' : window, - 'capp' : application, - 'docu' : document, - 'capp' : application, -} - - -class HelpIndexingTool(Standard_Suite_Events, - Help_Indexing_Tool_Suite_Events, - odds_and_ends_Events, - Miscellaneous_Standards_Events, - Required_Suite_Events, - aetools.TalkTo): - _signature = 'hiti' - - _moduleName = 'HelpIndexingTool' diff --git a/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/odds_and_ends.py b/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/odds_and_ends.py deleted file mode 100644 index 7ee46f35c..000000000 --- a/project/jni/python/src/Mac/Tools/Doc/HelpIndexingTool/odds_and_ends.py +++ /dev/null @@ -1,49 +0,0 @@ -"""Suite odds and ends: Things that should be in some standard suite, but aren\xd5t -Level 1, version 1 - -Generated from /Developer/Applications/Apple Help Indexing Tool.app -AETE/AEUT resource version 1/1, language 0, script 0 -""" - -import aetools -import MacOS - -_code = 'Odds' - -class odds_and_ends_Events: - - def select(self, _object=None, _attributes={}, **_arguments): - """select: Select the specified object - Required argument: the object to select - Keyword argument _attributes: AppleEvent attribute dictionary - """ - _code = 'misc' - _subcode = 'slct' - - if _arguments: raise TypeError, 'No optional args expected' - _arguments['----'] = _object - - - _reply, _arguments, _attributes = self.send(_code, _subcode, - _arguments, _attributes) - if _arguments.get('errn', 0): - raise aetools.Error, aetools.decodeerror(_arguments) - # XXXX Optionally decode result - if _arguments.has_key('----'): - return _arguments['----'] - - -# -# Indices of types declared in this module -# -_classdeclarations = { -} - -_propdeclarations = { -} - -_compdeclarations = { -} - -_enumdeclarations = { -} diff --git a/project/jni/python/src/Mac/Tools/Doc/README b/project/jni/python/src/Mac/Tools/Doc/README deleted file mode 100644 index 4f4d53d01..000000000 --- a/project/jni/python/src/Mac/Tools/Doc/README +++ /dev/null @@ -1,35 +0,0 @@ -In this directory you can build the Python documentation in a form that -is suitable for access with Apple Help Viewer. This will enable the -"Python Documentation" menu entries in the MacPython IDE Help menu. - -Unfortunately the procedure to build the docs is not very streamlined. - -First, edit setup.py. At the top, edit MAJOR_VERSION and MINOR_VERSION, -and check that DESTDIR makes sense. The documentation will be installed -inside PythonIDE.app. - -In DocBuild.initialize_options, set self.download to True if you want to -download the docs. Set it to False if you want to build the docs from -the source tree, but this requires LaTex and lots of other stuff. -Doable, but not easy. - -Second, if you want to download the docs you may need to do a couple -more edits. The way the docs are packaged will often change between -major releases. Fiddle DocBuild.downloadDocs to make it do the right -thing (download the docs from python.org, unpack them, rename the -directory to "build/html"). - -After these edits you should be ready to roll. "pythonw setup.py build" -should download and unpack (or build) the docs. Next, it will do some -magic to make the docs indexable. Finally, it will run the Apple Help -Indexing Tool. (This last step is the reason you must use "pythonw" as -opposed to "python"). Usually it will time out while waiting for AHIT to -do its work. Wait until AHIT is done. - -Now you're ready to install with "python setup.py install". - -After this is done test your work. Fire up PythonIDE, and check that -Help->Python Documentation brings up the documentation in the Help Viewer. -Also open an IDE edit window, type something like "import sys", select -"import", and use Help->Lookup in Python Documentation to check that the -index has been generated correctly. diff --git a/project/jni/python/src/Mac/Tools/Doc/setup.py b/project/jni/python/src/Mac/Tools/Doc/setup.py deleted file mode 100644 index 05c678f46..000000000 --- a/project/jni/python/src/Mac/Tools/Doc/setup.py +++ /dev/null @@ -1,214 +0,0 @@ -# Build and install an Apple Help Viewer compatible version of the Python -# documentation into the framework. -# Code by Bill Fancher, with some modifications by Jack Jansen. -# -# You must run this as a two-step process -# 1. python setupDocs.py build -# 2. Wait for Apple Help Indexing Tool to finish -# 3. python setupDocs.py install -# -# To do: -# - test whether the docs are available locally before downloading -# - fix buildDocsFromSource -# - Get documentation version from sys.version, fallback to 2.2.1 -# - See if we can somehow detect that Apple Help Indexing Tool is finished -# - data_files to setup() doesn't seem the right way to pass the arguments -# -import sys, os, re -from distutils.cmd import Command -from distutils.command.build import build -from distutils.core import setup -from distutils.file_util import copy_file -from distutils.dir_util import copy_tree -from distutils.log import log -from distutils.spawn import spawn -from distutils import sysconfig, dep_util -from distutils.util import change_root -import HelpIndexingTool -import Carbon.File -import time - -MAJOR_VERSION='2.4' -MINOR_VERSION='2.4.1' -DESTDIR='/Applications/MacPython-%s/PythonIDE.app/Contents/Resources/English.lproj/PythonDocumentation' % MAJOR_VERSION - -class DocBuild(build): - def initialize_options(self): - build.initialize_options(self) - self.build_html = None - self.build_dest = None - self.download = 1 - self.doc_version = MINOR_VERSION # Only needed if download is true - - def finalize_options(self): - build.finalize_options(self) - if self.build_html is None: - self.build_html = os.path.join(self.build_base, 'html') - if self.build_dest is None: - self.build_dest = os.path.join(self.build_base, 'PythonDocumentation') - - def spawn(self, *args): - spawn(args, 1, self.verbose, self.dry_run) - - def downloadDocs(self): - workdir = os.getcwd() - # XXX Note: the next strings may change from version to version - url = 'http://www.python.org/ftp/python/doc/%s/html-%s.tar.bz2' % \ - (self.doc_version,self.doc_version) - tarfile = 'html-%s.tar.bz2' % self.doc_version - dirname = 'Python-Docs-%s' % self.doc_version - - if os.path.exists(self.build_html): - raise RuntimeError, '%s: already exists, please remove and try again' % self.build_html - os.chdir(self.build_base) - self.spawn('curl','-O', url) - self.spawn('tar', '-xjf', tarfile) - os.rename(dirname, 'html') - os.chdir(workdir) -## print "** Please unpack %s" % os.path.join(self.build_base, tarfile) -## print "** Unpack the files into %s" % self.build_html -## raise RuntimeError, "You need to unpack the docs manually" - - def buildDocsFromSource(self): - srcdir = '../../..' - docdir = os.path.join(srcdir, 'Doc') - htmldir = os.path.join(docdir, 'html') - spawn(('make','--directory', docdir, 'html'), 1, self.verbose, self.dry_run) - self.mkpath(self.build_html) - copy_tree(htmldir, self.build_html) - - def ensureHtml(self): - if not os.path.exists(self.build_html): - if self.download: - self.downloadDocs() - else: - self.buildDocsFromSource() - - def hackIndex(self): - ind_html = 'index.html' - #print 'self.build_dest =', self.build_dest - hackedIndex = file(os.path.join(self.build_dest, ind_html),'w') - origIndex = file(os.path.join(self.build_html,ind_html)) - r = re.compile('', re.DOTALL) - hackedIndex.write(r.sub('',origIndex.read())) - - def hackFile(self,d,f): - origPath = os.path.join(d,f) - assert(origPath[:len(self.build_html)] == self.build_html) - outPath = os.path.join(self.build_dest, d[len(self.build_html)+1:], f) - (name, ext) = os.path.splitext(f) - if os.path.isdir(origPath): - self.mkpath(outPath) - elif ext == '.html': - if self.verbose: print 'hacking %s to %s' % (origPath,outPath) - hackedFile = file(outPath, 'w') - origFile = file(origPath,'r') - hackedFile.write(self.r.sub('
', origFile.read())) - else: - copy_file(origPath, outPath) - - def hackHtml(self): - self.r = re.compile('
') - os.path.walk(self.build_html, self.visit, None) - - def visit(self, dummy, dirname, filenames): - for f in filenames: - self.hackFile(dirname, f) - - def makeHelpIndex(self): - app = '/Developer/Applications/Apple Help Indexing Tool.app' - self.spawn('open', '-a', app , self.build_dest) - print "Please wait until Apple Help Indexing Tool finishes before installing" - - def makeHelpIndex(self): - app = HelpIndexingTool.HelpIndexingTool(start=1) - app.open(Carbon.File.FSSpec(self.build_dest)) - sys.stderr.write("Waiting for Help Indexing Tool to start...") - while 1: - # This is bad design in the suite generation code! - idle = app._get(HelpIndexingTool.Help_Indexing_Tool_Suite._Prop_idleStatus()) - time.sleep(10) - if not idle: break - sys.stderr.write(".") - sys.stderr.write("\n") - sys.stderr.write("Waiting for Help Indexing Tool to finish...") - while 1: - # This is bad design in the suite generation code! - idle = app._get(HelpIndexingTool.Help_Indexing_Tool_Suite._Prop_idleStatus()) - time.sleep(10) - if idle: break - sys.stderr.write(".") - sys.stderr.write("\n") - - - def run(self): - self.ensure_finalized() - self.mkpath(self.build_base) - self.ensureHtml() - if not os.path.isdir(self.build_html): - raise RuntimeError, \ - "Can't find source folder for documentation." - self.mkpath(self.build_dest) - if dep_util.newer(os.path.join(self.build_html,'index.html'), os.path.join(self.build_dest,'index.html')): - self.mkpath(self.build_dest) - self.hackHtml() - self.hackIndex() - self.makeHelpIndex() - -class AHVDocInstall(Command): - description = "install Apple Help Viewer html files" - user_options = [('install-doc=', 'd', - 'directory to install HTML tree'), - ('root=', None, - "install everything relative to this alternate root directory"), - ] - - def initialize_options(self): - self.build_dest = None - self.install_doc = None - self.prefix = None - self.root = None - - def finalize_options(self): - self.set_undefined_options('install', - ('prefix', 'prefix'), - ('root', 'root')) -# import pdb ; pdb.set_trace() - build_cmd = self.get_finalized_command('build') - if self.build_dest is None: - build_cmd = self.get_finalized_command('build') - self.build_dest = build_cmd.build_dest - if self.install_doc is None: - self.install_doc = os.path.join(self.prefix, DESTDIR) - print 'INSTALL', self.build_dest, '->', self.install_doc - - def run(self): - self.finalize_options() - self.ensure_finalized() - print "Running Installer" - instloc = self.install_doc - if self.root: - instloc = change_root(self.root, instloc) - self.mkpath(instloc) - copy_tree(self.build_dest, instloc) - print "Installation complete" - -def mungeVersion(infile, outfile): - i = file(infile,'r') - o = file(outfile,'w') - o.write(re.sub('\$\(VERSION\)',sysconfig.get_config_var('VERSION'),i.read())) - i.close() - o.close() - -def main(): - # turn off warnings when deprecated modules are imported -## import warnings -## warnings.filterwarnings("ignore",category=DeprecationWarning) - setup(name = 'Documentation', - version = '%d.%d' % sys.version_info[:2], - cmdclass = {'install_data':AHVDocInstall, 'build':DocBuild}, - data_files = ['dummy'], - ) - -if __name__ == '__main__': - main() diff --git a/project/jni/python/src/Mac/Tools/fixapplepython23.py b/project/jni/python/src/Mac/Tools/fixapplepython23.py deleted file mode 100644 index 6ba54019f..000000000 --- a/project/jni/python/src/Mac/Tools/fixapplepython23.py +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/python -"""fixapplepython23 - Fix Apple-installed Python 2.3 (on Mac OS X 10.3) - -Python 2.3 (and 2.3.X for X<5) have the problem that building an extension -for a framework installation may accidentally pick up the framework -of a newer Python, in stead of the one that was used to build the extension. - -This script modifies the Makefile (in .../lib/python2.3/config) to use -the newer method of linking extensions with "-undefined dynamic_lookup" -which fixes this problem. - -The script will first check all prerequisites, and return a zero exit -status also when nothing needs to be fixed. -""" -import sys -import os -import gestalt - -MAKEFILE='/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/Makefile' -CHANGES=(( - 'LDSHARED=\t$(CC) $(LDFLAGS) -bundle -framework $(PYTHONFRAMEWORK)\n', - 'LDSHARED=\t$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup\n' - ),( - 'BLDSHARED=\t$(CC) $(LDFLAGS) -bundle -framework $(PYTHONFRAMEWORK)\n', - 'BLDSHARED=\t$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup\n' - ),( - 'CC=\t\tgcc\n', - 'CC=\t\t/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-gcc\n' - ),( - 'CXX=\t\tc++\n', - 'CXX=\t\t/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-g++\n' -)) - -GCC_SCRIPT='/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-gcc' -GXX_SCRIPT='/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/config/PantherPythonFix/run-g++' -SCRIPT="""#!/bin/sh -export MACOSX_DEPLOYMENT_TARGET=10.3 -exec %s "${@}" -""" - -def findline(lines, start): - """return line starting with given string or -1""" - for i in range(len(lines)): - if lines[i][:len(start)] == start: - return i - return -1 - -def fix(makefile, do_apply): - """Fix the Makefile, if required.""" - fixed = False - lines = open(makefile).readlines() - - for old, new in CHANGES: - i = findline(lines, new) - if i >= 0: - # Already fixed - continue - i = findline(lines, old) - if i < 0: - print 'fixapplepython23: Python installation not fixed (appears broken)' - print 'fixapplepython23: missing line:', old - return 2 - lines[i] = new - fixed = True - - if fixed: - if do_apply: - print 'fixapplepython23: Fix to Apple-installed Python 2.3 applied' - os.rename(makefile, makefile + '~') - open(makefile, 'w').writelines(lines) - return 0 - else: - print 'fixapplepython23: Fix to Apple-installed Python 2.3 should be applied' - return 1 - else: - print 'fixapplepython23: No fix needed, appears to have been applied before' - return 0 - -def makescript(filename, compiler): - """Create a wrapper script for a compiler""" - dirname = os.path.split(filename)[0] - if not os.access(dirname, os.X_OK): - os.mkdir(dirname, 0755) - fp = open(filename, 'w') - fp.write(SCRIPT % compiler) - fp.close() - os.chmod(filename, 0755) - print 'fixapplepython23: Created', filename - -def main(): - # Check for -n option - if len(sys.argv) > 1 and sys.argv[1] == '-n': - do_apply = False - else: - do_apply = True - # First check OS version - if sys.byteorder == 'little': - # All intel macs are fine - print "fixapplypython23: no fix is needed on MacOSX on Intel" - sys.exit(0) - - if gestalt.gestalt('sysv') < 0x1030: - print 'fixapplepython23: no fix needed on MacOSX < 10.3' - sys.exit(0) - - if gestalt.gestalt('sysv') >= 0x1040: - print 'fixapplepython23: no fix needed on MacOSX >= 10.4' - sys.exit(0) - - # Test that a framework Python is indeed installed - if not os.path.exists(MAKEFILE): - print 'fixapplepython23: Python framework does not appear to be installed (?), nothing fixed' - sys.exit(0) - # Check that we can actually write the file - if do_apply and not os.access(MAKEFILE, os.W_OK): - print 'fixapplepython23: No write permission, please run with "sudo"' - sys.exit(2) - # Create the shell scripts - if do_apply: - if not os.access(GCC_SCRIPT, os.X_OK): - makescript(GCC_SCRIPT, "gcc") - if not os.access(GXX_SCRIPT, os.X_OK): - makescript(GXX_SCRIPT, "g++") - # Finally fix the makefile - rv = fix(MAKEFILE, do_apply) - #sys.exit(rv) - sys.exit(0) - -if __name__ == '__main__': - main() diff --git a/project/jni/python/src/Mac/Tools/pythonw.c b/project/jni/python/src/Mac/Tools/pythonw.c deleted file mode 100644 index e70a76f84..000000000 --- a/project/jni/python/src/Mac/Tools/pythonw.c +++ /dev/null @@ -1,17 +0,0 @@ -/* - * This wrapper program executes a python executable hidden inside an - * application bundle inside the Python framework. This is needed to run - * GUI code: some GUI API's don't work unless the program is inside an - * application bundle. - */ -#include -#include - -static char Python[] = PYTHONWEXECUTABLE; - -int main(int argc, char **argv) { - argv[0] = Python; - execv(Python, argv); - err(1, "execv: %s", Python); - /* NOTREACHED */ -} diff --git a/project/jni/python/src/Mac/scripts/BuildApplet.icns b/project/jni/python/src/Mac/scripts/BuildApplet.icns deleted file mode 100644 index ea0214c6746924a434b4204bac3da8406fdc1407..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120107 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 - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeExtensions - - py - - CFBundleTypeIconFile - PythonSource.icns - CFBundleTypeName - Python Module - CFBundleTypeOSTypes - - TEXT - - CFBundleTypeRole - Viewer - - - CFBundleExecutable - BuildApplet - CFBundleGetInfoString - 2.5alpha0, (c) 2004 Python Software Foundation. - CFBundleIconFile - BuildApplet.icns - CFBundleIdentifier - org.python.buildapplet - CFBundleInfoDictionaryVersion - 6.0 - CFBundleLongVersionString - 2.5alpha0, (c) 2004 Python Software Foundation. - CFBundleName - PythonIDE - CFBundlePackageType - APPL - CFBundleShortVersionString - 2.5alpha0 - CFBundleSignature - Pide - CFBundleVersion - 2.5alpha0 - CSResourcesFileMapped - - LSRequiresCarbon - - NSHumanReadableCopyright - (c) 2004 Python Software Foundation. - - diff --git a/project/jni/python/src/Mac/scripts/BuildApplet.py b/project/jni/python/src/Mac/scripts/BuildApplet.py deleted file mode 100644 index e71ebc126..000000000 --- a/project/jni/python/src/Mac/scripts/BuildApplet.py +++ /dev/null @@ -1,149 +0,0 @@ -"""Create an applet from a Python script. - -This puts up a dialog asking for a Python source file ('TEXT'). -The output is a file with the same name but its ".py" suffix dropped. -It is created by copying an applet template and then adding a 'PYC ' -resource named __main__ containing the compiled, marshalled script. -""" - - -import sys -sys.stdout = sys.stderr - -import os -import MacOS -import EasyDialogs -import buildtools -import getopt - -if not sys.executable.startswith(sys.exec_prefix): - # Oh, the joys of using a python script to bootstrap applicatin bundles - # sys.executable points inside the current application bundle. Because this - # path contains blanks (two of them actually) this path isn't usable on - # #! lines. Reset sys.executable to point to the embedded python interpreter - sys.executable = os.path.join(sys.prefix, - 'Resources/Python.app/Contents/MacOS/Python') - - # Just in case we're not in a framework: - if not os.path.exists(sys.executable): - sys.executable = os.path.join(sys.exec_prefix, 'bin/python') - -def main(): - try: - buildapplet() - except buildtools.BuildError, detail: - EasyDialogs.Message(detail) - - -def buildapplet(): - buildtools.DEBUG=1 - - # Find the template - # (there's no point in proceeding if we can't find it) - - template = buildtools.findtemplate() - - # Ask for source text if not specified in sys.argv[1:] - - if not sys.argv[1:]: - filename = EasyDialogs.AskFileForOpen(message='Select Python source or applet:', - typeList=('TEXT', 'APPL')) - if not filename: - return - tp, tf = os.path.split(filename) - if tf[-3:] == '.py': - tf = tf[:-3] - else: - tf = tf + '.applet' - dstfilename = EasyDialogs.AskFileForSave(message='Save application as:', - savedFileName=tf) - if not dstfilename: return - cr, tp = MacOS.GetCreatorAndType(filename) - if tp == 'APPL': - buildtools.update(template, filename, dstfilename) - else: - buildtools.process(template, filename, dstfilename, 1) - else: - - SHORTOPTS = "o:r:ne:v?PR" - LONGOPTS=("output=", "resource=", "noargv", "extra=", "verbose", "help", "python=", "destroot=") - try: - options, args = getopt.getopt(sys.argv[1:], SHORTOPTS, LONGOPTS) - except getopt.error: - usage() - if options and len(args) > 1: - sys.stderr.write("Cannot use options when specifying multiple input files") - sys.exit(1) - dstfilename = None - rsrcfilename = None - raw = 0 - extras = [] - verbose = None - destroot = '' - for opt, arg in options: - if opt in ('-o', '--output'): - dstfilename = arg - elif opt in ('-r', '--resource'): - rsrcfilename = arg - elif opt in ('-n', '--noargv'): - raw = 1 - elif opt in ('-e', '--extra'): - if ':' in arg: - arg = arg.split(':') - extras.append(arg) - elif opt in ('-P', '--python'): - # This is a very dirty trick. We set sys.executable - # so that bundlebuilder will use this in the #! line - # for the applet bootstrap. - sys.executable = arg - elif opt in ('-v', '--verbose'): - verbose = Verbose() - elif opt in ('-?', '--help'): - usage() - elif opt in ('-d', '--destroot'): - destroot = arg - # On OS9 always be verbose - if sys.platform == 'mac' and not verbose: - verbose = 'default' - # Loop over all files to be processed - for filename in args: - cr, tp = MacOS.GetCreatorAndType(filename) - if tp == 'APPL': - buildtools.update(template, filename, dstfilename) - else: - buildtools.process(template, filename, dstfilename, 1, - rsrcname=rsrcfilename, others=extras, raw=raw, - progress=verbose, destroot=destroot) - -def usage(): - print "BuildApplet creates an application from a Python source file" - print "Usage:" - print " BuildApplet interactive, single file, no options" - print " BuildApplet src1.py src2.py ... non-interactive multiple file" - print " BuildApplet [options] src.py non-interactive single file" - print "Options:" - print " --output o Output file; default based on source filename, short -o" - print " --resource r Resource file; default based on source filename, short -r" - print " --noargv Build applet without drag-and-drop sys.argv emulation, short -n, OSX only" - print " --extra src[:dst] Extra file to put in .app bundle, short -e, OSX only" - print " --verbose Verbose, short -v" - print " --help This message, short -?" - sys.exit(1) - -class Verbose: - """This class mimics EasyDialogs.ProgressBar but prints to stderr""" - def __init__(self, *args): - if args and args[0]: - self.label(args[0]) - - def set(self, *args): - pass - - def inc(self, *args): - pass - - def label(self, str): - sys.stderr.write(str+'\n') - -if __name__ == '__main__': - main() diff --git a/project/jni/python/src/Mac/scripts/BuildApplet.rsrc b/project/jni/python/src/Mac/scripts/BuildApplet.rsrc deleted file mode 100644 index edabc61779e76ce425155e9dd891be09124fe16c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3169 zcmZQz6=PsvV!#9-F-`^s1|tRr1_cI)nji)S9{!@@qU4}pR~JSG1_nkDfuR>9$hDn; zfpa?p17n1lh(d@$27`z~K&{}03_%7f#&k6yeICDEOgubR3{jN=PNkVSDUJmNIjJRj zAj7j)DTHOFmZuiEDEPV-5=;{aG}{-N&B*BFvUeevVGwAYETGf(qP!npr^#}mXnE*!J%2>wu$h{>ma`{a(bm_Gcqg- zceY|+0Qn!{9tH*n1_p)&3=E6`3=B*w7#LVW7#KKJ7#M`6FfjlB&%naK&;X(t8JHL# zn3;i*f%yR=1G54n0}~iC|NpPY!oaYP`Tu`DhBYhB{J_A#{DXmk{SN~J{~rbh`9EO$+5i8C*#G|@10xv!XJGvQ{{iFw z{|b!%|A8^ce)j+WA@=|O!@&6e2Lt2(4-5?Q4;UEu4=^yWW3`{%F(AMP;u;4~kT5l{ zI&e7H{}2!mkP{FR5Vrr#r@-gH)Bp)AMh4~v_5=I}?0?9AkpCzDN&d6_Z~h1T2biJq zED)2ZN&d%g*nbAR3jQ-}z^4EtjYk2<=nV}2SwS=wXZ&Yi*ucQ>pB0BZSQ@MVL;rsa zfMWcA1_o^gZ8-R;{qrZP5g6K0r5QkehHJ;r%>b5%TksRzbcj5Pek|sr=m$9n*$W^a zzzz8M^Z$Q{m2f2>^I-B&`$0m;@-S&_sQZ!SLDr#Skoj?OaS#JQw!@vLtqlpk|Nr6g z45)fRJdj3&JOjf9)(xy1Hv9xT0xj@CN;g2{!3wZQGi-o@pW52kq(Me7{Qvp$=TF?y z3=IGA=>{3`A4|-E#Nike?r;vB7@!)7IIH;4lzsSsBEZjzs^CLF0I~vp23CG~Bn=-} z89pNM`56KN5b~fX24jc@eue{QK;X_@sEJ@X5CM^A;Aa3ypMgm;@H6n7IdkSL5+5QD zOO!DA|DY0=fdQ`nKLf-9nEVGgAEF<|2U!iq3?FuH0BMK2?>~r-NU#hHU_L`&VCbDQ zXYNCt%fK2K7#e%#EW|Pf1_sv9(9l?fG{{AF?;@l@+Ww+QGcfSOJqMD7lmSo{$rPlv zz@iNnUQj8t(i>D9BdGv0|Fgo>g2M+)Kt%pSvN$|{!TJ9o$sW!Jl?`D3z;iRGpa7c$ zAs9e>22iF&$*vnVY(UGN|KXNFoB%3kp)5?Q0Z9m!lA%c)mb5=G@C$%k26Dy+1_pi} zNR)!<{~w@y7`+>k3O?*+Uh*tN8@v>**h zoq);`Lr~+;Ey&dkEY!fj$k52Z#L(pF?57M8VblR@h2&@fkWnQi6(tNS3=AzmIvE)J z&ux*iwSQ`40BRzE)iP|Ko&IEdRe3MW1u&W`D=|4cD>1J)HIIRT0i!huQ^p{`0bzoj z%fJXWlq=!^LoEXX7()c$&DLQ5pb!=>h6V;1Mk@v$CqEZZV?Vbz_470!< zVqjPnkY7;3z`(Ex>h*oWo>8t03=F4|voli|7#OZ)Cg+$iFfcsIOwO@jU|@KcnOv;Q zz`*b;Gr8D=fq{`NGr8D;fq_wop#hY{IR1g13T87xnm&zS@yB5CCNTRmh^@g0Vsq+& z*o-4AZPb0vt)(7?dYz`*GQVng(@h9lUF!ANXy t>_gOW#3RJnqd{yw|MI-lB88&V;{4L0 1: - srcdir = sys.argv[1] - else: - srcdir = os.path.join(os.path.join(sys.prefix, 'Mac'), 'Modules') - srcdir = os.path.abspath(srcdir) - contents = os.listdir(srcdir) - for name in contents: - moduledir = os.path.join(srcdir, name) - scanmodule = os.path.join(moduledir, name +'scan.py') - if os.path.exists(scanmodule): - if bgenone(moduledir, name): - success.append(name) - else: - failure.append(name) - print 'Done:', string.join(success, ' ') - if failure: - print 'Failed:', string.join(failure, ' ') - return 0 - return 1 - -if __name__ == '__main__': - rv = main() - sys.exit(not rv) diff --git a/project/jni/python/src/Mac/scripts/buildpkg.py b/project/jni/python/src/Mac/scripts/buildpkg.py deleted file mode 100644 index ed5c88f6c..000000000 --- a/project/jni/python/src/Mac/scripts/buildpkg.py +++ /dev/null @@ -1,484 +0,0 @@ -#!/usr/bin/env python - -"""buildpkg.py -- Build OS X packages for Apple's Installer.app. - -This is an experimental command-line tool for building packages to be -installed with the Mac OS X Installer.app application. - -It is much inspired by Apple's GUI tool called PackageMaker.app, that -seems to be part of the OS X developer tools installed in the folder -/Developer/Applications. But apparently there are other free tools to -do the same thing which are also named PackageMaker like Brian Hill's -one: - - http://personalpages.tds.net/~brian_hill/packagemaker.html - -Beware of the multi-package features of Installer.app (which are not -yet supported here) that can potentially screw-up your installation -and are discussed in these articles on Stepwise: - - http://www.stepwise.com/Articles/Technical/Packages/InstallerWoes.html - http://www.stepwise.com/Articles/Technical/Packages/InstallerOnX.html - -Beside using the PackageMaker class directly, by importing it inside -another module, say, there are additional ways of using this module: -the top-level buildPackage() function provides a shortcut to the same -feature and is also called when using this module from the command- -line. - - **************************************************************** - NOTE: For now you should be able to run this even on a non-OS X - system and get something similar to a package, but without - the real archive (needs pax) and bom files (needs mkbom) - inside! This is only for providing a chance for testing to - folks without OS X. - **************************************************************** - -TODO: - - test pre-process and post-process scripts (Python ones?) - - handle multi-volume packages (?) - - integrate into distutils (?) - -Dinu C. Gherman, -gherman@europemail.com -November 2001 - -!! USE AT YOUR OWN RISK !! -""" - -__version__ = 0.2 -__license__ = "FreeBSD" - - -import os, sys, glob, fnmatch, shutil, string, copy, getopt -from os.path import basename, dirname, join, islink, isdir, isfile - -Error = "buildpkg.Error" - -PKG_INFO_FIELDS = """\ -Title -Version -Description -DefaultLocation -DeleteWarning -NeedsAuthorization -DisableStop -UseUserMask -Application -Relocatable -Required -InstallOnly -RequiresReboot -RootVolumeOnly -LongFilenames -LibrarySubdirectory -AllowBackRev -OverwritePermissions -InstallFat\ -""" - -###################################################################### -# Helpers -###################################################################### - -# Convenience class, as suggested by /F. - -class GlobDirectoryWalker: - "A forward iterator that traverses files in a directory tree." - - def __init__(self, directory, pattern="*"): - self.stack = [directory] - self.pattern = pattern - self.files = [] - self.index = 0 - - - def __getitem__(self, index): - while 1: - try: - file = self.files[self.index] - self.index = self.index + 1 - except IndexError: - # pop next directory from stack - self.directory = self.stack.pop() - self.files = os.listdir(self.directory) - self.index = 0 - else: - # got a filename - fullname = join(self.directory, file) - if isdir(fullname) and not islink(fullname): - self.stack.append(fullname) - if fnmatch.fnmatch(file, self.pattern): - return fullname - - -###################################################################### -# The real thing -###################################################################### - -class PackageMaker: - """A class to generate packages for Mac OS X. - - This is intended to create OS X packages (with extension .pkg) - containing archives of arbitrary files that the Installer.app - will be able to handle. - - As of now, PackageMaker instances need to be created with the - title, version and description of the package to be built. - The package is built after calling the instance method - build(root, **options). It has the same name as the constructor's - title argument plus a '.pkg' extension and is located in the same - parent folder that contains the root folder. - - E.g. this will create a package folder /my/space/distutils.pkg/: - - pm = PackageMaker("distutils", "1.0.2", "Python distutils.") - pm.build("/my/space/distutils") - """ - - packageInfoDefaults = { - 'Title': None, - 'Version': None, - 'Description': '', - 'DefaultLocation': '/', - 'DeleteWarning': '', - 'NeedsAuthorization': 'NO', - 'DisableStop': 'NO', - 'UseUserMask': 'YES', - 'Application': 'NO', - 'Relocatable': 'YES', - 'Required': 'NO', - 'InstallOnly': 'NO', - 'RequiresReboot': 'NO', - 'RootVolumeOnly' : 'NO', - 'InstallFat': 'NO', - 'LongFilenames': 'YES', - 'LibrarySubdirectory': 'Standard', - 'AllowBackRev': 'YES', - 'OverwritePermissions': 'NO', - } - - - def __init__(self, title, version, desc): - "Init. with mandatory title/version/description arguments." - - info = {"Title": title, "Version": version, "Description": desc} - self.packageInfo = copy.deepcopy(self.packageInfoDefaults) - self.packageInfo.update(info) - - # variables set later - self.packageRootFolder = None - self.packageResourceFolder = None - self.sourceFolder = None - self.resourceFolder = None - - - def build(self, root, resources=None, **options): - """Create a package for some given root folder. - - With no 'resources' argument set it is assumed to be the same - as the root directory. Option items replace the default ones - in the package info. - """ - - # set folder attributes - self.sourceFolder = root - if resources is None: - self.resourceFolder = root - else: - self.resourceFolder = resources - - # replace default option settings with user ones if provided - fields = self. packageInfoDefaults.keys() - for k, v in options.items(): - if k in fields: - self.packageInfo[k] = v - elif not k in ["OutputDir"]: - raise Error, "Unknown package option: %s" % k - - # Check where we should leave the output. Default is current directory - outputdir = options.get("OutputDir", os.getcwd()) - packageName = self.packageInfo["Title"] - self.PackageRootFolder = os.path.join(outputdir, packageName + ".pkg") - - # do what needs to be done - self._makeFolders() - self._addInfo() - self._addBom() - self._addArchive() - self._addResources() - self._addSizes() - self._addLoc() - - - def _makeFolders(self): - "Create package folder structure." - - # Not sure if the package name should contain the version or not... - # packageName = "%s-%s" % (self.packageInfo["Title"], - # self.packageInfo["Version"]) # ?? - - contFolder = join(self.PackageRootFolder, "Contents") - self.packageResourceFolder = join(contFolder, "Resources") - os.mkdir(self.PackageRootFolder) - os.mkdir(contFolder) - os.mkdir(self.packageResourceFolder) - - def _addInfo(self): - "Write .info file containing installing options." - - # Not sure if options in PKG_INFO_FIELDS are complete... - - info = "" - for f in string.split(PKG_INFO_FIELDS, "\n"): - if self.packageInfo.has_key(f): - info = info + "%s %%(%s)s\n" % (f, f) - info = info % self.packageInfo - base = self.packageInfo["Title"] + ".info" - path = join(self.packageResourceFolder, base) - f = open(path, "w") - f.write(info) - - - def _addBom(self): - "Write .bom file containing 'Bill of Materials'." - - # Currently ignores if the 'mkbom' tool is not available. - - try: - base = self.packageInfo["Title"] + ".bom" - bomPath = join(self.packageResourceFolder, base) - cmd = "mkbom %s %s" % (self.sourceFolder, bomPath) - res = os.system(cmd) - except: - pass - - - def _addArchive(self): - "Write .pax.gz file, a compressed archive using pax/gzip." - - # Currently ignores if the 'pax' tool is not available. - - cwd = os.getcwd() - - # create archive - os.chdir(self.sourceFolder) - base = basename(self.packageInfo["Title"]) + ".pax" - self.archPath = join(self.packageResourceFolder, base) - cmd = "pax -w -f %s %s" % (self.archPath, ".") - res = os.system(cmd) - - # compress archive - cmd = "gzip %s" % self.archPath - res = os.system(cmd) - os.chdir(cwd) - - - def _addResources(self): - "Add Welcome/ReadMe/License files, .lproj folders and scripts." - - # Currently we just copy everything that matches the allowed - # filenames. So, it's left to Installer.app to deal with the - # same file available in multiple formats... - - if not self.resourceFolder: - return - - # find candidate resource files (txt html rtf rtfd/ or lproj/) - allFiles = [] - for pat in string.split("*.txt *.html *.rtf *.rtfd *.lproj", " "): - pattern = join(self.resourceFolder, pat) - allFiles = allFiles + glob.glob(pattern) - - # find pre-process and post-process scripts - # naming convention: packageName.{pre,post}_{upgrade,install} - # Alternatively the filenames can be {pre,post}_{upgrade,install} - # in which case we prepend the package name - packageName = self.packageInfo["Title"] - for pat in ("*upgrade", "*install", "*flight"): - pattern = join(self.resourceFolder, packageName + pat) - pattern2 = join(self.resourceFolder, pat) - allFiles = allFiles + glob.glob(pattern) - allFiles = allFiles + glob.glob(pattern2) - - # check name patterns - files = [] - for f in allFiles: - for s in ("Welcome", "License", "ReadMe"): - if string.find(basename(f), s) == 0: - files.append((f, f)) - if f[-6:] == ".lproj": - files.append((f, f)) - elif basename(f) in ["pre_upgrade", "pre_install", "post_upgrade", "post_install"]: - files.append((f, packageName+"."+basename(f))) - elif basename(f) in ["preflight", "postflight"]: - files.append((f, f)) - elif f[-8:] == "_upgrade": - files.append((f,f)) - elif f[-8:] == "_install": - files.append((f,f)) - - # copy files - for src, dst in files: - src = basename(src) - dst = basename(dst) - f = join(self.resourceFolder, src) - if isfile(f): - shutil.copy(f, os.path.join(self.packageResourceFolder, dst)) - elif isdir(f): - # special case for .rtfd and .lproj folders... - d = join(self.packageResourceFolder, dst) - os.mkdir(d) - files = GlobDirectoryWalker(f) - for file in files: - shutil.copy(file, d) - - - def _addSizes(self): - "Write .sizes file with info about number and size of files." - - # Not sure if this is correct, but 'installedSize' and - # 'zippedSize' are now in Bytes. Maybe blocks are needed? - # Well, Installer.app doesn't seem to care anyway, saying - # the installation needs 100+ MB... - - numFiles = 0 - installedSize = 0 - zippedSize = 0 - - files = GlobDirectoryWalker(self.sourceFolder) - for f in files: - numFiles = numFiles + 1 - installedSize = installedSize + os.lstat(f)[6] - - try: - zippedSize = os.stat(self.archPath+ ".gz")[6] - except OSError: # ignore error - pass - base = self.packageInfo["Title"] + ".sizes" - f = open(join(self.packageResourceFolder, base), "w") - format = "NumFiles %d\nInstalledSize %d\nCompressedSize %d\n" - f.write(format % (numFiles, installedSize, zippedSize)) - - def _addLoc(self): - "Write .loc file." - base = self.packageInfo["Title"] + ".loc" - f = open(join(self.packageResourceFolder, base), "w") - f.write('/') - -# Shortcut function interface - -def buildPackage(*args, **options): - "A Shortcut function for building a package." - - o = options - title, version, desc = o["Title"], o["Version"], o["Description"] - pm = PackageMaker(title, version, desc) - apply(pm.build, list(args), options) - - -###################################################################### -# Tests -###################################################################### - -def test0(): - "Vanilla test for the distutils distribution." - - pm = PackageMaker("distutils2", "1.0.2", "Python distutils package.") - pm.build("/Users/dinu/Desktop/distutils2") - - -def test1(): - "Test for the reportlab distribution with modified options." - - pm = PackageMaker("reportlab", "1.10", - "ReportLab's Open Source PDF toolkit.") - pm.build(root="/Users/dinu/Desktop/reportlab", - DefaultLocation="/Applications/ReportLab", - Relocatable="YES") - -def test2(): - "Shortcut test for the reportlab distribution with modified options." - - buildPackage( - "/Users/dinu/Desktop/reportlab", - Title="reportlab", - Version="1.10", - Description="ReportLab's Open Source PDF toolkit.", - DefaultLocation="/Applications/ReportLab", - Relocatable="YES") - - -###################################################################### -# Command-line interface -###################################################################### - -def printUsage(): - "Print usage message." - - format = "Usage: %s [] []" - print format % basename(sys.argv[0]) - print - print " with arguments:" - print " (mandatory) root: the package root folder" - print " (optional) resources: the package resources folder" - print - print " and options:" - print " (mandatory) opts1:" - mandatoryKeys = string.split("Title Version Description", " ") - for k in mandatoryKeys: - print " --%s" % k - print " (optional) opts2: (with default values)" - - pmDefaults = PackageMaker.packageInfoDefaults - optionalKeys = pmDefaults.keys() - for k in mandatoryKeys: - optionalKeys.remove(k) - optionalKeys.sort() - maxKeyLen = max(map(len, optionalKeys)) - for k in optionalKeys: - format = " --%%s:%s %%s" - format = format % (" " * (maxKeyLen-len(k))) - print format % (k, repr(pmDefaults[k])) - - -def main(): - "Command-line interface." - - shortOpts = "" - keys = PackageMaker.packageInfoDefaults.keys() - longOpts = map(lambda k: k+"=", keys) - - try: - opts, args = getopt.getopt(sys.argv[1:], shortOpts, longOpts) - except getopt.GetoptError, details: - print details - printUsage() - return - - optsDict = {} - for k, v in opts: - optsDict[k[2:]] = v - - ok = optsDict.keys() - if not (1 <= len(args) <= 2): - print "No argument given!" - elif not ("Title" in ok and \ - "Version" in ok and \ - "Description" in ok): - print "Missing mandatory option!" - else: - apply(buildPackage, args, optsDict) - return - - printUsage() - - # sample use: - # buildpkg.py --Title=distutils \ - # --Version=1.0.2 \ - # --Description="Python distutils package." \ - # /Users/dinu/Desktop/distutils - - -if __name__ == "__main__": - main() diff --git a/project/jni/python/src/Mac/scripts/cachersrc.py b/project/jni/python/src/Mac/scripts/cachersrc.py deleted file mode 100644 index e2eed8b27..000000000 --- a/project/jni/python/src/Mac/scripts/cachersrc.py +++ /dev/null @@ -1,44 +0,0 @@ -# Scan the tree passed as argv[0] for .rsrc files, skipping .rsrc.df.rsrc -# files, and open these. The effect of this is to create the .rsrc.df.rsrc -# cache files if needed. -# These are needed on OSX: the .rsrc files are in reality AppleSingle-encoded -# files. We decode the resources into a datafork-based resource file. - -import macresource -import os -import sys -import getopt - -class NoArgsError(Exception): - pass - -def handler((verbose, force), dirname, fnames): - for fn in fnames: - if fn[-5:] == '.rsrc' and fn[-13:] != '.rsrc.df.rsrc': - if force: - try: - os.unlink(os.path.join(dirname, fn + '.df.rsrc')) - except IOError: - pass - macresource.open_pathname(os.path.join(dirname, fn), verbose=verbose) - -def main(): - try: - opts, args = getopt.getopt(sys.argv[1:], 'vf') - if not args: - raise NoArgsError - except (getopt.GetoptError, NoArgsError): - sys.stderr.write('Usage: cachersrc.py dirname ...\n') - sys.exit(1) - verbose = 0 - force = 0 - for o, v in opts: - if o == '-v': - verbose = 1 - if o == '-f': - force = 1 - for dir in sys.argv[1:]: - os.path.walk(dir, handler, (verbose, force)) - -if __name__ == '__main__': - main() diff --git a/project/jni/python/src/Mac/scripts/errors.txt b/project/jni/python/src/Mac/scripts/errors.txt deleted file mode 100644 index 0682e629f..000000000 --- a/project/jni/python/src/Mac/scripts/errors.txt +++ /dev/null @@ -1,1852 +0,0 @@ --32768 svTempDisable svTempDisable --32640 svDisabled Reserve range -32640 to -32768 for Apple temp disables. --32615 fontNotOutlineErr bitmap font passed to routine that does outlines only --30788 kURL68kNotSupportedError kURL68kNotSupportedError --30787 kURLAccessNotAvailableError kURLAccessNotAvailableError --30786 kURLInvalidConfigurationError kURLInvalidConfigurationError --30785 kURLExtensionFailureError kURLExtensionFailureError --30783 kURLFileEmptyError kURLFileEmptyError --30781 kURLInvalidCallError kURLInvalidCallError --30780 kURLUnsettablePropertyError kURLUnsettablePropertyError --30779 kURLPropertyBufferTooSmallError kURLPropertyBufferTooSmallError --30778 kURLUnknownPropertyError kURLUnknownPropertyError --30777 kURLPropertyNotYetKnownError kURLPropertyNotYetKnownError --30776 kURLAuthenticationError kURLAuthenticationError --30775 kURLServerBusyError kURLServerBusyError --30774 kURLUnsupportedSchemeError kURLUnsupportedSchemeError --30773 kURLInvalidURLError kURLInvalidURLError --30772 kURLDestinationExistsError kURLDestinationExistsError --30771 kURLProgressAlreadyDisplayedError kURLProgressAlreadyDisplayedError --30770 kURLInvalidURLReferenceError kURLInvalidURLReferenceError --30599 controlHandleInvalidErr controlHandleInvalidErr --30597 controlInvalidDataVersionErr controlInvalidDataVersionErr --30596 errItemNotControl errItemNotControl --30595 errCantEmbedRoot errCantEmbedRoot --30594 errCantEmbedIntoSelf errCantEmbedIntoSelf --30593 errWindowRegionCodeInvalid errWindowRegionCodeInvalid --30592 errControlHiddenOrDisabled errControlHiddenOrDisabled --30591 errDataSizeMismatch errDataSizeMismatch --30590 errControlIsNotEmbedder errControlIsNotEmbedder --30589 errControlsAlreadyExist errControlsAlreadyExist --30588 errInvalidPartCode errInvalidPartCode --30587 errRootAlreadyExists errRootAlreadyExists --30586 errNoRootControl errNoRootControl --30585 errCouldntSetFocus errCouldntSetFocus --30584 errUnknownControl errUnknownControl --30583 errWindowDoesntSupportFocus errWindowDoesntSupportFocus --30582 errControlDoesntSupportFocus errControlDoesntSupportFocus --30581 errDataNotSupported errDataNotSupported --30580 errMessageNotSupported errMessageNotSupported --30567 themeMonitorDepthNotSupportedErr theme not supported at monitor depth --30566 themeScriptFontNotFoundErr theme font requested for uninstalled script system --30565 themeBadCursorIndexErr themeBadCursorIndexErr --30564 themeHasNoAccentsErr themeHasNoAccentsErr --30563 themeBadTextColorErr themeBadTextColorErr --30562 themeProcessNotRegisteredErr themeProcessNotRegisteredErr --30561 themeProcessRegisteredErr themeProcessRegisteredErr --30560 themeInvalidBrushErr pattern index invalid --30555 qtvrUninitialized qtvrUninitialized --30554 qtvrLibraryLoadErr qtvrLibraryLoadErr --30553 streamingNodeNotReadyErr streamingNodeNotReadyErr --30552 noMemoryNodeFailedInitialize noMemoryNodeFailedInitialize --30551 invalidHotSpotIDErr invalidHotSpotIDErr --30550 invalidNodeFormatErr invalidNodeFormatErr --30549 limitReachedErr limitReachedErr --30548 settingNotSupportedByNodeErr settingNotSupportedByNodeErr --30547 propertyNotSupportedByNodeErr propertyNotSupportedByNodeErr --30546 timeNotInViewErr timeNotInViewErr --30545 invalidViewStateErr invalidViewStateErr --30544 invalidNodeIDErr invalidNodeIDErr --30543 selectorNotSupportedByNodeErr selectorNotSupportedByNodeErr --30542 callNotSupportedByNodeErr callNotSupportedByNodeErr --30541 constraintReachedErr constraintReachedErr --30540 notAQTVRMovieErr notAQTVRMovieErr --30532 kFBCnoSuchHit kFBCnoSuchHit --30531 kFBCbadSearchSession kFBCbadSearchSession --30530 kFBCindexDiskIOFailed kFBCindexDiskIOFailed --30529 kFBCsummarizationCanceled kFBCsummarizationCanceled --30528 kFBCbadIndexFileVersion kFBCbadIndexFileVersion --30527 kFBCanalysisNotAvailable kFBCanalysisNotAvailable --30526 kFBCillegalSessionChange tried to add/remove vols to a session --30525 kFBCsomeFilesNotIndexed kFBCsomeFilesNotIndexed --30524 kFBCsearchFailed kFBCsearchFailed --30523 kFBCindexNotAvailable kFBCindexNotAvailable --30522 kFBCindexFileDestroyed kFBCindexFileDestroyed --30521 kFBCaccessCanceled kFBCaccessCanceled --30520 kFBCindexingCanceled kFBCindexingCanceled --30519 kFBCnoSearchSession kFBCnoSearchSession --30518 kFBCindexNotFound kFBCindexNotFound --30517 kFBCflushFailed kFBCflushFailed --30516 kFBCaddDocFailed kFBCaddDocFailed --30515 kFBCaccessorStoreFailed kFBCaccessorStoreFailed --30514 kFBCindexCreationFailed couldn't create index --30513 kFBCmergingFailed couldn't merge index files --30512 kFBCtokenizationFailed couldn't read from document or query --30511 kFBCmoveFailed V-Twin exception caught --30510 kFBCdeletionFailed V-Twin exception caught --30509 kFBCcommitFailed V-Twin exception caught --30508 kFBCindexingFailed V-Twin exception caught --30507 kFBCvalidationFailed V-Twin exception caught --30506 kFBCcompactionFailed V-Twin exception caught --30505 kFBCbadIndexFile bad FSSpec, or bad data in file --30504 kFBCfileNotIndexed kFBCfileNotIndexed --30503 kFBCbadParam kFBCbadParam --30502 kFBCallocFailed probably low memory --30501 kFBCnoIndexesFound kFBCnoIndexesFound --30500 kFBCvTwinExceptionErr no telling what it was --30450 kDSpStereoContextErr kDSpStereoContextErr --30449 kDSpInternalErr kDSpInternalErr --30448 kDSpConfirmSwitchWarning kDSpConfirmSwitchWarning --30447 kDSpFrameRateNotReadyErr kDSpFrameRateNotReadyErr --30446 kDSpContextNotFoundErr kDSpContextNotFoundErr --30445 kDSpContextNotReservedErr kDSpContextNotReservedErr --30444 kDSpContextAlreadyReservedErr kDSpContextAlreadyReservedErr --30443 kDSpInvalidAttributesErr kDSpInvalidAttributesErr --30442 kDSpInvalidContextErr kDSpInvalidContextErr --30441 kDSpSystemSWTooOldErr kDSpSystemSWTooOldErr --30440 kDSpNotInitializedErr kDSpNotInitializedErr --30429 kISpListBusyErr kISpListBusyErr --30428 kISpDeviceActiveErr kISpDeviceActiveErr --30427 kISpSystemActiveErr kISpSystemActiveErr --30426 kISpDeviceInactiveErr kISpDeviceInactiveErr --30425 kISpSystemInactiveErr kISpSystemInactiveErr --30424 kISpElementNotInListErr kISpElementNotInListErr --30423 kISpElementInListErr kISpElementInListErr --30422 kISpBufferToSmallErr kISpBufferToSmallErr --30421 kISpSystemListErr kISpSystemListErr --30420 kISpInternalErr kISpInternalErr --30399 kNSpJoinFailedErr kNSpJoinFailedErr --30398 kNSpCantBlockErr kNSpCantBlockErr --30397 kNSpMessageTooBigErr kNSpMessageTooBigErr --30396 kNSpSendFailedErr kNSpSendFailedErr --30395 kNSpConnectFailedErr kNSpConnectFailedErr --30394 kNSpGameTerminatedErr kNSpGameTerminatedErr --30393 kNSpTimeoutErr kNSpTimeoutErr --30392 kNSpInvalidProtocolListErr kNSpInvalidProtocolListErr --30391 kNSpInvalidProtocolRefErr kNSpInvalidProtocolRefErr --30390 kNSpInvalidDefinitionErr kNSpInvalidDefinitionErr --30389 kNSpAddPlayerFailedErr kNSpAddPlayerFailedErr --30388 kNSpCreateGroupFailedErr kNSpCreateGroupFailedErr --30387 kNSpNoHostVolunteersErr kNSpNoHostVolunteersErr --30386 kNSpNoGroupsErr kNSpNoGroupsErr --30385 kNSpNoPlayersErr kNSpNoPlayersErr --30384 kNSpInvalidGroupIDErr kNSpInvalidGroupIDErr --30383 kNSpInvalidPlayerIDErr kNSpInvalidPlayerIDErr --30382 kNSpNameRequiredErr kNSpNameRequiredErr --30381 kNSpFeatureNotImplementedErr kNSpFeatureNotImplementedErr --30380 kNSpAddressInUseErr kNSpAddressInUseErr --30379 kNSpRemovePlayerFailedErr kNSpRemovePlayerFailedErr --30378 kNSpFreeQExhaustedErr kNSpFreeQExhaustedErr --30377 kNSpInvalidAddressErr kNSpInvalidAddressErr --30376 kNSpNotAdvertisingErr kNSpNotAdvertisingErr --30374 kNSpAlreadyAdvertisingErr kNSpAlreadyAdvertisingErr --30373 kNSpMemAllocationErr kNSpMemAllocationErr --30371 kNSpOTVersionTooOldErr kNSpOTVersionTooOldErr --30370 kNSpOTNotPresentErr kNSpOTNotPresentErr --30369 kNSpInvalidParameterErr kNSpInvalidParameterErr --30367 kNSpInvalidGameRefErr kNSpInvalidGameRefErr --30366 kNSpProtocolNotAvailableErr kNSpProtocolNotAvailableErr --30365 kNSpHostFailedErr kNSpHostFailedErr --30364 kNSpPipeFullErr kNSpPipeFullErr --30362 kNSpTopologyNotSupportedErr kNSpTopologyNotSupportedErr --30361 kNSpAlreadyInitializedErr kNSpAlreadyInitializedErr --30360 kNSpInitializationFailedErr kNSpInitializationFailedErr --30344 kSSpScaleToZeroErr kSSpScaleToZeroErr --30343 kSSpParallelUpVectorErr kSSpParallelUpVectorErr --30342 kSSpCantInstallErr kSSpCantInstallErr --30341 kSSpVersionErr kSSpVersionErr --30340 kSSpInternalErr kSSpInternalErr --30049 kALMInternalErr kALMInternalErr --30048 kALMGroupNotFoundErr kALMGroupNotFoundErr --30047 kALMNoSuchModuleErr kALMNoSuchModuleErr --30046 kALMModuleCommunicationErr kALMModuleCommunicationErr --30045 kALMDuplicateModuleErr kALMDuplicateModuleErr --30044 kALMInstallationErr kALMInstallationErr --30043 kALMDeferSwitchErr kALMDeferSwitchErr --30042 kALMRebootFlagsLevelErr kALMRebootFlagsLevelErr --30029 kLocalesDefaultDisplayStatus Requested display locale unavailable, used default --30002 kLocalesTableFormatErr kLocalesTableFormatErr --30001 kLocalesBufferTooSmallErr kLocalesBufferTooSmallErr --29589 kFNSNameNotFoundErr The name with the requested paramters was not found --29587 kFNSBadFlattenedSizeErr flattened size didn't match input or was too small --29586 kFNSInsufficientDataErr insufficient data for the operation --29585 kFNSMismatchErr reference didn't match or wasn't found in profile --29584 kFNSDuplicateReferenceErr the ref. being added is already in the profile --29583 kFNSBadProfileVersionErr profile version is out of known range --29582 kFNSInvalidProfileErr profile is NULL or otherwise bad --29581 kFNSBadReferenceVersionErr ref. version is out of known range --29580 kFNSInvalidReferenceErr ref. was NULL or otherwise bad --29507 kCollateInvalidCollationRef kCollateInvalidCollationRef --29506 kCollateBufferTooSmall kCollateBufferTooSmall --29505 kCollateInvalidChar kCollateInvalidChar --29504 kCollatePatternNotFoundErr kCollatePatternNotFoundErr --29503 kCollateUnicodeConvertFailedErr kCollateUnicodeConvertFailedErr --29502 kCollateMissingUnicodeTableErr kCollateMissingUnicodeTableErr --29501 kCollateInvalidOptions kCollateInvalidOptions --29500 kCollateAttributesNotFoundErr kCollateAttributesNotFoundErr --29299 kMPInvalidIDErr kMPInvalidIDErr --29298 kMPInsufficientResourcesErr kMPInsufficientResourcesErr --29297 kMPTaskAbortedErr kMPTaskAbortedErr --29296 kMPTimeoutErr kMPTimeoutErr --29295 kMPDeletedErr kMPDeletedErr --29293 kMPBlueBlockingErr kMPBlueBlockingErr --29292 kMPTaskStoppedErr A convention used with MPThrowException. --29291 kMPTaskBlockedErr kMPTaskBlockedErr --29290 kMPTaskCreatedErr kMPTaskCreatedErr --29289 kMPProcessTerminatedErr kMPProcessTerminatedErr --29288 kMPProcessCreatedErr kMPProcessCreatedErr --29276 kMPPrivilegedErr kMPPrivilegedErr --29275 kMPIterationEndErr kMPIterationEndErr --25341 kUCTextBreakLocatorMissingType Unicode text break error --25340 kUCOutputBufferTooSmall Output buffer too small for Unicode string result --25318 errKCCreateChainFailed errKCCreateChainFailed --25317 errKCDataNotModifiable errKCDataNotModifiable --25316 errKCDataNotAvailable errKCDataNotAvailable --25315 errKCInteractionRequired errKCInteractionRequired --25314 errKCNoPolicyModule errKCNoPolicyModule --25313 errKCNoCertificateModule errKCNoCertificateModule --25312 errKCNoStorageModule errKCNoStorageModule --25311 errKCKeySizeNotAllowed errKCKeySizeNotAllowed --25310 errKCWrongKCVersion errKCWrongKCVersion --25309 errKCReadOnlyAttr errKCReadOnlyAttr --25308 errKCInteractionNotAllowed errKCInteractionNotAllowed --25307 errKCNoDefaultKeychain errKCNoDefaultKeychain --25306 errKCNoSuchClass errKCNoSuchClass --25305 errKCInvalidSearchRef errKCInvalidSearchRef --25304 errKCInvalidItemRef errKCInvalidItemRef --25303 errKCNoSuchAttr errKCNoSuchAttr --25302 errKCDataTooLarge errKCDataTooLarge --25301 errKCBufferTooSmall errKCBufferTooSmall --25300 errKCItemNotFound errKCItemNotFound --25299 errKCDuplicateItem errKCDuplicateItem --25298 errKCInvalidCallback errKCInvalidCallback --25297 errKCDuplicateCallback errKCDuplicateCallback --25296 errKCDuplicateKeychain errKCDuplicateKeychain --25295 errKCInvalidKeychain errKCInvalidKeychain --25294 errKCNoSuchKeychain errKCNoSuchKeychain --25293 errKCAuthFailed errKCAuthFailed --25292 errKCReadOnly errKCReadOnly --25291 errKCNotAvailable errKCNotAvailable --25280 printerStatusOpCodeNotSupportedErr printerStatusOpCodeNotSupportedErr --22018 kTXNOutsideOfFrameErr kTXNOutsideOfFrameErr --22017 kTXNOutsideOfLineErr kTXNOutsideOfLineErr --22016 kTXNATSUIIsNotInstalledErr kTXNATSUIIsNotInstalledErr --22015 kTXNDataTypeNotAllowedErr kTXNDataTypeNotAllowedErr --22014 kTXNCopyNotAllowedInEchoModeErr kTXNCopyNotAllowedInEchoModeErr --22013 kTXNCannotTurnTSMOffWhenUsingUnicodeErr kTXNCannotTurnTSMOffWhenUsingUnicodeErr --22012 kTXNAlreadyInitializedErr kTXNAlreadyInitializedErr --22011 kTXNInvalidRunIndex kTXNInvalidRunIndex --22010 kTXNSomeOrAllTagsInvalidForRunErr kTXNSomeOrAllTagsInvalidForRunErr --22009 kTXNAttributeTagInvalidForRunErr dataValue is set to this per invalid tag --22008 kTXNNoMatchErr kTXNNoMatchErr --22007 kTXNRunIndexOutofBoundsErr kTXNRunIndexOutofBoundsErr --22006 kTXNCannotSetAutoIndentErr kTXNCannotSetAutoIndentErr --22005 kTXNBadDefaultFileTypeWarning kTXNBadDefaultFileTypeWarning --22004 kTXNUserCanceledOperationErr kTXNUserCanceledOperationErr --22003 kTXNIllegalToCrossDataBoundariesErr kTXNIllegalToCrossDataBoundariesErr --22002 kTXNInvalidFrameIDErr kTXNInvalidFrameIDErr --22001 kTXNCannotAddFrameErr kTXNCannotAddFrameErr --22000 kTXNEndIterationErr kTXNEndIterationErr --20002 invalidIndexErr The recordIndex parameter is not valid. --20001 recordDataTooBigErr The record data is bigger than buffer size (1024 bytes). --20000 unknownInsertModeErr There is no such an insert mode. --14002 kModemScriptMissing kModemScriptMissing --14001 kModemPreferencesMissing kModemPreferencesMissing --14000 kModemOutOfMemory kModemOutOfMemory --13950 kHIDBaseError kHIDBaseError --13949 kHIDNullStateErr kHIDNullStateErr --13948 kHIDBufferTooSmallErr kHIDBufferTooSmallErr --13947 kHIDValueOutOfRangeErr kHIDValueOutOfRangeErr --13946 kHIDUsageNotFoundErr kHIDUsageNotFoundErr --13945 kHIDNotValueArrayErr kHIDNotValueArrayErr --13944 kHIDInvalidPreparsedDataErr kHIDInvalidPreparsedDataErr --13943 kHIDIncompatibleReportErr kHIDIncompatibleReportErr --13942 kHIDBadLogPhysValuesErr kHIDBadLogPhysValuesErr --13941 kHIDInvalidReportTypeErr kHIDInvalidReportTypeErr --13940 kHIDInvalidReportLengthErr kHIDInvalidReportLengthErr --13939 kHIDNullPointerErr kHIDNullPointerErr --13938 kHIDBadParameterErr kHIDBadParameterErr --13937 kHIDNotEnoughMemoryErr kHIDNotEnoughMemoryErr --13936 kHIDEndOfDescriptorErr kHIDEndOfDescriptorErr --13935 kHIDUsagePageZeroErr kHIDUsagePageZeroErr --13934 kHIDBadLogicalMinimumErr kHIDBadLogicalMinimumErr --13933 kHIDBadLogicalMaximumErr kHIDBadLogicalMaximumErr --13932 kHIDInvertedLogicalRangeErr kHIDInvertedLogicalRangeErr --13931 kHIDInvertedPhysicalRangeErr kHIDInvertedPhysicalRangeErr --13930 kHIDUnmatchedUsageRangeErr kHIDUnmatchedUsageRangeErr --13929 kHIDInvertedUsageRangeErr kHIDInvertedUsageRangeErr --13928 kHIDUnmatchedStringRangeErr kHIDUnmatchedStringRangeErr --13927 kHIDUnmatchedDesignatorRangeErr kHIDUnmatchedDesignatorRangeErr --13926 kHIDReportSizeZeroErr kHIDReportSizeZeroErr --13925 kHIDReportCountZeroErr kHIDReportCountZeroErr --13924 kHIDReportIDZeroErr kHIDReportIDZeroErr --13923 kHIDInvalidRangePageErr kHIDInvalidRangePageErr --13910 kHIDDeviceNotReady The device is still initializing, try again later --13909 kHIDVersionIncompatibleErr kHIDVersionIncompatibleErr --13887 debuggingNoMatchErr debugging component or option not found at this index --13886 debuggingNoCallbackErr debugging component has no callback --13885 debuggingInvalidNameErr componentName or optionName is invalid (NULL) --13884 debuggingInvalidOptionErr optionSelectorNum is not registered --13883 debuggingInvalidSignatureErr componentSignature not registered --13882 debuggingDuplicateOptionErr optionSelectorNum already registered --13881 debuggingDuplicateSignatureErr componentSignature already registered --13880 debuggingExecutionContextErr routine cannot be called at this time --13038 kBridgeSoftwareRunningCantSleep kBridgeSoftwareRunningCantSleep --13020 kNoSuchPowerSource kNoSuchPowerSource --13014 kProcessorTempRoutineRequiresMPLib2 kProcessorTempRoutineRequiresMPLib2 --13013 kCantReportProcessorTemperatureErr kCantReportProcessorTemperatureErr --13010 kPowerMgtRequestDenied kPowerMgtRequestDenied --13009 kPowerMgtMessageNotHandled kPowerMgtMessageNotHandled --13008 kPowerHandlerNotFoundForProcErr kPowerHandlerNotFoundForProcErr --13007 kPowerHandlerNotFoundForDeviceErr kPowerHandlerNotFoundForDeviceErr --13006 kPowerHandlerExistsForDeviceErr kPowerHandlerExistsForDeviceErr --13005 pmRecvEndErr during receive, pmgr did not finish hs configured for this connection --13004 pmRecvStartErr during receive, pmgr did not start hs --13003 pmSendEndErr during send, pmgr did not finish hs --13002 pmSendStartErr during send, pmgr did not start hs --13001 pmReplyTOErr Timed out waiting for reply --13000 pmBusyErr Power Mgr never ready to start handshake --11005 pictureDataErr the picture data was invalid --11004 colorsRequestedErr the number of colors requested was illegal --11003 cantLoadPickMethodErr unable to load the custom pick proc --11002 pictInfoVerbErr the passed verb was invalid --11001 pictInfoIDErr the internal consistancy check for the PictInfoID is wrong --11000 pictInfoVersionErr wrong version of the PictInfo structure --10780 errTaskNotFound no task with that task id exists --10116 telNotEnoughdspBW not enough real-time for allocation --10115 telBadSampleRate incompatible sample rate --10114 telBadSWErr Software not installed properly --10113 telDetAlreadyOn detection is already turned on --10112 telAutoAnsNotOn autoAnswer in not turned on --10111 telValidateFailed telValidate failed --10110 telBadProcID invalid procID --10109 telDeviceNotFound device not found --10108 telBadCodeResource code resource not found --10107 telInitFailed initialization failed --10106 telNoCommFolder Communications/Extensions € not found --10103 telUnknownErr unable to set config --10102 telNoSuchTool unable to find tool with name specified --10091 telBadFunction bad msgCode specified --10090 telPBErr parameter block error, bad format --10082 telCANotDeflectable CA not "deflectable" --10081 telCANotRejectable CA not "rejectable" --10080 telCANotAcceptable CA not "acceptable" --10072 telTermNotOpen terminal not opened via TELOpenTerm --10071 telStillNeeded terminal driver still needed by someone else --10070 telAlreadyOpen terminal already open --10064 telNoCallbackRef no call back reference was specified, but is required --10063 telDisplayModeNotSupp display mode not supported by tool --10062 telBadDisplayMode bad display mode specified --10061 telFwdTypeNotSupp forward type not supported by tool --10060 telDNTypeNotSupp DN type not supported by tool --10059 telBadRate bad rate specified --10058 telBadBearerType bad bearerType specified --10057 telBadSelect unable to select or deselect DN --10056 telBadParkID bad park id specified --10055 telBadPickupGroupID bad pickup group ID specified --10054 telBadFwdType bad fwdType specified --10053 telBadFeatureID bad feature ID specified --10052 telBadIntercomID bad intercom ID specified --10051 telBadPageID bad page ID specified --10050 telBadDNType DN type invalid --10047 telConfLimitExceeded attempt to exceed switch conference limits --10046 telCBErr call back feature not set previously --10045 telTransferRej transfer request rejected --10044 telTransferErr transfer not prepared --10043 telConfRej conference request was rejected --10042 telConfErr conference was not prepared --10041 telConfNoLimit no limit was specified but required --10040 telConfLimitErr limit specified is too high for this configuration --10033 telFeatNotSupp feature program call not supported by this tool --10032 telFeatActive feature already active --10031 telFeatNotAvail feature subscribed but not available --10030 telFeatNotSub feature not subscribed --10025 errAEPropertiesClash illegal combination of properties settings for Set Data, make new, or duplicate --10024 errAECantPutThatThere in make new, duplicate, etc. class can't be an element of container --10023 errAENotAnEnumMember enumerated value in SetData is not allowed for this property --10022 telIntExtNotSupp internal external type not supported by this tool --10021 telBadIntExt bad internal external error --10020 telStateNotSupp device state not supported by tool --10019 telBadStateErr bad device state specified --10018 telIndexNotSupp index not supported by this tool --10017 telBadIndex bad index specified --10016 telAPattNotSupp alerting pattern not supported by tool --10015 telBadAPattErr bad alerting pattern specified --10014 telVTypeNotSupp volume type not supported by this tool --10013 telBadVTypeErr bad volume type error --10012 telBadLevelErr bad volume level setting --10011 telHTypeNotSupp hook type not supported by this tool --10010 telBadHTypeErr bad hook type specified --10009 errAECantSupplyType errAECantSupplyType --10008 telNoOpenErr unable to open terminal --10007 telNoMemErr no memory to allocate handle --10006 errOSACantAssign Signaled when an object cannot be set in a container. --10005 telBadProcErr bad msgProc specified --10004 telBadHandErr bad handle specified --10003 OSAIllegalAssign Signaled when an object can never be set in a container --10002 telBadDNErr TELDNHandle not found or invalid --10001 telBadTermErr invalid TELHandle or handle not found --10000 errAEEventFailed errAEEventFailed --9999 cannotMoveAttachedController cannotMoveAttachedController --9998 controllerHasFixedHeight controllerHasFixedHeight --9997 cannotSetWidthOfAttachedController cannotSetWidthOfAttachedController --9996 controllerBoundsNotExact controllerBoundsNotExact --9995 editingNotAllowed editingNotAllowed --9994 badControllerHeight badControllerHeight --9408 deviceCantMeetRequest deviceCantMeetRequest --9407 seqGrabInfoNotAvailable seqGrabInfoNotAvailable --9406 badSGChannel badSGChannel --9405 couldntGetRequiredComponent couldntGetRequiredComponent --9404 notEnoughDiskSpaceToGrab notEnoughDiskSpaceToGrab --9403 notEnoughMemoryToGrab notEnoughMemoryToGrab --9402 cantDoThatInCurrentMode cantDoThatInCurrentMode --9401 grabTimeComplete grabTimeComplete --9400 noDeviceForChannel noDeviceForChannel --9109 kNoCardBusCISErr No valid CIS exists for this CardBus card --9108 kNotZVCapableErr This socket does not support Zoomed Video --9107 kCardPowerOffErr Power to the card has been turned off --9106 kAttemptDupCardEntryErr The Enabler was asked to create a duplicate card entry --9105 kAlreadySavedStateErr The state has been saved on previous call --9104 kTooManyIOWindowsErr device requested more than one I/O window --9103 kNotReadyErr PC Card failed to go ready --9102 kClientRequestDenied CS Clients should return this code inorder to --9101 kNoCompatibleNameErr There is no compatible driver name for this device --9100 kNoEnablerForCardErr No Enablers were found that can support the card --9099 kNoCardEnablersFoundErr No Enablers were found --9098 kUnsupportedCardErr Card not supported by generic enabler --9097 kNoClientTableErr The client table has not be initialized yet --9096 kNoMoreInterruptSlotsErr All internal Interrupt slots are in use --9095 kNoMoreTimerClientsErr All timer callbacks are in use --9094 kNoIOWindowRequestedErr Request I/O window before calling configuration --9093 kBadCustomIFIDErr Custom interface ID is invalid --9092 kBadTupleDataErr Data in tuple is invalid --9091 kInvalidCSClientErr Card Services ClientID is not registered --9090 kUnsupportedVsErr Unsupported Voltage Sense --9089 kInvalidDeviceNumber kInvalidDeviceNumber --9088 kPostCardEventErr _PCCSLPostCardEvent failed and dropped an event --9087 kCantConfigureCardErr kCantConfigureCardErr --9086 kPassCallToChainErr kPassCallToChainErr --9085 kCardBusCardErr kCardBusCardErr --9084 k16BitCardErr k16BitCardErr --9083 kBadDeviceErr kBadDeviceErr --9082 kBadLinkErr kBadLinkErr --9081 kInvalidRegEntryErr kInvalidRegEntryErr --9080 kNoCardSevicesSocketsErr kNoCardSevicesSocketsErr --9079 kOutOfResourceErr Card Services has exhausted the resource --9078 kNoMoreItemsErr there are no more of the requested item --9077 kInUseErr requested resource is being used by a client --9076 kConfigurationLockedErr a configuration has already been locked --9075 kWriteProtectedErr media is write-protected --9074 kBusyErr unable to process request at this time - try later --9073 kUnsupportedModeErr mode is not supported --9072 kUnsupportedFunctionErr function is not supported by this implementation --9071 kNoCardErr no PC card in the socket --9070 kGeneralFailureErr an undefined error has occurred --9069 kWriteFailureErr unable to complete write request --9068 kReadFailureErr unable to complete read request --9067 kBadSpeedErr specified speed is unavailable --9066 kBadCISErr CIS on card is invalid --9065 kBadHandleErr clientHandle is invalid --9064 kBadArgsErr values in argument packet are invalid --9063 kBadArgLengthErr ArgLength argument is invalid --9062 kBadWindowErr specified window is invalid --9061 kBadVppErr specified Vpp1 or Vpp2 power level index is invalid --9060 kBadVccErr specified Vcc power level index is invalid --9059 kBadTypeErr specified window or interface type is invalid --9058 kBadSocketErr specified logical or physical socket number is invalid --9057 kBadSizeErr specified size is invalid --9056 kBadPageErr specified page is invalid --9055 kBadOffsetErr specified PC card memory array offset is invalid --9054 kBadIRQErr specified IRQ level is invalid --9053 kBadEDCErr specified EDC generator specified is invalid --9052 kBadBaseErr specified base system memory address is invalid --9051 kBadAttributeErr specified attributes field value is invalid --9050 kBadAdapterErr invalid adapter number --8992 codecOffscreenFailedPleaseRetryErr codecOffscreenFailedPleaseRetryErr --8991 lockPortBitsWrongGDeviceErr lockPortBitsWrongGDeviceErr --8990 directXObjectAlreadyExists directXObjectAlreadyExists --8989 codecDroppedFrameErr returned from ImageCodecDrawBand --8988 codecOffscreenFailedErr codecOffscreenFailedErr --8987 codecNeedAccessKeyErr codec needs password in order to decompress --8986 codecParameterDialogConfirm codecParameterDialogConfirm --8985 lockPortBitsSurfaceLostErr lockPortBitsSurfaceLostErr --8984 lockPortBitsBadPortErr lockPortBitsBadPortErr --8983 lockPortBitsWindowClippedErr lockPortBitsWindowClippedErr --8982 lockPortBitsWindowResizedErr lockPortBitsWindowResizedErr --8981 lockPortBitsWindowMovedErr lockPortBitsWindowMovedErr --8980 lockPortBitsBadSurfaceErr lockPortBitsBadSurfaceErr --8979 codecNeedToFlushChainErr codecNeedToFlushChainErr --8978 codecDisabledErr codec disabled itself -- pass codecFlagReenable to reset --8977 codecNoMemoryPleaseWaitErr codecNoMemoryPleaseWaitErr --8976 codecNothingToBlitErr codecNothingToBlitErr --8975 codecCantQueueErr codecCantQueueErr --8974 codecCantWhenErr codecCantWhenErr --8973 codecOpenErr codecOpenErr --8972 codecConditionErr codecConditionErr --8971 codecExtensionNotFoundErr codecExtensionNotFoundErr --8970 codecDataVersErr codecDataVersErr --8969 codecBadDataErr codecBadDataErr --8968 codecWouldOffscreenErr codecWouldOffscreenErr --8967 codecAbortErr codecAbortErr --8966 codecSpoolErr codecSpoolErr --8965 codecImageBufErr codecImageBufErr --8964 codecScreenBufErr codecScreenBufErr --8963 codecSizeErr codecSizeErr --8962 codecUnimpErr codecUnimpErr --8961 noCodecErr noCodecErr --8960 codecErr codecErr --8852 kIllegalClockValueErr kIllegalClockValueErr --8851 kUTCOverflowErr kUTCOverflowErr --8850 kUTCUnderflowErr kUTCUnderflowErr --8809 kATSULastErr The last ATSUI error code. --8808 kATSULineBreakInWord This is not an error code but is returned by ATSUBreakLine to --8807 kATSUCoordinateOverflowErr Used to indicate the coordinates provided to an ATSUI routine caused --8806 kATSUNoFontScalerAvailableErr Used when no font scaler is available for the font passed --8805 kATSUNoFontCmapAvailableErr Used when no CMAP table can be accessed or synthesized for the --8804 kATSULowLevelErr Used when an error was encountered within the low level ATS --8803 kATSUQuickDrawTextErr Used when QuickDraw Text encounters an error rendering or measuring --8802 kATSUNoStyleRunsAssignedErr Used when an attempt was made to measure, highlight or draw --8801 kATSUNotSetErr Used when the client attempts to retrieve an attribute, --8800 kATSUInvalidCacheErr Used when an attempt was made to read in style data --8799 kATSUInvalidAttributeTagErr Used when an attempt was made to use a tag value that --8798 kATSUInvalidAttributeSizeErr Used when an attempt was made to use an attribute with a --8797 kATSUInvalidAttributeValueErr Used when an attempt was made to use an attribute with --8796 kATSUInvalidFontErr Used when an attempt was made to use an invalid font ID. --8795 kATSUNoCorrespondingFontErr This value is retrned by font ID conversion --8794 kATSUFontsNotMatched This value is returned by ATSUMatchFontsToText() --8793 kATSUFontsMatched This is not an error code but is returned by --8792 kATSUInvalidTextRangeErr An attempt was made to extract information --8791 kATSUInvalidStyleErr An attempt was made to use a ATSUStyle which --8790 kATSUInvalidTextLayoutErr An attempt was made to use a ATSUTextLayout --8785 kTECOutputBufferFullStatus output buffer has no room for conversion of next input text element (partial conversion) --8784 kTECNeedFlushStatus kTECNeedFlushStatus --8783 kTECUsedFallbacksStatus kTECUsedFallbacksStatus --8771 kTECItemUnavailableErr item (e.g. name) not available for specified region (& encoding if relevant) --8770 kTECGlobalsUnavailableErr globals have already been deallocated (premature TERM) --8769 unicodeChecksumErr unicodeChecksumErr --8768 unicodeNoTableErr unicodeNoTableErr --8767 unicodeVariantErr unicodeVariantErr --8766 unicodeFallbacksErr unicodeFallbacksErr --8765 unicodePartConvertErr unicodePartConvertErr --8764 unicodeBufErr unicodeBufErr --8763 unicodeCharErr unicodeCharErr --8762 unicodeElementErr unicodeElementErr --8761 unicodeNotFoundErr unicodeNotFoundErr --8760 unicodeTableFormatErr unicodeTableFormatErr --8759 unicodeDirectionErr unicodeDirectionErr --8758 unicodeContextualErr unicodeContextualErr --8757 unicodeTextEncodingDataErr unicodeTextEncodingDataErr --8756 kTECDirectionErr direction stack overflow, etc. --8755 kTECIncompleteElementErr text element may be incomplete or is too long for internal buffers --8754 kTECUnmappableElementErr kTECUnmappableElementErr --8753 kTECPartialCharErr input buffer ends in the middle of a multibyte character, conversion stopped --8752 kTECBadTextRunErr kTECBadTextRunErr --8751 kTECArrayFullErr supplied name buffer or TextRun, TextEncoding, or UnicodeMapping array is too small --8750 kTECBufferBelowMinimumSizeErr output buffer too small to allow processing of first input text element --8749 kTECNoConversionPathErr kTECNoConversionPathErr --8748 kTECCorruptConverterErr invalid converter object reference --8747 kTECTableFormatErr kTECTableFormatErr --8746 kTECTableChecksumErr kTECTableChecksumErr --8745 kTECMissingTableErr kTECMissingTableErr --8740 kTextUndefinedElementErr text conversion errors --8739 kTextMalformedInputErr in DBCS, for example, high byte followed by invalid low byte --8738 kTextUnsupportedEncodingErr specified encoding not supported for this operation --7139 kRANotEnabled kRANotEnabled --7138 kRACallBackFailed kRACallBackFailed --7137 kRADuplicateIPAddr kRADuplicateIPAddr --7136 kRANCPRejectedbyPeer kRANCPRejectedbyPeer --7135 kRAExtAuthenticationFailed kRAExtAuthenticationFailed --7134 kRAATalkInactive kRAATalkInactive --7133 kRAPeerNotResponding kRAPeerNotResponding --7132 kRAPPPPeerDisconnected kRAPPPPeerDisconnected --7131 kRAPPPUserDisconnected kRAPPPUserDisconnected --7130 kRAPPPNegotiationFailed kRAPPPNegotiationFailed --7129 kRAPPPAuthenticationFailed kRAPPPAuthenticationFailed --7128 kRAPPPProtocolRejected kRAPPPProtocolRejected --7127 dcmBufferOverflowErr data is larger than buffer size --7126 kRANotPrimaryInterface when IPCP is not primary TCP/IP intf. --7125 kRATCPIPNotConfigured TCP/IP not configured, could be loaded --7124 kRATCPIPInactive TCP/IP inactive, cannot be loaded --7123 kRARemoteAccessNotReady kRARemoteAccessNotReady --7122 kRAInitOpenTransportFailed kRAInitOpenTransportFailed --7121 dcmProtectedErr need keyword to use dictionary --7120 kRAUserPwdEntryRequired kRAUserPwdEntryRequired --7119 kRAUserPwdChangeRequired kRAUserPwdChangeRequired --7118 dcmBadFindMethodErr no such find method supported --7117 kRAInvalidSerialProtocol kRAInvalidSerialProtocol --7116 kRAInvalidPortState kRAInvalidPortState --7115 dcmBadKeyErr bad key information --7114 kRAPortBusy kRAPortBusy --7113 kRAInstallationDamaged kRAInstallationDamaged --7112 dcmBadFieldTypeErr no such field type supported --7111 dcmBadFieldInfoErr incomplete information --7110 dcmNecessaryFieldErr lack required/identify field --7109 dcmDupRecordErr same record already exist --7108 kRANotConnected kRANotConnected --7107 dcmBlockFullErr dictionary block full --7106 kRAMissingResources kRAMissingResources --7105 dcmDictionaryBusyErr dictionary is busy --7104 dcmDictionaryNotOpenErr dictionary not opened --7103 dcmPermissionErr invalid permission --7102 dcmBadDictionaryErr invalid dictionary --7101 dcmNotDictionaryErr not dictionary --7100 kRAInvalidParameter kRAInvalidParameter --7000 laEngineNotFoundErr can't find the engine --6999 laPropertyErr Error in properties --6998 kUSBUnknownDeviceErr device ref not recognised --6997 laPropertyIsReadOnlyErr the property is read only --6996 laPropertyUnknownErr the property is unknown to this environment --6995 laPropertyValueErr Invalid property value --6994 laDictionaryTooManyErr too many dictionaries --6993 laDictionaryUnknownErr can't use this dictionary with this environment --6992 laDictionaryNotOpenedErr the dictionary is not opened --6991 laTextOverFlowErr text is too long --6990 laFailAnalysisErr analysis failed --6989 laNoMoreMorphemeErr nothing to read --6988 laInvalidPathErr path is not correct --6987 kUSBNotHandled Notification was not handled (same as NotFound) --6986 laEnvironmentNotFoundErr can't fint the specified environment --6985 laEnvironmentBusyErr specified environment is used --6984 laTooSmallBufferErr output buffer is too small to store any result --6983 kUSBFlagsError Unused flags not zeroed --6982 kUSBAbortedError Pipe aborted --6981 kUSBNoBandwidthError Not enough bandwidth available --6980 kUSBPipeIdleError Pipe is Idle, it will not accept transactions --6979 kUSBPipeStalledError Pipe has stalled, error needs to be cleared --6978 kUSBUnknownInterfaceErr Interface ref not recognised --6977 kUSBDeviceBusy Device is already being configured --6976 kUSBDevicePowerProblem Device has a power problem --6975 kUSBInvalidBuffer bad buffer, usually nil --6974 kUSBDeviceSuspended Device is suspended --6973 kUSBDeviceNotSuspended device is not suspended for resume --6972 kUSBDeviceDisconnected Disconnected during suspend or reset --6971 kUSBTimedOut Transaction timed out. --6970 kUSBQueueAborted Pipe zero stall cleared. --6969 kUSBPortDisabled The port you are attached to is disabled, use USBDeviceReset. --6950 kUSBBadDispatchTable Improper driver dispatch table --6949 kUSBUnknownNotification Notification type not defined --6948 kUSBQueueFull Internal queue maxxed --6916 kUSBLinkErr kUSBLinkErr --6915 kUSBCRCErr Pipe stall, bad CRC --6914 kUSBBitstufErr Pipe stall, bitstuffing --6913 kUSBDataToggleErr Pipe stall, Bad data toggle --6912 kUSBEndpointStallErr Device didn't understand --6911 kUSBNotRespondingErr Pipe stall, No device, device hung --6910 kUSBPIDCheckErr Pipe stall, PID CRC error --6909 kUSBWrongPIDErr Pipe stall, Bad or wrong PID --6908 kUSBOverRunErr Packet too large or more data than buffer --6907 kUSBUnderRunErr Less data than buffer --6906 kUSBRes1Err kUSBRes1Err --6905 kUSBRes2Err kUSBRes2Err --6904 kUSBBufOvrRunErr Host hardware failure on data in, PCI busy? --6903 kUSBBufUnderRunErr Host hardware failure on data out, PCI busy? --6902 kUSBNotSent1Err Transaction not sent --6901 kUSBNotSent2Err Transaction not sent --6232 kDMFoundErr Did not proceed because we found an item --6231 kDMMainDisplayCannotMoveErr Trying to move main display (or a display mirrored to it) --6230 kDMDisplayAlreadyInstalledErr Attempt to add an already installed display. --6229 kDMDisplayNotFoundErr Could not find item (will someday remove). --6228 kDMDriverNotDisplayMgrAwareErr Video Driver does not support display manager. --6227 kDMSWNotInitializedErr Required software not initialized (eg windowmanager or display mgr). --6226 kSysSWTooOld Missing critical pieces of System Software. --6225 kDMMirroringNotOn Returned by all calls that need mirroring to be on to do their thing. --6224 kDMCantBlock Mirroring is already on, canÕt Block now (call DMUnMirror() first). --6223 kDMMirroringBlocked DMBlockMirroring() has been called. --6222 kDMWrongNumberOfDisplays Can only handle 2 displays for now. --6221 kDMMirroringOnAlready Returned by all calls that need mirroring to be off to do their thing. --6220 kDMGenErr Unexpected Error --6150 kQTSSUnknownErr kQTSSUnknownErr --5753 collectionVersionErr collectionVersionErr --5752 collectionIndexRangeErr collectionIndexRangeErr --5751 collectionItemNotFoundErr collectionItemNotFoundErr --5750 collectionItemLockedErr collectionItemLockedErr --5699 kNavMissingKindStringErr kNavMissingKindStringErr --5698 kNavInvalidCustomControlMessageErr kNavInvalidCustomControlMessageErr --5697 kNavCustomControlMessageFailedErr kNavCustomControlMessageFailedErr --5696 kNavInvalidSystemConfigErr kNavInvalidSystemConfigErr --5695 kNavWrongDialogClassErr kNavWrongDialogClassErr --5694 kNavWrongDialogStateErr kNavWrongDialogStateErr --5640 dialogNoTimeoutErr dialogNoTimeoutErr --5623 menuInvalidErr menu is invalid --5622 menuItemNotFoundErr specified menu item wasn't found --5621 menuUsesSystemDefErr GetMenuDefinition failed because the menu uses the system MDEF --5620 menuNotFoundErr specified menu or menu ID wasn't found --5615 windowWrongStateErr window is not in a state that is valid for the current action --5614 windowManagerInternalErr something really weird happened inside the window manager --5613 windowAttributesConflictErr passed some attributes that are mutually exclusive --5612 windowAttributeImmutableErr tried to change attributes which can't be changed --5611 errWindowDoesNotFitOnscreen ConstrainWindowToScreen could not make the window fit onscreen --5610 errWindowNotFound returned from FindWindowOfClass --5609 errFloatingWindowsNotInitialized called HideFloatingWindows or ShowFloatingWindows without calling InitFloatingWindows --5608 errWindowsAlreadyInitialized tried to call InitFloatingWindows twice, or called InitWindows and then floating windows --5607 errUserWantsToDragWindow if returned from TrackWindowProxyDrag, you should call DragWindow on the window --5606 errCorruptWindowDescription tried to load a corrupt window description (size or version fields incorrect) --5605 errUnrecognizedWindowClass tried to create a window with a bad WindowClass --5604 errWindowPropertyNotFound tried to get a nonexistent property --5603 errInvalidWindowProperty tried to access a property tag with private creator --5602 errWindowDoesNotHaveProxy tried to do something requiring a proxy to a window which doesnÕt have a proxy --5601 errUnsupportedWindowAttributesForClass tried to create a window with WindowAttributes not supported by the WindowClass --5600 errInvalidWindowPtr tried to pass a bad WindowRef argument --5553 gestaltLocationErr gestalt function ptr wasn't in sysheap --5552 gestaltDupSelectorErr tried to add an entry that already existed --5551 gestaltUndefSelectorErr undefined selector was passed to Gestalt --5550 gestaltUnknownErr value returned if Gestalt doesn't know the answer --5502 envVersTooBig Version bigger than call can handle --5501 envBadVers Version non-positive --5500 envNotPresent returned by glue. --5421 qtsAddressBusyErr qtsAddressBusyErr --5420 qtsConnectionFailedErr qtsConnectionFailedErr --5408 qtsTimeoutErr qtsTimeoutErr --5407 qtsUnknownValueErr qtsUnknownValueErr --5406 qtsTooMuchDataErr qtsTooMuchDataErr --5405 qtsUnsupportedFeatureErr qtsUnsupportedFeatureErr --5404 qtsUnsupportedRateErr qtsUnsupportedRateErr --5403 qtsUnsupportedDataTypeErr qtsUnsupportedDataTypeErr --5402 qtsBadDataErr something is wrong with the data --5401 qtsBadStateErr qtsBadStateErr --5400 qtsBadSelectorErr qtsBadSelectorErr --5388 errIAEndOfTextRun errIAEndOfTextRun --5387 errIATextExtractionErr errIATextExtractionErr --5386 errIAInvalidDocument errIAInvalidDocument --5385 errIACanceled errIACanceled --5384 errIABufferTooSmall errIABufferTooSmall --5383 errIANoMoreItems errIANoMoreItems --5382 errIAParamErr errIAParamErr --5381 errIAAllocationErr errIAAllocationErr --5380 errIAUnknownErr errIAUnknownErr --5363 hrURLNotHandledErr hrURLNotHandledErr --5362 hrUnableToResizeHandleErr hrUnableToResizeHandleErr --5361 hrMiscellaneousExceptionErr hrMiscellaneousExceptionErr --5360 hrHTMLRenderingLibNotInstalledErr hrHTMLRenderingLibNotInstalledErr --5253 errCannotUndo errCannotUndo --5252 errNonContiuousAttribute errNonContiuousAttribute --5251 errUnknownElement errUnknownElement --5250 errReadOnlyText errReadOnlyText --5249 errEmptyScrap errEmptyScrap --5248 errNoHiliteText errNoHiliteText --5247 errOffsetNotOnElementBounday errOffsetNotOnElementBounday --5246 errInvalidRange errInvalidRange --5245 errIteratorReachedEnd errIteratorReachedEnd --5244 errEngineNotFound errEngineNotFound --5243 errAlreadyInImagingMode errAlreadyInImagingMode --5242 errNotInImagingMode errNotInImagingMode --5241 errMarginWilllNotFit errMarginWilllNotFit --5240 errUnknownAttributeTag errUnknownAttributeTag --5063 afpSameNodeErr An Attempt was made to connect to a file server running on the same machine --5062 afpAlreadyMounted The volume is already mounted --5061 afpCantMountMoreSrvre The Maximum number of server connections has been reached --5060 afpBadDirIDType afpBadDirIDType --5048 afpCallNotAllowed The server knows what you wanted to do, but won't let you do it just now --5047 afpAlreadyLoggedInErr User has been authenticated but is already logged in from another machine (and that's not allowed on this server) --5046 afpPwdPolicyErr Password does not conform to servers password policy --5045 afpPwdNeedsChangeErr The password needs to be changed --5044 afpInsideTrashErr The folder being shared is inside the trash folder OR the shared folder is being moved into the trash folder --5043 afpInsideSharedErr The folder being shared is inside a shared folder OR the folder contains a shared folder and is being moved into a shared folder --5042 afpPwdExpiredErr The password being used is too old: this requires the user to change the password before log-in can continue --5041 afpPwdTooShortErr The password being set is too short: there is a minimum length that must be met or exceeded --5040 afpPwdSameErr Someone tried to change their password to the same password on a mantadory password change --5039 afpBadIDErr afpBadIDErr --5038 afpSameObjectErr afpSameObjectErr --5037 afpCatalogChanged afpCatalogChanged --5036 afpDiffVolErr afpDiffVolErr --5035 afpIDExists afpIDExists --5034 afpIDNotFound afpIDNotFound --5033 afpContainsSharedErr the folder being shared contains a shared folder --5032 afpObjectLocked Object is M/R/D/W inhibited --5031 afpVolLocked Volume is Read-Only --5030 afpIconTypeError Icon size specified different from existing icon size --5029 afpDirNotFound Unknown directory specified --5028 afpCantRename AFPRename cannot rename volume --5027 afpServerGoingDown Server is shutting down --5026 afpTooManyFilesOpen Maximum open file count reached --5025 afpObjectTypeErr File/Directory specified where Directory/File expected --5024 afpCallNotSupported Unsupported AFP call was made --5023 afpUserNotAuth No AFPLogin call has successfully been made for this session --5022 afpSessClosed Session closed --5021 afpRangeOverlap Some or all of range already locked by same user --5020 afpRangeNotLocked Tried to unlock range that was not locked by user --5019 afpParmErr A specified parameter was out of allowable range --5018 afpObjectNotFound Specified file or directory does not exist --5017 afpObjectExists Specified destination file or directory already exists --5016 afpNoServer Server not responding --5015 afpNoMoreLocks Maximum lock limit reached --5014 afpMiscErr Unexpected error encountered during execution --5013 afpLockErr Some or all of requested range is locked by another user --5012 afpItemNotFound Unknown UserName/UserID or missing comment/APPL entry --5011 afpFlatVol Cannot create directory on specified volume --5010 afpFileBusy Cannot delete an open file --5009 afpEofError Read beyond logical end-of-file --5008 afpDiskFull Insufficient free space on volume for operation --5007 afpDirNotEmpty Cannot delete non-empty directory --5006 afpDenyConflict Specified open/deny modes conflict with current open modes --5005 afpCantMove Move destination is offspring of source, or root was specified --5004 afpBitmapErr Bitmap contained bits undefined for call --5003 afpBadVersNum Unknown AFP protocol version number specified --5002 afpBadUAM Unknown user authentication method specified --5001 afpAuthContinue Further information required to complete AFPLogin call --5000 afpAccessDenied Insufficient access privileges for operation --4999 illegalScrapFlavorSizeErr illegalScrapFlavorSizeErr --4998 illegalScrapFlavorTypeErr illegalScrapFlavorTypeErr --4997 illegalScrapFlavorFlagsErr illegalScrapFlavorFlagsErr --4996 scrapFlavorSizeMismatchErr scrapFlavorSizeMismatchErr --4995 scrapFlavorFlagsMismatchErr scrapFlavorFlagsMismatchErr --4994 nilScrapFlavorDataErr nilScrapFlavorDataErr --4993 noScrapPromiseKeeperErr noScrapPromiseKeeperErr --4992 scrapPromiseNotKeptErr scrapPromiseNotKeptErr --4991 processStateIncorrectErr processStateIncorrectErr --4990 badScrapRefErr badScrapRefErr --4989 duplicateScrapFlavorErr duplicateScrapFlavorErr --4988 internalScrapErr internalScrapErr --4960 coreFoundationUnknownErr coreFoundationUnknownErr --4276 badRoutingSizeErr badRoutingSizeErr --4275 routingNotFoundErr routingNotFoundErr --4274 duplicateRoutingErr duplicateRoutingErr --4273 invalidFolderTypeErr invalidFolderTypeErr --4272 noMoreFolderDescErr noMoreFolderDescErr --4271 duplicateFolderDescErr duplicateFolderDescErr --4270 badFolderDescErr badFolderDescErr --4217 cmCantGamutCheckError Gammut checking not supported by this ColorWorld --4216 cmNamedColorNotFound NamedColor not found --4215 cmCantCopyModifiedV1Profile Illegal to copy version 1 profiles that have been modified --4214 cmRangeOverFlow Color conversion warning that some output color values over/underflowed and were clipped --4213 cmInvalidProfileComment Bad Profile comment during drawpicture --4212 cmNoGDevicesError Begin/End Matching -- no gdevices available --4211 cmInvalidDstMap Destination pix/bit map was invalid --4210 cmInvalidSrcMap Source pix/bit map was invalid --4209 cmInvalidColorSpace Profile colorspace does not match bitmap type --4208 cmErrIncompatibleProfile Other ColorSync Errors --4207 cmSearchError cmSearchError --4206 cmInvalidSearch Bad Search Handle --4205 cmInvalidProfileLocation Operation not supported for this profile location --4204 cmInvalidProfile A Profile must contain a 'cs1 ' tag to be valid --4203 cmFatalProfileErr cmFatalProfileErr --4202 cmCantDeleteElement cmCantDeleteElement --4201 cmIndexRangeErr Tag index out of range --4200 kNSLInitializationFailed UNABLE TO INITIALIZE THE MANAGER!!!!! DO NOT CONTINUE!!!! --4199 kNSLNotInitialized kNSLNotInitialized --4198 kNSLInsufficientSysVer kNSLInsufficientSysVer --4197 kNSLInsufficientOTVer kNSLInsufficientOTVer --4196 kNSLNoElementsInList kNSLNoElementsInList --4195 kNSLBadReferenceErr kNSLBadReferenceErr --4194 kNSLBadServiceTypeErr kNSLBadServiceTypeErr --4193 kNSLBadDataTypeErr kNSLBadDataTypeErr --4192 kNSLBadNetConnection kNSLBadNetConnection --4191 kNSLNoSupportForService kNSLNoSupportForService --4190 kNSLInvalidPluginSpec kNSLInvalidPluginSpec --4189 kNSLRequestBufferAlreadyInList kNSLRequestBufferAlreadyInList --4188 kNSLNoContextAvailable (ContinueLookup function ptr invalid) --4187 kNSLBufferTooSmallForData (Client buffer too small for data from plugin) --4186 kNSLCannotContinueLookup (Can't continue lookup; error or bad state) --4185 kNSLBadClientInfoPtr (nil ClientAsyncInfoPtr; no reference available) --4184 kNSLNullListPtr (client is trying to add items to a nil list) --4183 kNSLBadProtocolTypeErr (client is trying to add a null protocol type) --4182 kNSLPluginLoadFailed (manager unable to load one of the plugins) --4181 kNSLNoPluginsFound (manager didn't find any valid plugins to load) --4180 kNSLSearchAlreadyInProgress (you can only have one ongoing search per clientRef) --4179 kNSLNoPluginsForSearch (no plugins will respond to search request; bad protocol(s)?) --4178 kNSLNullNeighborhoodPtr (client passed a null neighborhood ptr) --4177 kNSLSomePluginsFailedToLoad (one or more plugins failed to load, but at least one did load; this error isn't fatal) --4176 kNSLErrNullPtrError kNSLErrNullPtrError --4175 kNSLNotImplementedYet kNSLNotImplementedYet --4174 kNSLUILibraryNotAvailable The NSL UI Library needs to be in the Extensions Folder --4173 kNSLNoCarbonLib kNSLNoCarbonLib --4172 kNSLBadURLSyntax URL contains illegal characters --4171 kNSLSchedulerError A custom thread routine encountered an error --4170 kNSL68kContextNotSupported no 68k allowed --4009 noHelpForItem noHelpForItem --4008 badProfileError badProfileError --4007 colorSyncNotInstalled colorSyncNotInstalled --4006 pickerCantLive pickerCantLive --4005 cantLoadPackage cantLoadPackage --4004 cantCreatePickerWindow cantCreatePickerWindow --4003 cantLoadPicker cantLoadPicker --4002 pickerResourceError pickerResourceError --4001 requiredFlagsDontMatch requiredFlagsDontMatch --4000 firstPickerError firstPickerError --3285 kOTPortLostConnection --3284 kOTUserRequestedErr --3283 kOTConfigurationChangedErr --3282 kOTBadConfigurationErr --3281 kOTPortWasEjectedErr --3280 kOTPortHasDiedErr --3279 kOTClientNotInittedErr --3278 kENOMSGErr --3277 kESRCHErr --3276 kEINPROGRESSErr --3275 kENODATAErr --3274 kENOSTRErr --3273 kECANCELErr --3272 kEBADMSGErr --3271 kENOSRErr --3270 kETIMEErr --3269 kEPROTOErr ‚‚‚ fill out missing codes ‚‚‚ --3264 kEHOSTUNREACHErr No route to host --3263 kEHOSTDOWNErr Host is down --3260 kECONNREFUSEDErr Connection refused --3259 kETIMEDOUTErr Connection timed out --3258 kETOOMANYREFSErr Too many references: can't splice --3257 kESHUTDOWNErr Can't send after socket shutdown --3256 kENOTCONNErr Socket is not connected --3255 kEISCONNErr Socket is already connected --3254 kENOBUFSErr No buffer space available --3253 kECONNRESETErr Connection reset by peer --3252 kECONNABORTEDErr Software caused connection abort --3251 kENETRESETErr Network dropped connection on reset --3250 kENETUNREACHErr Network is unreachable --3249 kENETDOWNErr Network is down --3248 kEADDRNOTAVAILErr Can't assign requested address --3247 kEADDRINUSEErr Address already in use --3244 kEOPNOTSUPPErr Operation not supported on socket --3243 kESOCKTNOSUPPORTErr Socket type not supported --3242 kEPROTONOSUPPORTErr Protocol not supported --3241 kENOPROTOOPTErr Protocol not available --3240 kEPROTOTYPEErr Protocol wrong type for socket --3239 kEMSGSIZEErr Message too long --3238 kEDESTADDRREQErr Destination address required --3237 kENOTSOCKErr Socket operation on non-socket --3236 kEALREADYErr --3234 kEWOULDBLOCKErr Call would block, so was aborted --3233 kERANGEErr Message size too large for STREAM --3231 kEPIPEErr Broken pipe --3224 kENOTTYErr Not a character device --3221 kEINVALErr Invalid argument --3218 kENODEVErr No such device --3216 kOTDuplicateFoundErr OT generic duplicate found error --3215 kEBUSYErr Device or resource busy --3213 kEFAULTErr Bad address --3212 kEACCESErr Permission denied --3211 kOTOutOfMemoryErr OT ran out of memory, may be a temporary --3210 kEAGAINErr Try operation again later --3208 kEBADFErr Bad file number --3205 kENXIOErr No such device or address --3204 kEIOErr I/O error --3203 kEINTRErr Interrupted system service --3202 kENORSRCErr No such resource --3201 kOTNotFoundErr OT generic not found error --3200 kEPERMErr Permission denied --3180 kOTCanceledErr XTI2OSStatus(TCANCELED) The command was cancelled --3179 kOTBadSyncErr XTI2OSStatus(TBADSYNC) A synchronous call at interrupt time --3178 kOTProtocolErr XTI2OSStatus(TPROTO) An unspecified provider error occurred --3177 kOTQFullErr XTI2OSStatus(TQFULL) --3176 kOTResAddressErr XTI2OSStatus(TRESADDR) --3175 kOTResQLenErr XTI2OSStatus(TRESQLEN) --3174 kOTProviderMismatchErr XTI2OSStatus(TPROVMISMATCH) Tried to accept on incompatible endpoint --3173 kOTIndOutErr XTI2OSStatus(TINDOUT) Accept failed because of pending listen --3172 kOTAddressBusyErr XTI2OSStatus(TADDRBUSY) Address requested is already in use --3171 kOTBadQLenErr XTI2OSStatus(TBADQLEN) A Bind to an in-use addr with qlen > 0 --3170 kOTBadNameErr XTI2OSStatus(TBADNAME) A bad endpoint name was supplied --3169 kOTNoStructureTypeErr XTI2OSStatus(TNOSTRUCTYPE) Bad structure type requested for OTAlloc --3168 kOTStateChangeErr XTI2OSStatus(TSTATECHNG) State is changing - try again later --3167 kOTNotSupportedErr XTI2OSStatus(TNOTSUPPORT) Command is not supported --3166 kOTNoReleaseErr XTI2OSStatus(TNOREL) No orderly release indication available --3165 kOTBadFlagErr XTI2OSStatus(TBADFLAG) A Bad flag value was supplied --3164 kOTNoUDErrErr XTI2OSStatus(TNOUDERR) No Unit Data Error indication available --3163 kOTNoDisconnectErr XTI2OSStatus(TNODIS) No disconnect indication available --3162 kOTNoDataErr XTI2OSStatus(TNODATA) No data available for reading --3161 kOTFlowErr XTI2OSStatus(TFLOW) Provider is flow-controlled --3160 kOTBufferOverflowErr XTI2OSStatus(TBUFOVFLW) Passed buffer not big enough --3159 kOTBadDataErr XTI2OSStatus(TBADDATA) An illegal amount of data was specified --3158 kOTLookErr XTI2OSStatus(TLOOK) An event occurred - call Look() --3157 kOTSysErrorErr XTI2OSStatus(TSYSERR) A system error occurred --3156 kOTBadSequenceErr XTI2OSStatus(TBADSEQ) Sequence specified does not exist --3155 kOTOutStateErr XTI2OSStatus(TOUTSTATE) Call issued in wrong state --3154 kOTNoAddressErr XTI2OSStatus(TNOADDR) No address was specified --3153 kOTBadReferenceErr XTI2OSStatus(TBADF) Bad provider reference --3152 kOTAccessErr XTI2OSStatus(TACCES) Missing access permission --3151 kOTBadOptionErr XTI2OSStatus(TBADOPT) A Bad option was specified --3150 kOTBadAddressErr XTI2OSStatus(TBADADDR) A Bad address was specified --3109 sktClosedErr sktClosedErr --3108 recNotFnd recNotFnd --3107 atpBadRsp atpBadRsp --3106 atpLenErr atpLenErr --3105 readQErr readQErr --3104 extractErr extractErr --3103 ckSumErr ckSumErr --3102 noMPPErr noMPPErr --3101 buf2SmallErr buf2SmallErr --3032 noPrefAppErr noPrefAppErr --3031 badTranslationSpecErr badTranslationSpecErr --3030 noTranslationPathErr noTranslationPathErr --3026 couldNotParseSourceFileErr Source document does not contain source type --3025 invalidTranslationPathErr Source type to destination type not a valid path --3005 retryComponentRegistrationErr retryComponentRegistrationErr --3004 unresolvedComponentDLLErr unresolvedComponentDLLErr --3003 componentDontRegister componentDontRegister --3002 componentNotCaptured componentNotCaptured --3001 validInstancesExist validInstancesExist --3000 invalidComponentID invalidComponentID --2899 cfragLastErrCode The last value in the range of CFM errors. --2831 cfragOutputLengthErr An output parameter is too small to hold the value. --2830 cfragAbortClosureErr Used by notification handlers to abort a closure. --2829 cfragClosureIDErr The closure ID was not valid. --2828 cfragContainerIDErr The fragment container ID was not valid. --2827 cfragNoRegistrationErr The registration name was not found. --2826 cfragNotClosureErr The closure ID was actually a connection ID. --2825 cfragFileSizeErr A file was too large to be mapped. --2824 cfragFragmentUsageErr A semantic error in usage of the fragment. --2823 cfragArchitectureErr A fragment has an unacceptable architecture. --2822 cfragNoApplicationErr No application member found in the cfrg resource. --2821 cfragInitFunctionErr A fragment's initialization routine returned an error. --2820 cfragFragmentCorruptErr A fragment's container was corrupt (known format). --2819 cfragCFMInternalErr An internal inconstistancy has been detected. --2818 cfragCFMStartupErr Internal error during CFM initialization. --2817 cfragLibConnErr --2816 cfragInitAtBootErr A boot library has an initialization function. (System 7 only) --2815 cfragInitLoopErr Circularity in required initialization order. --2814 cfragImportTooNewErr An import library was too new for a client. --2813 cfragImportTooOldErr An import library was too old for a client. --2812 cfragInitOrderErr --2811 cfragNoIDsErr No more CFM IDs for contexts, connections, etc. --2810 cfragNoClientMemErr Out of memory for fragment mapping or section instances. --2809 cfragNoPrivateMemErr Out of memory for internal bookkeeping. --2808 cfragNoPositionErr The registration insertion point was not found. --2807 cfragUnresolvedErr A fragment had "hard" unresolved imports. --2806 cfragFragmentFormatErr A fragment's container format is unknown. --2805 cfragDupRegistrationErr The registration name was already in use. --2804 cfragNoLibraryErr The named library was not found. --2803 cfragNoSectionErr The specified section was not found. --2802 cfragNoSymbolErr The specified symbol was not found. --2801 cfragConnectionIDErr The connection ID was not valid. --2800 cfragFirstErrCode The first value in the range of CFM errors. --2780 errASInconsistentNames English errors: --2763 errASNoResultReturned The range -2780 thru -2799 is reserved for dialect specific error codes. (Error codes from different dialects may overlap.) --2762 errASParameterNotForEvent errASParameterNotForEvent --2761 errASIllegalFormalParameter errASIllegalFormalParameter --2760 errASTerminologyNestingTooDeep errASTerminologyNestingTooDeep --2755 OSAControlFlowError Signaled when illegal control flow occurs in an application (no catcher for throw, non-lexical loop exit, etc.) --2754 OSAInconsistentDeclarations Signaled when a variable is declared inconsistently in the same scope, such as both local and global --2753 OSAUndefinedVariable Signaled when a variable is accessed that has no value --2752 OSADuplicateHandler Signaled when more than one handler is defined with the same name in a scope where the language doesn't allow it --2751 OSADuplicateProperty Signaled when a formal parameter, local variable, or instance variable is specified more than once. --2750 OSADuplicateParameter Signaled when a formal parameter, local variable, or instance variable is specified more than once --2742 OSATokenTooLong Signaled when a name or number is too long to be parsed --2741 OSASyntaxTypeError Signaled when another form of syntax was expected. (e.g. "expected a but found ") --2740 OSASyntaxError Signaled when a syntax error occurs. (e.g. "Syntax error" or " can't go after ") --2721 errASCantCompareMoreThan32k Parser/Compiler errors: --2720 errASCantConsiderAndIgnore errASCantConsiderAndIgnore --2710 errOSACantCreate errOSACantCreate --2709 errOSACantGetTerminology errOSACantGetTerminology --2708 errOSADataBlockTooLarge Signaled when an intrinsic limitation is exceeded for the size of a value or data structure. --2707 errOSAInternalTableOverflow Signaled when a runtime internal data structure overflows --2706 errOSAStackOverflow Signaled when the runtime stack overflows --2705 errOSACorruptTerminology Signaled when an application's terminology resource is not readable --2704 errOSAAppNotHighLevelEventAware Signaled when an application can't respond to AppleEvents --2703 errOSACantLaunch Signaled when application can't be launched or when it is remote and program linking is not enabled --2702 errOSANumericOverflow Signaled when integer or real value is too large to be represented --2701 errOSADivideByZero Signaled when there is an attempt to divide by zero --2700 errOSAGeneralError Signaled by user scripts or applications when no actual error code is to be returned. --2582 noIconDataAvailableErr The necessary icon data is not available --2581 noSuchIconErr The requested icon could not be found --2580 invalidIconRefErr The icon ref is not valid --2557 nrCallNotSupported This call is not available or supported on this machine --2556 nrTransactionAborted transaction was aborted --2555 nrExitedIteratorScope outer scope of iterator was exited --2554 nrIterationDone iteration operation is done --2553 nrPropertyAlreadyExists property already exists --2552 nrInvalidEntryIterationOp invalid entry iteration operation --2551 nrPathBufferTooSmall buffer for path is too small --2550 nrPathNotFound a path component lookup failed --2549 nrResultCodeBase nrResultCodeBase --2548 nrOverrunErr nrOverrunErr --2547 nrNotModifiedErr nrNotModifiedErr --2546 nrTypeMismatchErr nrTypeMismatchErr --2545 nrPowerSwitchAbortErr nrPowerSwitchAbortErr --2544 nrPowerErr nrPowerErr --2543 nrDataTruncatedErr nrDataTruncatedErr --2542 nrNotSlotDeviceErr nrNotSlotDeviceErr --2541 nrNameErr nrNameErr --2540 nrNotCreatedErr nrNotCreatedErr --2539 nrNotFoundErr nrNotFoundErr --2538 nrInvalidNodeErr nrInvalidNodeErr --2537 nrNotEnoughMemoryErr nrNotEnoughMemoryErr --2536 nrLockedErr nrLockedErr --2526 mmInternalError mmInternalError --2524 tsmDefaultIsNotInputMethodErr Current Input source is KCHR or uchr, not Input Method (GetDefaultInputMethod) --2523 tsmNoStem No stem exists for the token --2522 tsmNoMoreTokens No more tokens are available for the source text --2521 tsmNoHandler No Callback Handler exists for callback --2520 tsmInvalidContext Invalid TSMContext specified in call --2519 tsmUnknownErr any other errors --2518 tsmUnsupportedTypeErr unSupported interface type error --2517 tsmScriptHasNoIMErr script has no imput method or is using old IM --2516 tsmInputMethodIsOldErr returned by GetDefaultInputMethod --2515 tsmComponentAlreadyOpenErr text service already opened for the document --2514 tsmTSNotOpenErr text service is not open --2513 tsmTSHasNoMenuErr the text service has no menu --2512 tsmUseInputWindowErr not TSM aware because we are using input window --2511 tsmDocumentOpenErr there are open documents --2510 tsmTextServiceNotFoundErr no text service found --2509 tsmCantOpenComponentErr canÕt open the component --2508 tsmNoOpenTSErr no open text service --2507 tsmDocNotActiveErr document is NOT active --2506 tsmTSMDocBusyErr document is still active --2505 tsmInvalidDocIDErr invalid TSM documentation id --2504 tsmNeverRegisteredErr app never registered error (not TSM aware) --2503 tsmAlreadyRegisteredErr want to register again error --2502 tsmNotAnAppErr not an application error --2501 tsmInputMethodNotFoundErr tsmInputMethodNotFoundErr --2500 tsmUnsupScriptLanguageErr tsmUnsupScriptLanguageErr --2499 kernelUnrecoverableErr kernelUnrecoverableErr --2422 kernelReturnValueErr kernelReturnValueErr --2421 kernelAlreadyFreeErr kernelAlreadyFreeErr --2419 kernelIDErr kernelIDErr --2418 kernelExceptionErr kernelExceptionErr --2417 kernelTerminatedErr kernelTerminatedErr --2416 kernelInUseErr kernelInUseErr --2415 kernelTimeoutErr kernelTimeoutErr --2414 kernelAsyncReceiveLimitErr kernelAsyncReceiveLimitErr --2413 kernelAsyncSendLimitErr kernelAsyncSendLimitErr --2412 kernelAttributeErr kernelAttributeErr --2411 kernelExecutionLevelErr kernelExecutionLevelErr --2410 kernelDeletePermissionErr kernelDeletePermissionErr --2409 kernelExecutePermissionErr kernelExecutePermissionErr --2408 kernelReadPermissionErr kernelReadPermissionErr --2407 kernelWritePermissionErr kernelWritePermissionErr --2406 kernelObjectExistsErr kernelObjectExistsErr --2405 kernelUnsupportedErr kernelUnsupportedErr --2404 kernelPrivilegeErr kernelPrivilegeErr --2403 kernelOptionsErr kernelOptionsErr --2402 kernelCanceledErr kernelCanceledErr --2401 kernelIncompleteErr kernelIncompleteErr --2209 badCallOrderErr Usually due to a status call being called prior to being setup first --2208 noDMAErr CanÕt do DMA digitizing (i.e. can't go to requested dest --2207 badDepthErr CanÕt digitize into this depth --2206 notExactSizeErr CanÕt do exact size requested --2205 noMoreKeyColorsErr all key indexes in use --2204 notExactMatrixErr warning of bad matrix, digitizer did its best --2203 matrixErr bad matrix, digitizer did nothing --2202 qtParamErr bad input parameter (out of range, etc) --2201 digiUnimpErr feature unimplemented --2159 qtXMLApplicationErr qtXMLApplicationErr --2158 qtXMLParseErr qtXMLParseErr --2157 qtActionNotHandledErr qtActionNotHandledErr --2149 notEnoughDataErr notEnoughDataErr --2148 urlDataHFTPURLErr urlDataHFTPURLErr --2147 urlDataHFTPServerDisconnectedErr urlDataHFTPServerDisconnectedErr --2146 urlDataHFTPNoPasswordErr urlDataHFTPNoPasswordErr --2145 urlDataHFTPNeedPasswordErr urlDataHFTPNeedPasswordErr --2144 urlDataHFTPBadNameListErr urlDataHFTPBadNameListErr --2143 urlDataHFTPNoNetDriverErr urlDataHFTPNoNetDriverErr --2142 urlDataHFTPFilenameErr urlDataHFTPFilenameErr --2141 urlDataHFTPPermissionsErr urlDataHFTPPermissionsErr --2140 urlDataHFTPQuotaErr urlDataHFTPQuotaErr --2139 urlDataHFTPNoDirectoryErr urlDataHFTPNoDirectoryErr --2138 urlDataHFTPDataConnectionErr urlDataHFTPDataConnectionErr --2137 urlDataHFTPServerErr urlDataHFTPServerErr --2136 urlDataHFTPBadPasswordErr urlDataHFTPBadPasswordErr --2135 urlDataHFTPBadUserErr urlDataHFTPBadUserErr --2134 urlDataHFTPShutdownErr urlDataHFTPShutdownErr --2133 urlDataHFTPProtocolErr urlDataHFTPProtocolErr --2132 urlDataHHTTPRedirectErr urlDataHHTTPRedirectErr --2131 urlDataHHTTPURLErr urlDataHHTTPURLErr --2130 urlDataHHTTPNoNetDriverErr urlDataHHTTPNoNetDriverErr --2129 urlDataHHTTPProtocolErr urlDataHHTTPProtocolErr --2127 qtNetworkAlreadyAllocatedErr qtNetworkAlreadyAllocatedErr --2126 notAllowedToSaveMovieErr notAllowedToSaveMovieErr --2125 fileOffsetTooBigErr fileOffsetTooBigErr --2124 ASDEntryNotFoundErr ASDEntryNotFoundErr --2123 ASDBadForkErr ASDBadForkErr --2122 ASDBadHeaderErr ASDBadHeaderErr --2121 AAPNotFoundErr AAPNotFoundErr --2120 AAPNotCreatedErr AAPNotCreatedErr --2119 qfcbNotCreatedErr qfcbNotCreatedErr --2118 qfcbNotFoundErr qfcbNotFoundErr --2117 wackBadMetaDataErr wackBadMetaDataErr --2116 wackForkNotFoundErr wackForkNotFoundErr --2115 wackBadFileErr wackBadFileErr --2114 unknownFormatErr unknownFormatErr --2113 pathNotVerifiedErr pathNotVerifiedErr --2112 noPathMappingErr noPathMappingErr --2111 emptyPathErr emptyPathErr --2110 pathTooLongErr pathTooLongErr --2109 cannotBeLeafAtomErr cannotBeLeafAtomErr --2108 invalidAtomTypeErr invalidAtomTypeErr --2107 invalidAtomContainerErr invalidAtomContainerErr --2106 invalidAtomErr invalidAtomErr --2105 duplicateAtomTypeAndIDErr duplicateAtomTypeAndIDErr --2104 atomIndexInvalidErr atomIndexInvalidErr --2103 atomsNotOfSameTypeErr atomsNotOfSameTypeErr --2102 notLeafAtomErr notLeafAtomErr --2101 cannotFindAtomErr cannotFindAtomErr --2097 unsupportedProcessorErr unsupportedProcessorErr --2096 unsupportedOSErr unsupportedOSErr --2095 qtmlUninitialized qtmlUninitialized --2094 qtmlDllEntryNotFoundErr Windows specific errors (when qtml is loading) --2093 qtmlDllLoadErr Windows specific errors (when qtml is loading) --2092 componentDllEntryNotFoundErr Windows specific errors (when component is loading) --2091 componentDllLoadErr Windows specific errors (when component is loading) --2090 videoOutputInUseErr videoOutputInUseErr --2089 noExportProcAvailableErr noExportProcAvailableErr --2087 tuneParseOSErr tuneParseOSErr --2086 tunePlayerFullOSErr tunePlayerFullOSErr --2085 noteChannelNotAllocatedOSErr noteChannelNotAllocatedOSErr --2084 illegalNoteChannelOSErr illegalNoteChannelOSErr --2083 synthesizerOSErr synthesizerOSErr --2082 synthesizerNotRespondingOSErr synthesizerNotRespondingOSErr --2081 midiManagerAbsentOSErr midiManagerAbsentOSErr --2080 illegalControllerOSErr illegalControllerOSErr --2079 illegalInstrumentOSErr illegalInstrumentOSErr --2078 illegalKnobValueOSErr illegalKnobValueOSErr --2077 illegalKnobOSErr illegalKnobOSErr --2076 illegalChannelOSErr illegalChannelOSErr --2075 illegalPartOSErr illegalPartOSErr --2074 illegalVoiceAllocationOSErr illegalVoiceAllocationOSErr --2073 cantReceiveFromSynthesizerOSErr cantReceiveFromSynthesizerOSErr --2072 cantSendToSynthesizerOSErr cantSendToSynthesizerOSErr --2071 notImplementedMusicOSErr notImplementedMusicOSErr --2070 internalComponentErr internalComponentErr --2069 invalidSpriteIDErr invalidSpriteIDErr --2068 invalidImageIndexErr invalidImageIndexErr --2067 invalidSpriteIndexErr invalidSpriteIndexErr --2066 gWorldsNotSameDepthAndSizeErr gWorldsNotSameDepthAndSizeErr --2065 invalidSpritePropertyErr invalidSpritePropertyErr --2064 invalidSpriteWorldPropertyErr invalidSpriteWorldPropertyErr --2063 missingRequiredParameterErr missingRequiredParameterErr --2062 movieTextNotFoundErr movieTextNotFoundErr --2061 sourceNotFoundErr sourceNotFoundErr --2060 noSourceTreeFoundErr noSourceTreeFoundErr --2059 samplesAlreadyInMediaErr samplesAlreadyInMediaErr --2058 auxiliaryExportDataUnavailable auxiliaryExportDataUnavailable --2057 unsupportedAuxiliaryImportData unsupportedAuxiliaryImportData --2056 soundSupportNotAvailableErr QT for Windows error --2055 noSoundTrackInMovieErr QT for Windows error --2054 noVideoTrackInMovieErr QT for Windows error --2053 featureUnsupported featureUnsupported --2052 couldNotUseAnExistingSample couldNotUseAnExistingSample --2051 noDefaultDataRef noDefaultDataRef --2050 badDataRefIndex badDataRefIndex --2049 invalidDataRefContainer invalidDataRefContainer --2048 noMovieFound noMovieFound --2047 dataNoDataRef dataNoDataRef --2046 endOfDataReached endOfDataReached --2045 dataAlreadyClosed dataAlreadyClosed --2044 dataAlreadyOpenForWrite dataAlreadyOpenForWrite --2043 dataNotOpenForWrite dataNotOpenForWrite --2042 dataNotOpenForRead dataNotOpenForRead --2041 invalidSampleDescription invalidSampleDescription --2040 invalidChunkCache invalidChunkCache --2039 invalidSampleDescIndex invalidSampleDescIndex --2038 invalidChunkNum invalidChunkNum --2037 invalidSampleNum invalidSampleNum --2036 invalidRect invalidRect --2035 cantEnableTrack cantEnableTrack --2034 internalQuickTimeError internalQuickTimeError --2033 badEditIndex badEditIndex --2032 timeNotInMedia timeNotInMedia --2031 timeNotInTrack timeNotInTrack --2030 trackNotInMovie trackNotInMovie --2029 trackIDNotFound trackIDNotFound --2028 badTrackIndex badTrackIndex --2027 maxSizeToGrowTooSmall maxSizeToGrowTooSmall --2026 userDataItemNotFound userDataItemNotFound --2025 staleEditState staleEditState --2024 nonMatchingEditState nonMatchingEditState --2023 invalidEditState invalidEditState --2022 cantCreateSingleForkFile happens when file already exists --2021 wfFileNotFound wfFileNotFound --2020 movieToolboxUninitialized movieToolboxUninitialized --2019 progressProcAborted progressProcAborted --2018 mediaTypesDontMatch mediaTypesDontMatch --2017 badEditList badEditList --2016 cantPutPublicMovieAtom cantPutPublicMovieAtom --2015 invalidTime invalidTime --2014 invalidDuration invalidDuration --2013 invalidHandler invalidHandler --2012 invalidDataRef invalidDataRef --2011 invalidSampleTable invalidSampleTable --2010 invalidMovie invalidMovie --2009 invalidTrack invalidTrack --2008 invalidMedia invalidMedia --2007 noDataHandler noDataHandler --2006 noMediaHandler noMediaHandler --2005 badComponentType badComponentType --2004 cantOpenHandler cantOpenHandler --2003 cantFindHandler cantFindHandler --2002 badPublicMovieAtom badPublicMovieAtom --2001 badImageDescription badImageDescription --2000 couldNotResolveDataRef couldNotResolveDataRef --1862 nonDragOriginatorErr illegal attempt at originator only data --1861 badImageErr bad translucent image PixMap --1860 badImageRgnErr bad translucent image region --1859 noSuitableDisplaysErr no displays support translucency --1858 unsupportedForPlatformErr call is for PowerPC only --1857 dragNotAcceptedErr drag was not accepted by receiver --1856 handlerNotFoundErr handler not found --1855 duplicateHandlerErr handler already exists --1854 cantGetFlavorErr error while trying to get flavor data --1853 duplicateFlavorErr flavor type already exists --1852 badDragFlavorErr unknown flavor type --1851 badDragItemErr unknown drag item reference --1850 badDragRefErr unknown drag reference --1813 errEndOfBody errEndOfBody --1812 errEndOfDocument errEndOfDocument --1811 errTopOfBody errTopOfBody --1810 errTopOfDocument errTopOfDocument --1801 errOffsetIsOutsideOfView errOffsetIsOutsideOfView --1800 errOffsetInvalid errOffsetInvalid --1762 errOSACantOpenComponent Can't connect to scripting system with that ID --1761 errOSAComponentMismatch Parameters are from 2 different components --1759 errOSADataFormatTooNew errOSADataFormatTooNew --1758 errOSADataFormatObsolete errOSADataFormatObsolete --1757 errOSANoSuchDialect errOSANoSuchDialect --1756 errOSASourceNotAvailable errOSASourceNotAvailable --1754 errOSABadSelector errOSABadSelector --1753 errOSAScriptError errOSAScriptError --1752 errOSABadStorageType errOSABadStorageType --1751 errOSAInvalidID errOSAInvalidID --1750 errOSASystemError errOSASystemError --1741 errAEBufferTooSmall buffer for AEFlattenDesc too small --1740 errAEBuildSyntaxError AEBuildDesc and friends detected a syntax error --1739 errAEDescIsNull attempting to perform an invalid operation on a null descriptor --1738 errAEStreamAlreadyConverted attempt to convert a stream that has already been converted --1737 errAEStreamBadNesting nesting violation while streaming --1736 errAEDuplicateHandler attempt to install handler in table for identical class and id (1.1 or greater) --1735 errAEEventFiltered event has been filtered, and should not be propogated (1.1 or greater) --1734 errAEReceiveEscapeCurrent break out of only lowest level of AEReceive (1.1 or greater) --1733 errAEReceiveTerminate break out of all levels of AEReceive to the topmost (1.1 or greater) --1732 errAERecordingIsAlreadyOn available only in version 1.0.1 or greater --1731 errAEUnknownObjectType available only in version 1.0.1 or greater --1730 errAEEmptyListContainer Attempt to pass empty list as container to accessor --1729 errAENegativeCount CountProc returned negative value --1728 errAENoSuchObject e.g.,: specifier asked for the 3rd, but there are only 2. Basically, this indicates a run-time resolution error. --1727 errAENotAnObjSpec Param to AEResolve not of type 'obj ' --1726 errAEBadTestKey Test is neither typeLogicalDescriptor nor typeCompDescriptor --1725 errAENoSuchLogical Something other than AND, OR, or NOT --1723 errAEAccessorNotFound Accessor proc matching wantClass and containerType or wildcards not found --1721 errAEWrongNumberArgs Logical op kAENOT used with other than 1 term --1720 errAEImpossibleRange A range like 3rd to 2nd, or 1st to all. --1719 errAEIllegalIndex index is out of range in a put operation --1718 errAEReplyNotArrived the contents of the reply you are accessing have not arrived yet --1717 errAEHandlerNotFound no handler in the dispatch tables fits the parameters to AEGetEventHandler or AEGetCoercionHandler --1716 errAEUnknownAddressType the target address type is not known --1715 errAEParamMissed a required parameter was not accessed --1714 errAENotASpecialFunction there is no special function for/with this keyword --1713 errAENoUserInteraction no user interaction is allowed --1712 errAETimeout the AppleEvent timed out --1711 errAEWaitCanceled in AESend, the user cancelled out of wait loop for reply or receipt --1710 errAEUnknownSendMode mode wasn't NoReply, WaitReply, or QueueReply or Interaction level is unknown --1709 errAEReplyNotValid AEResetTimer was passed an invalid reply parameter --1708 errAEEventNotHandled the AppleEvent was not handled by any handler --1707 errAENotAppleEvent the event is not in AppleEvent format --1706 errAENewerVersion need newer version of the AppleEvent manager --1705 errAEBadListItem the specified list item does not exist --1704 errAENotAEDesc errAENotAEDesc --1703 errAEWrongDataType errAEWrongDataType --1702 errAECorruptData errAECorruptData --1701 errAEDescNotFound errAEDescNotFound --1700 errAECoercionFail bad parameter data or unable to coerce the data supplied --1424 errFSIteratorNotSupported The iterator's flags or container are not supported by this call --1423 errFSIteratorNotFound Passed FSIterator is not an open iterator --1422 errFSBadIteratorFlags Flags passed to FSOpenIterator are bad --1421 errFSForkExists Named fork already exists. --1420 errFSRefsDifferent FSCompareFSRefs; refs are for different objects --1419 errFSBadSearchParams Something wrong with CatalogSearch searchParams --1418 errFSBadItemCount maximumItems was zero --1417 errFSNoMoreItems Iteration ran out of items to return --1413 errFSBadAllocFlags Invalid bits set in allocationFlags --1412 errFSBadPosMode Newline bits set in positionMode --1411 errFSMissingName A Unicode name parameter was NULL or nameLength parameter was zero --1410 errFSNameTooLong File/fork name is too long to create/rename --1409 errFSForkNotFound Named fork does not exist --1407 errFSNotAFolder Expected a folder, got a file --1406 errFSMissingCatInfo A CatalogInfo parameter was NULL --1405 errFSBadInfoBitmap A CatalogInfoBitmap or VolumeInfoBitmap has reserved or invalid bits set --1404 errFSBadForkRef A ForkRefNum parameter was bad --1403 errFSBadBuffer A buffer parameter was bad --1402 errFSBadForkName Fork name parameter is bad --1401 errFSBadFSRef FSRef parameter is bad --1400 errFSUnknownCall selector is not recognized by this filesystem --1327 badFCBErr FCBRecPtr is not valid --1311 volVMBusyErr can't eject because volume is in use by VM --1310 fsDataTooBigErr file or volume is too big for system --1309 fileBoundsErr file's EOF, offset, mark or size is too big --1308 notARemountErr when _Mount allows only remounts and doesn't get one --1307 badFidErr file id is dangling or doesn't match with the file number --1306 sameFileErr can't exchange a file with itself --1305 desktopDamagedErr desktop database files are corrupted --1304 catChangedErr the catalog has been modified --1303 diffVolErr files on different volumes --1302 notAFileErr directory specified --1301 fidExists file id already exists --1300 fidNotFound no file thread exists. --1280 errRefNum bad connection refNum --1279 errAborted control call was aborted --1278 errState bad connection state for this operation --1277 errOpening open connection request failed --1276 errAttention attention message too long --1275 errFwdReset read terminated by forward reset --1274 errDSPQueueSize DSP Read/Write Queue Too small --1273 errOpenDenied open connection request was denied --1105 reqAborted reqAborted --1104 noDataArea noDataArea --1103 noSendResp noSendResp --1102 cbNotFound cbNotFound --1101 noRelErr noRelErr --1100 badBuffNum badBuffNum --1099 badATPSkt badATPSkt --1098 tooManySkts tooManySkts --1097 tooManyReqs tooManyReqs --1096 reqFailed reqFailed --1075 aspNoAck No ack on attention request (server err) --1074 aspTooMany Too many clients (server error) --1073 aspSizeErr Command block too big --1072 aspSessClosed Session closed --1071 aspServerBusy Server cannot open another session --1070 aspParamErr Parameter error --1069 aspNoServers No servers at that address --1068 aspNoMoreSess No more sessions on server --1067 aspBufTooSmall Buffer too small --1066 aspBadVersNum Server cannot support this ASP version --1029 nbpNISErr Error trying to open the NIS --1028 nbpNotFound Name not found on remove --1027 nbpDuplicate Duplicate name exists already --1026 nbpConfDiff Name confirmed at different socket --1025 nbpNoConfirm nbpNoConfirm --1024 nbpBuffOvr Buffer overflow in LookupName --1000 noMaskFoundErr Icon Utilties Error --985 kFMFontContainerAccessErr kFMFontContainerAccessErr --984 kFMFontTableAccessErr kFMFontTableAccessErr --983 kFMIterationScopeModifiedErr kFMIterationScopeModifiedErr --982 kFMInvalidFontErr kFMInvalidFontErr --981 kFMInvalidFontFamilyErr kFMInvalidFontFamilyErr --980 kFMIterationCompleted kFMIterationCompleted --932 guestNotAllowedErr destination port requires authentication --931 badLocNameErr location name malformed --930 badServiceMethodErr illegal service type, or not supported --928 noUserRecErr Invalid user reference number --927 authFailErr unable to authenticate user at destination --926 noInformErr PPCStart failed because destination did not have inform pending --925 networkErr An error has occurred in the network, not too likely --924 noUserRefErr unable to create a new userRefNum --923 notLoggedInErr The default userRefNum does not yet exist --922 noDefaultUserErr user hasn't typed in owners name in Network Setup Control Pannel --919 badPortNameErr PPCPortRec malformed --917 sessClosedErr session was closed --916 portClosedErr port was closed --915 noResponseErr unable to contact destination --914 noToolboxNameErr A system resource is missing, not too likely --913 noMachineNameErr user hasn't named his Macintosh in the Network Setup Control Panel --912 userRejectErr Destination rejected the session request --911 noUserNameErr user name unknown on destination machine --910 portNameExistsErr port is already open (perhaps in another app) --909 badReqErr bad parameter or invalid state for operation --908 noSessionErr Invalid session reference number --907 sessTableErr Out of session tables, try again later --906 destPortErr Port does not exist at destination --905 localOnlyErr Network activity is currently disabled --904 noGlobalsErr The system is hosed, better re-boot --903 noPortErr Unable to open port or bad portRefNum. If you're calling --902 nameTypeErr Invalid or inappropriate locationKindSelector in locationName --900 notInitErr PPCToolBox not initialized --877 notAppropriateForClassic This application won't or shouldn't run on Classic (Problem 2481058). --876 appVersionTooOld The application's creator and version are incompatible with the current version of Mac OS. --875 wrongApplicationPlatform The application could not launch because the required platform is not available --863 hmCloseViewActive Returned from HMRemoveBalloon if CloseView was active --862 hmNoBalloonUp Returned from HMRemoveBalloon if no balloon was visible when call was made --861 hmOperationUnsupported Returned from HMShowBalloon call if bad method passed to routine --859 hmUnknownHelpType Returned if help msg record contained a bad type --858 hmWrongVersion Returned if help mgr resource was the wrong version --857 hmSkippedBalloon Returned from calls if helpmsg specified a skip balloon --855 hmHelpManagerNotInited Returned from HMGetHelpMenuHandle if help menu not setup --854 hmSameAsLastBalloon Returned from HMShowMenuBalloon if menu & item is same as last time --853 hmBalloonAborted Returned if mouse was moving or mouse wasn't in window port rect --850 hmHelpDisabled Show Balloons mode was off, call to routine ignored --813 rcDBPackNotInited attempt to call other routine before InitDBPack --812 rcDBWrongVersion incompatible versions --811 rcDBNoHandler no app handler for specified data type --810 rcDBBadAsyncPB tried to kill a bad pb --809 rcDBAsyncNotSupp ddev does not support async calls --808 rcDBBadDDEV bad ddev specified on DBInit --807 rcDBBadSessNum bad session number for DBGetConnInfo --806 rcDBBadSessID rcDBBadSessID --805 rcDBExec rcDBExec --804 rcDBBreak rcDBBreak --803 rcDBBadType rcDBBadType --802 rcDBError rcDBError --801 rcDBValue rcDBValue --800 rcDBNull rcDBNull --677 icTooManyProfilesErr too many profiles in database --676 icProfileNotFoundErr profile not found --675 icConfigInappropriateErr incorrect manufacturer code --674 icConfigNotFoundErr no internet configuration was found --673 icNoURLErr no URL found --672 icNothingToOverrideErr no component for the override component to capture --671 icNoMoreWritersErr you cannot begin a write session because someone else is already doing it --670 icTruncatedErr more data was present than was returned --669 icInternalErr Internet Config internal error --668 icPrefDataErr problem with preference data --667 icPermErr cannot set preference --666 icPrefNotFoundErr Internet preference not found --648 vmInvalidOwningProcessErr current process does not own the BackingFileID or FileViewID --647 vmAddressNotInFileViewErr address is not in a FileView --646 vmNoMoreFileViewsErr no more FileViews were found --645 vmFileViewAccessErr requested FileViewAccess cannot be obtained --644 vmInvalidFileViewIDErr invalid FileViewID --643 vmNoMoreBackingFilesErr no more BackingFiles were found --642 vmBusyBackingFileErr open views found on BackingFile --641 vmMappingPrivilegesErr requested MappingPrivileges cannot be obtained --640 vmInvalidBackingFileIDErr invalid BackingFileID --626 noMMUErr no MMU present --625 cannotDeferErr unable to defer additional functions --624 interruptsMaskedErr donÕt call with interrupts masked --623 notLockedErr specified range of memory is not locked --622 cannotMakeContiguousErr cannot make specified range contiguous --621 notHeldErr specified range of memory is not held --620 notEnoughMemoryErr insufficient physical memory --619 threadProtocolErr threadProtocolErr --618 threadNotFoundErr threadNotFoundErr --617 threadTooManyReqsErr threadTooManyReqsErr --610 noUserInteractionAllowed no user interaction allowed --609 connectionInvalid connectionInvalid --608 noOutstandingHLE noOutstandingHLE --607 bufferIsSmall error returns from Post and Accept --606 appIsDaemon app is BG-only, and launch flags disallow this --605 appMemFullErr application SIZE not big enough for launch --604 hardwareConfigErr hardware configuration not correct for call --603 protocolErr app made module calls in improper order --602 appModeErr memory mode is 32-bit, but app not 32-bit clean --601 memFragErr not enough room to launch app w/special requirements --600 procNotFound no eligible process with specified descriptor --503 driverHardwareGoneErr disk driver's hardware was disconnected --502 hwParamErr bad selector for _HWPriv --501 teScrapSizeErr scrap item too big for text edit record --500 rgnTooBigErr rgnTooBigErr --492 exUserBreak user debugger break; execute debugger commands on stack --491 strUserBreak user debugger break; display string on stack --490 userBreak user debugger break --463 notThePublisherWrn not the first registered publisher for that container --462 containerAlreadyOpenWrn container already opened by this section --461 containerNotFoundWrn could not find editionContainer at this time --460 multiplePublisherWrn A Publisher is already registered for that container --454 badSubPartErr can not use sub parts in this release --453 badEditionFileErr edition file is corrupt --452 notRegisteredSectionErr not a registered SectionRecord --451 badSectionErr not a valid SectionRecord --450 editionMgrInitErr edition manager not inited by this app --438 fsmUnknownFSMMessageErr unknown message passed to FSM --437 fsmNoAlternateStackErr no alternate stack for HFS CI --436 fsmBadFSDVersionErr FSM version incompatible with FSD --435 fsmDuplicateFSIDErr FSID already exists on InstallFS --434 fsmBadFSDLenErr FSD size incompatible with current FSM vers --433 fsmBadFFSNameErr Name length not 1 <= length <= 31 --432 fsmBusyFFSErr File system is busy, cannot be removed --431 fsmFFSNotFoundErr Foreign File system does not exist - new Pack2 could return this error too --417 btKeyAttrErr There is no such a key attribute. --416 btKeyLenErr Maximum key length is too long or equal to zero. --415 btRecNotFnd Record cannot be found. --414 btDupRecErr Record already exists. --413 btNoSpace Can't allocate disk space. --410 notBTree The file is not a dictionary. --400 gcrOnMFMErr gcr format on high density media error --360 slotNumErr invalid slot # error --351 smRecNotFnd Record not found in the SRT. --350 smSRTOvrFlErr SRT over flow. --349 smNoGoodOpens No opens were successfull in the loop. --348 smOffsetErr Offset was too big (temporary error --347 smByteLanesErr NumByteLanes was determined to be zero. --346 smBadsPtrErr Bad pointer was passed to sCalcsPointer --345 smsGetDrvrErr Error occurred during _sGetDriver. --344 smNoMoresRsrcs No more sResources --343 smDisDrvrNamErr Error occurred during _sDisDrvrName. --342 smGetDrvrNamErr Error occurred during _sGetDrvrName. --341 smCkStatusErr Status of slot = fail. --340 smBlkMoveErr _BlockMove error --339 smNewPErr _NewPtr error --338 smSelOOBErr Selector out of bounds error --337 smSlotOOBErr Slot out of bounds error --336 smNilsBlockErr Nil sBlock error (Dont allocate and try to use a nil sBlock) --335 smsPointerNil LPointer is nil From sOffsetData. If this error occurs; check sInfo rec for more information. --334 smCPUErr Code revision is wrong --333 smCodeRevErr Code revision is wrong --332 smReservedErr Reserved field not zero --331 smBadsList Bad sList: Id1 < Id2 < Id3 ...format is not followed. --330 smBadRefId Reference Id not found in List --320 smBusErrTO BusError time out. --319 smBadBoardId BoardId was wrong; re-init the PRAM record. --318 smReservedSlot slot is reserved, VM should not use this address space. --317 smInitTblVErr An error occurred while trying to initialize the Slot Resource Table. --316 smInitStatVErr The InitStatusV field was negative after primary or secondary init. --315 smNoBoardId No Board Id. --314 smGetPRErr Error occurred during _sGetPRAMRec (See SIMStatus). --313 smNoBoardSRsrc No Board sResource. --312 smDisposePErr _DisposePointer error --311 smFHBlkDispErr Error occurred during _sDisposePtr (Dispose of FHeader block). --310 smFHBlockRdErr Error occurred during _sGetFHeader. --309 smBLFieldBad ByteLanes field was bad. --308 smUnExBusErr Unexpected BusError --307 smResrvErr Fatal reserved error. Resreved field <> 0. --306 smNosInfoArray No sInfoArray. Memory Mgr error. --305 smDisabledSlot This slot is disabled (-305 use to be smLWTstBad) --304 smNoDir Directory offset is Nil --303 smRevisionErr Wrong revison level --302 smFormatErr FHeader Format is not Apple's --301 smCRCFail CRC check failed for declaration data --300 smEmptySlot No card in slot --299 nmTypErr Notification Manager:wrong queue type --293 smPriInitErr Error; Cards could not be initialized. --292 smPRAMInitErr Error; Slot Resource Table could not be initialized. --291 smSRTInitErr Error; Slot Resource Table could not be initialized. --290 smSDMInitErr Error; SDM could not be initialized. --261 midiInvalidCmdErr command not supported for port type --260 midiDupIDErr duplicate client ID --259 midiNameLenErr name supplied is longer than 31 characters --258 midiWriteErr MIDIWritePacket couldn't write to all connected ports --257 midiNoConErr no connection exists between specified ports --256 midiVConnectRmvd pending virtual connection removed --255 midiVConnectMade pending virtual connection resolved --254 midiVConnectErr pending virtual connection created --253 midiTooManyConsErr too many connections made --252 midiTooManyPortsErr too many ports already installed in the system --251 midiNoPortErr no port with that ID found --250 midiNoClientErr no client with that ID found --247 badInputText badInputText --246 badDictFormat badDictFormat --245 incompatibleVoice incompatibleVoice --244 voiceNotFound voiceNotFound --243 bufTooSmall bufTooSmall --242 synthNotReady synthNotReady --241 synthOpenFailed synthOpenFailed --240 noSynthFound noSynthFound --232 siUnknownQuality invalid quality selector (returned by driver) --231 siUnknownInfoType invalid info type selector (returned by driver) --230 siInputDeviceErr input device hardware failure --229 siBadRefNum invalid input device reference number --228 siBadDeviceName input device could not be opened --227 siDeviceBusyErr input device already in use --226 siInvalidSampleSize invalid sample size --225 siInvalidSampleRate invalid sample rate --224 siHardDriveTooSlow hard drive too slow to record to disk --223 siInvalidCompression invalid compression type --222 siNoBufferSpecified returned by synchronous SPBRecord if nil buffer passed --221 siBadSoundInDevice invalid index passed to SoundInGetIndexedDevice --220 siNoSoundInHardware no Sound Input hardware --213 siVBRCompressionNotSupported vbr audio compression not supported for this operation --212 noMoreRealTime not enough CPU cycles left to add another task --211 channelNotBusy channelNotBusy --210 buffersTooSmall can not operate in the memory allowed --209 channelBusy the Channel is being used for a PFD already --208 badFileFormat was not type AIFF or was of bad format,corrupt --207 notEnoughBufferSpace could not allocate enough memory --206 badFormat Sound Manager Error Returns --205 badChannel Sound Manager Error Returns --204 resProblem Sound Manager Error Returns --203 queueFull Sound Manager Error Returns --201 notEnoughHardwareErr Sound Manager Error Returns --200 noHardwareErr Sound Manager Error Returns --199 mapReadErr map inconsistent with operation --198 resAttrErr attribute inconsistent with operation --197 rmvRefFailed RmveReference failed --196 rmvResFailed RmveResource failed --195 addRefFailed AddReference failed --194 addResFailed AddResource failed --193 resFNotFound Resource file not found --192 resNotFound Resource not found --190 inputOutOfBounds Offset of Count out of bounds --189 writingPastEnd Writing past end of file --188 resourceInMemory Resource already in memory --186 CantDecompress resource bent ("the bends") - can't decompress a compressed resource --185 badExtResource extended resource has a bad format. --182 cmNoCurrentProfile Responder error --181 cmUnsupportedDataType Responder error --180 cmCantDeleteProfile Responder error --179 cmCantXYZ CMM cant handle XYZ space --178 cmCantConcatenateError Profile can't be concatenated --177 cmProfilesIdentical Profiles the same --176 cmProfileNotFound Responder error --175 cmMethodNotFound CMM not present --171 cmMethodError cmMethodError --170 cmProfileError cmProfileError --157 cDepthErr invalid pixel depth --156 cResErr invalid resolution for MakeITable --155 cDevErr invalid type of graphics device --154 cProtectErr colorTable entry protection violation --153 cRangeErr range error on colorTable request --152 cNoMemErr failed to allocate memory for structure --151 cTempMemErr failed to allocate memory for temporary structures --150 cMatchErr Color2Index failed to find an index --149 insufficientStackErr insufficientStackErr --148 pixMapTooDeepErr pixMapTooDeepErr --147 rgnOverflowErr rgnOverflowErr --145 noMemForPictPlaybackErr noMemForPictPlaybackErr --128 userCanceledErr userCanceledErr --127 hMenuFindErr could not find HMenu's parent in MenuKey (wrong error code - obsolete) --126 mBarNFnd system error code for MBDF not found --125 updPixMemErr insufficient memory to update a pixmap --124 volGoneErr Server volume has been disconnected. --123 wrgVolTypErr Wrong volume type error [operation not supported for MFS] --122 badMovErr Move into offspring error --121 tmwdoErr No free WDCB available --120 dirNFErr Directory not found --117 memLockedErr trying to move a locked block (MoveHHi) --116 memSCErr Size Check failed --115 memBCErr Block Check failed --114 memPCErr Pointer Check failed --113 memAZErr Address in zone check failed --112 memPurErr trying to purge a locked or non-purgeable block --111 memWZErr WhichZone failed (applied to free block) --110 memAdrErr address was odd; or out of range --109 nilHandleErr Master Pointer was NIL in HandleZone or other --108 memFullErr Not enough room in heap zone --102 noTypeErr No object of that type in scrap --100 noScrapErr No scrap exists error --99 memROZWarn soft error in ROZ --98 portNotCf driver Open error code (parameter RAM not configured for this connection) --97 portInUse driver Open error code (port is in use) --96 portNotPwr serial port not currently powered --95 excessCollsns excessive collisions on write --94 lapProtErr error in attaching/detaching protocol --93 noBridgeErr no network bridge for non-local send --92 eLenErr Length error ddpLenErr --91 eMultiErr Multicast address error ddpSktErr --90 breakRecd Break received (SCC) --89 rcvrErr SCC receiver error (framing; parity; OR) --88 prInitErr InitUtil found the parameter ram uninitialized --87 prWrErr parameter ram written didn't read-verify --86 clkWrErr time written did not verify --85 clkRdErr unable to read same clock value twice --84 verErr track failed to verify --83 fmt2Err can't get enough sync --82 fmt1Err can't find sector 0 after track format --81 sectNFErr sector number never found on a track --80 seekErr track number wrong on address mark --79 spdAdjErr unable to correctly adjust disk speed --78 twoSideErr tried to read 2nd side on a 1-sided drive --77 initIWMErr unable to initialize IWM --76 tk0BadErr track 0 detect doesn't change --75 cantStepErr step handshake failed --74 wrUnderrun write underrun occurred --73 badDBtSlp bad data mark bit slip nibbles --72 badDCksum bad data mark checksum --71 noDtaMkErr couldn't find a data mark header --70 badBtSlpErr bad addr mark bit slip nibbles --69 badCksmErr addr mark checksum didn't check --68 dataVerErr read verify compare failed --67 noAdrMkErr couldn't find valid addr mark --66 noNybErr couldn't find 5 nybbles in 200 tries --65 offLinErr r/w requested for an off-line drive --64 fontDecError error during font declaration --61 wrPermErr write permissions error --60 badMDBErr bad master directory block --59 fsRnErr file system internal error:during rename the old entry was deleted but could not be restored. --58 extFSErr volume in question belongs to an external fs --57 noMacDskErr not a mac diskette (sig bytes are wrong) --56 nsDrvErr no such drive (tried to mount a bad drive num) --55 volOnLinErr drive volume already on-line at MountVol --54 permErr permissions error (on file open) --53 volOffLinErr volume not on line error (was Ejected) --52 gfpErr get file position error --51 rfNumErr refnum error --50 paramErr error in user parameter list --49 opWrErr file already open with with write permission --48 dupFNErr duplicate filename (rename) --47 fBsyErr File is busy (delete) --46 vLckdErr volume is locked --45 fLckdErr file is locked --44 wPrErr diskette is write protected. --43 fnfErr File not found --42 tmfoErr too many files open --41 mFulErr memory full (open) or file won't fit (load) --40 posErr tried to position to before start of file (r/w) --39 eofErr End of file --38 fnOpnErr File not open --37 bdNamErr there may be no bad names in the final system! --36 ioErr I/O error (bummers) --35 nsvErr no such volume --34 dskFulErr disk full --33 dirFulErr Directory full --30 dceExtErr dce extension error --29 unitTblFullErr unit table has no more entries --28 notOpenErr Couldn't rd/wr/ctl/sts cause driver not opened --27 iIOAbortErr IO abort error (Printing Manager) --26 dInstErr DrvrInstall couldn't find driver in resources --25 dRemovErr tried to remove an open driver --24 closErr I/O System Errors --23 openErr I/O System Errors --22 unitEmptyErr I/O System Errors --21 badUnitErr I/O System Errors --20 writErr I/O System Errors --19 readErr I/O System Errors --18 statusErr I/O System Errors --17 controlErr I/O System Errors --13 dsExtensionsDisabled say –Extensions Disabled” --12 dsHD20Installed say –HD20 Startup” --11 dsDisassemblerInstalled say –Disassembler Installed” --10 dsMacsBugInstalled say –MacsBug Installed” --8 seNoDB no debugger installed to handle debugger command --5 SlpTypeErr invalid queue element --4 unimpErr unimplemented core routine --3 corErr core routine number out of range --2 dsNoExtsDisassembler not a SysErr, just a placeholder --1 qErr queue element not found during deletion -0 tsmComponentNoErr component result = no error -1 EPERM Operation not permitted -2 ENOENT No such file or directory -3 ESRCH No such process -4 EINTR Interrupted system call -5 EIO Input/output error -6 ENXIO Device not configured -7 E2BIG Argument list too long -8 ENOEXEC Exec format error -9 EBADF Bad file descriptor -10 ECHILD No child processes -11 EDEADLK Resource deadlock avoided -12 ENOMEM Cannot allocate memory -13 EACCES Permission denied -14 EFAULT Bad address -15 ECANCELED Operation cancelled -16 EBUSY Device busy -17 EEXIST File exists -18 EXDEV Cross-device link -19 ENODEV Operation not supported by device -20 ENOTDIR Not a directory -21 EISDIR Is a directory -22 EINVAL Invalid argument -23 ENFILE Too many open files in system -24 EMFILE Too many open files -25 ENOTTY Inappropriate ioctl for device -26 ESIGPARM Signal error -27 EFBIG File too large -28 ENOSPC No space left on device -29 ESPIPE Illegal seek -30 EROFS Read-only file system -31 EMLINK Too many links -32 EPIPE Broken pipe -33 EDOM Numerical argument out of domain -34 ERANGE Result too large -35 EAGAIN Resource temporarily unavailable -36 EINPROGRESS Operation now in progress -37 EALREADY Operation already in progress -38 ENOTSOCK Socket operation on non-socket -39 EDESTADDRREQ Destination address required -40 EMSGSIZE Message too long -41 EPROTOTYPE Protocol wrong type for socket -42 ENOPROTOOPT Protocol not available -43 EPROTONOSUPPORT Protocol not supported -44 ESOCKTNOSUPPORT Socket type not supported -45 EOPNOTSUPP Operation not supported -46 EPFNOSUPPORT Protocol family not supported -47 EAFNOSUPPORT Address family not supported by protocol family -48 EADDRINUSE Address already in use -49 EADDRNOTAVAIL Can't assign requested address -50 ENETDOWN Network is down -51 ENETUNREACH Network is unreachable -52 ENETRESET Network dropped connection on reset -53 ECONNABORTED Software caused connection abort -54 ECONNRESET Connection reset by peer -55 ENOBUFS No buffer space available -56 EISCONN Socket is already connected -57 ENOTCONN Socket is not connected -58 ESHUTDOWN Can't send after socket shutdown -59 ETOOMANYREFS Too many references: can't splice -60 ETIMEDOUT Operation timed out -61 ECONNREFUSED Connection refused -62 ELOOP Too many levels of symbolic links -63 ENAMETOOLONG File name too long -64 EHOSTDOWN Host is down -65 EHOSTUNREACH No route to host -66 ENOTEMPTY Directory not empty -67 ELOOK Internal mapping for kOTLookErr, don't return to client -77 ENOLCK No locks available -78 ENOSYS Function not implemented -88 EILSEQ Wide character encoding error -99 EUNKNOWN Unknown error diff --git a/project/jni/python/src/Mac/scripts/genallsuites.py b/project/jni/python/src/Mac/scripts/genallsuites.py deleted file mode 100644 index a55684767..000000000 --- a/project/jni/python/src/Mac/scripts/genallsuites.py +++ /dev/null @@ -1,52 +0,0 @@ -# Generate all the standard scripting suite packages. -# Note that this module needs *serious* hand-crafting because of all the -# absolute paths. It is, however, a great leap forward compared to the time -# when this information was only stored in Jack's brain:-) - -import sys -import os -import gensuitemodule - -verbose=sys.stdout - -DSTDIR="/Users/jack/src/python/Lib/plat-mac/lib-scriptpackages" -OS9DISK="/Volumes/Moes" - -APPLESCRIPT=OS9DISK + "/Systeemmap/Extensies/AppleScript" -SYSTEMEVENTS="/System/Library/CoreServices/System Events.app" - -CODEWARRIOR=OS9DISK + "/Applications (Mac OS 9)/Metrowerks CodeWarrior 7.0/Metrowerks CodeWarrior/CodeWarrior IDE 4.2.6" -EXPLORER="/Applications/Internet Explorer.app" -FINDER="/System/Library/CoreServices/Finder.app" -NETSCAPE=OS9DISK + "/Applications (Mac OS 9)/Netscape Communicator\xe2\x84\xa2 Folder/Netscape Communicator\xe2\x84\xa2" -TERMINAL="/Applications/Utilities/Terminal.app" - -gensuitemodule.processfile_fromresource(APPLESCRIPT, - output=os.path.join(DSTDIR, 'StdSuites'), - basepkgname='_builtinSuites', - edit_modnames=[], verbose=verbose) -gensuitemodule.processfile(SYSTEMEVENTS, - output=os.path.join(DSTDIR, 'SystemEvents'), - basepkgname='StdSuites', - edit_modnames=[('Disk_2d_Folder_2d_File_Suite', 'Disk_Folder_File_Suite')], - verbose=verbose) -gensuitemodule.processfile(CODEWARRIOR, - output=os.path.join(DSTDIR, 'CodeWarrior'), - basepkgname='StdSuites', - edit_modnames=[], verbose=verbose) -gensuitemodule.processfile(EXPLORER, - output=os.path.join(DSTDIR, 'Explorer'), - basepkgname='StdSuites', - edit_modnames=[], verbose=verbose) -gensuitemodule.processfile(FINDER, - output=os.path.join(DSTDIR, 'Finder'), - basepkgname='StdSuites', - edit_modnames=[], verbose=verbose) -gensuitemodule.processfile(NETSCAPE, - output=os.path.join(DSTDIR, 'Netscape'), - basepkgname='StdSuites', - edit_modnames=[('WorldWideWeb_suite_2c__as_d', 'WorldWideWeb_suite')], verbose=verbose) -gensuitemodule.processfile(TERMINAL, - output=os.path.join(DSTDIR, 'Terminal'), - basepkgname='StdSuites', - edit_modnames=[], verbose=verbose) diff --git a/project/jni/python/src/Mac/scripts/mkestrres-errno.h b/project/jni/python/src/Mac/scripts/mkestrres-errno.h deleted file mode 100644 index 702901b48..000000000 --- a/project/jni/python/src/Mac/scripts/mkestrres-errno.h +++ /dev/null @@ -1,7 +0,0 @@ -/* These are defined in MSL errno.h, but unfortunately not documented */ -#define EFPOS 35 /* File positioning error */ -#define ESIGPARM 36 /* Signal argument error */ -#define ENOMEM 37 /* Cannot allocate memory */ -#define EACCES 38 /* Permission denied */ -#define ENOENT 39 /* No such file or directory */ -#define ENOSYS 40 /* Function not implemented */ diff --git a/project/jni/python/src/Mac/scripts/mkestrres-macerrors.h b/project/jni/python/src/Mac/scripts/mkestrres-macerrors.h deleted file mode 100644 index 26c583dfe..000000000 --- a/project/jni/python/src/Mac/scripts/mkestrres-macerrors.h +++ /dev/null @@ -1,13 +0,0 @@ - /* Errors from InternetConfig.h */ - icPrefNotFoundErr = -666, /* Internet preference not found */ - icPermErr = -667, /* cannot set preference */ - icPrefDataErr = -668, /* problem with preference data */ - icInternalErr = -669, /* Internet Config internal error */ - icTruncatedErr = -670, /* more data was present than was returned */ - icNoMoreWritersErr = -671, /* you cannot begin a write session because someone else is already doing it */ - icNothingToOverrideErr = -672, /* no component for the override component to capture */ - icNoURLErr = -673, /* no URL found */ - icConfigNotFoundErr = -674, /* no internet configuration was found */ - icConfigInappropriateErr = -675, /* incorrect manufacturer code */ - icProfileNotFoundErr = -676, /* profile not found */ - icTooManyProfilesErr = -677 /* too many profiles in database */ diff --git a/project/jni/python/src/Mac/scripts/mkestrres.py b/project/jni/python/src/Mac/scripts/mkestrres.py deleted file mode 100644 index 715b8c62f..000000000 --- a/project/jni/python/src/Mac/scripts/mkestrres.py +++ /dev/null @@ -1,157 +0,0 @@ -"""Parse sys/errno.h and Errors.h and create Estr resource""" - -import re -import string -from Carbon import Res -import os - -READ = 1 -WRITE = 2 -smAllScripts = -3 - -ERRNO_PROG="#define[ \t]+" \ - "([A-Z0-9a-z_]+)" \ - "[ \t]+" \ - "([0-9]+)" \ - "[ \t]*/\*[ \t]*" \ - "(.*)" \ - "[ \t]*\*/" - -ERRORS_PROG="[ \t]*" \ - "([A-Z0-9a-z_]+)" \ - "[ \t]*=[ \t]*" \ - "([-0-9]+)" \ - "[, \t]*/\*[ \t]*" \ - "(.*)" \ - "[ \t]*\*/" - -ERRORS_PROG_2="[ \t]*" \ - "([A-Z0-9a-z_]+)" \ - "[ \t]*=[ \t]*" \ - "([-0-9]+)" \ - "[, \t]*" - -def Pstring(str): - if len(str) > 255: - raise ValueError, 'String too large' - return chr(len(str))+str - -def writeestr(dst, edict): - """Create Estr resource file given a dictionary of errors.""" - - os.unlink(dst.as_pathname()) - Res.FSpCreateResFile(dst, 'RSED', 'rsrc', smAllScripts) - output = Res.FSpOpenResFile(dst, WRITE) - Res.UseResFile(output) - for num in edict.keys(): - res = Res.Resource(Pstring(edict[num][0])) - res.AddResource('Estr', num, '') - res.WriteResource() - Res.CloseResFile(output) - -def writepython(fp, dict): - k = dict.keys() - k.sort() - for i in k: - fp.write("%s\t=\t%d\t#%s\n"%(dict[i][1], i, dict[i][0])) - - -def parse_errno_h(fp, dict): - errno_prog = re.compile(ERRNO_PROG) - for line in fp.readlines(): - m = errno_prog.match(line) - if m: - number = string.atoi(m.group(2)) - name = m.group(1) - desc = string.strip(m.group(3)) - - if not dict.has_key(number): - dict[number] = desc, name - else: - print 'DUPLICATE', number - print '\t', dict[number] - print '\t', (desc, name) - -def parse_errors_h(fp, dict): - errno_prog = re.compile(ERRORS_PROG) - errno_prog_2 = re.compile(ERRORS_PROG_2) - for line in fp.readlines(): - match = 0 - m = errno_prog.match(line) - m2 = errno_prog_2.match(line) - if m: - number = string.atoi(m.group(2)) - name = m.group(1) - desc = string.strip(m.group(3)) - match=1 - elif m2: - number = string.atoi(m2.group(2)) - name = m2.group(1) - desc = name - match=1 - if match: - if number > 0: continue - - if not dict.has_key(number): - dict[number] = desc, name - else: - print 'DUPLICATE', number - print '\t', dict[number] - print '\t', (desc, name) - if len(desc) > len(dict[number][0]): - print 'Pick second one' - dict[number] = desc, name - -def main(): - dict = {} - pathname = EasyDialogs.AskFileForOpen(message="Where is GUSI sys/errno.h?") - if pathname: - fp = open(pathname) - parse_errno_h(fp, dict) - fp.close() - - pathname = EasyDialogs.AskFileForOpen(message="Select cerrno (MSL) or cancel") - if pathname: - fp = open(pathname) - parse_errno_h(fp, dict) - fp.close() - - pathname = EasyDialogs.AskFileForOpen(message="Where is MacErrors.h?") - if pathname: - fp = open(pathname) - parse_errors_h(fp, dict) - fp.close() - - pathname = EasyDialogs.AskFileForOpen(message="Where is mkestrres-MacErrors.h?") - if pathname: - fp = open(pathname) - parse_errors_h(fp, dict) - fp.close() - - if not dict: - return - - pathname = EasyDialogs.AskFileForSave(message="Resource output file?", savedFileName="errors.rsrc") - if pathname: - writeestr(fss, dict) - - pathname = EasyDialogs.AskFileForSave(message="Python output file?", savedFileName="macerrors.py") - if pathname: - fp = open(pathname, "w") - writepython(fp, dict) - fp.close() - fss.SetCreatorType('Pyth', 'TEXT') - - pathname = EasyDialogs.AskFileForSave(message="Text output file?", savedFileName="errors.txt") - if pathname: - fp = open(pathname, "w") - - k = dict.keys() - k.sort() - for i in k: - fp.write("%d\t%s\t%s\n"%(i, dict[i][1], dict[i][0])) - fp.close() - - -if __name__ == '__main__': - main() diff --git a/project/jni/python/src/Mac/scripts/zappycfiles.py b/project/jni/python/src/Mac/scripts/zappycfiles.py deleted file mode 100644 index a8193c120..000000000 --- a/project/jni/python/src/Mac/scripts/zappycfiles.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/local/bin/python -"""Recursively zap all .pyc and .pyo files""" -import os -import sys - -# set doit true to actually delete files -# set doit false to just print what would be deleted -doit = 1 - -def main(): - if not sys.argv[1:]: - if os.name == 'mac': - import EasyDialogs - dir = EasyDialogs.AskFolder(message='Directory to zap pyc files in') - if not dir: - sys.exit(0) - zappyc(dir) - else: - print 'Usage: zappyc dir ...' - sys.exit(1) - for dir in sys.argv[1:]: - zappyc(dir) - -def zappyc(dir): - os.path.walk(dir, walker, None) - -def walker(dummy, top, names): - for name in names: - if name[-4:] in ('.pyc', '.pyo'): - path = os.path.join(top, name) - print 'Zapping', path - if doit: - os.unlink(path) - -if __name__ == '__main__': - main() diff --git a/project/jni/python/src/Misc/ACKS b/project/jni/python/src/Misc/ACKS deleted file mode 100644 index 79b746712..000000000 --- a/project/jni/python/src/Misc/ACKS +++ /dev/null @@ -1,783 +0,0 @@ -Acknowledgements ----------------- - -This list is not complete and not in any useful order, but I would -like to thank everybody who contributed in any way, with code, hints, -bug reports, ideas, moral support, endorsement, or even complaints.... -Without you, I would've stopped working on Python long ago! - - --Guido - -PS: In the standard Python distribution, this file is encoded in Latin-1. - -David Abrahams -Jim Ahlstrom -Jyrki Alakuijala -Billy G. Allie -Kevin Altis -Mark Anacker -Anders Andersen -John Anderson -Erik Andersén -Oliver Andrich -Ross Andrus -Jason Asbahr -David Ascher -Chris AtLee -John Aycock -Jan-Hein B"uhrman -Donovan Baarda -Attila Babo -Alfonso Baciero -Dwayne Bailey -Stig Bakken -Greg Ball -Luigi Ballabio -Jeff Balogh -Michael J. Barber -Chris Barker -Quentin Barnes -Richard Barran -Cesar Eduardo Barros -Des Barry -Ulf Bartelt -Nick Bastin -Jeff Bauer -Michael R Bax -Anthony Baxter -Samuel L. Bayer -Donald Beaudry -David Beazley -Robin Becker -Neal Becker -Bill Bedford -Reimer Behrends -Ben Bell -Thomas Bellman -Alexander Belopolsky -Andrew Bennetts -Andy Bensky -Michel Van den Bergh -Eric Beser -Steven Bethard -Stephen Bevan -Ron Bickers -David Binger -Dominic Binks -Philippe Biondi -Stuart Bishop -Roy Bixler -Mike Bland -Martin Bless -Pablo Bleyer -Erik van Blokland -Eric Blossom -Finn Bock -Paul Boddie -Matthew Boedicker -David Bolen -Gregory Bond -Jurjen Bos -Peter Bosch -Eric Bouck -Thierry Bousch -Sebastian Boving -Monty Brandenberg -Georg Brandl -Terrence Brannon -Dave Brennan -Tom Bridgman -Richard Brodie -Daniel Brotsky -Jean Brouwers -Gary S. Brown -Oleg Broytmann -Dave Brueck -Stan Bubrouski -Erik de Bueger -Dick Bulterman -Bill Bumgarner -Jimmy Burgett -Tommy Burnette -Roger Burnham -Alastair Burt -Tarn Weisner Burton -Lee Busby -Ralph Butler -Jp Calderone -Daniel Calvelo -Tony Campbell -Brett Cannon -Mike Carlton -Terry Carroll -Donn Cave -Per Cederqvist -Octavian Cerna -Hye-Shik Chang -Jeffrey Chang -Mitch Chapman -Greg Chapman -Brad Chapman -David Chaum -Nicolas Chauvat -Michael Chermside -Albert Chin-A-Young -Adal Chiriliuc -Matt Chisholm -Tom Christiansen -Vadim Chugunov -David Cinege -Mike Clarkson -Brad Clements -Steve Clift -Nick Coghlan -Josh Cogliati -Dave Cole -Benjamin Collar -Jeffery Collins -Paul Colomiets -Matt Conway -David M. Cooke -Greg Copeland -Aldo Cortesi -David Costanzo -Scott Cotton -Greg Couch -Steve Cousins -Alex Coventry -Matthew Dixon Cowles -Christopher A. Craig -Laura Creighton -Simon Cross -Drew Csillag -John Cugini -Tom Culliton -Andrew Dalke -Lars Damerow -Eric Daniel -Scott David Daniels -Ben Darnell -Jonathan Dasteel -John DeGood -Vincent Delft -Arnaud Delobelle -Erik Demaine -Roger Dev -Raghuram Devarakonda -Toby Dickenson -Mark Dickinson -Yves Dionne -Daniel Dittmar -Jaromir Dolecek -Ismail Donmez -Dima Dorfman -Cesar Douady -Dean Draayer -John DuBois -Paul Dubois -Quinn Dunkan -Robin Dunn -Luke Dunstan -Andy Dustman -Gary Duzan -Eugene Dvurechenski -Josip Dzolonga -Maxim Dzumanenko -Walter Dörwald -Hans Eckardt -Grant Edwards -John Ehresman -Andrew Eland -Lance Ellinghaus -David Ely -Jeff Epler -Tom Epperly -Stoffel Erasmus -Jürgen A. Erhard -Michael Ernst -Ben Escoto -Andy Eskilsson -Stefan Esser -Stephen D Evans -Carey Evans -Tim Everett -Paul Everitt -David Everly -Greg Ewing -Martijn Faassen -Andreas Faerber -Bill Fancher -Mark Favas -Niels Ferguson -Sebastian Fernandez -Vincent Fiack -Tomer Filiba -Russell Finn -Nils Fischbeck -Frederik Fix -Matt Fleming -Hernán Martínez Foffani -Michael Foord -Amaury Forgeot d'Arc -Doug Fort -John Fouhy -Martin Franklin -Robin Friedrich -Ivan Frohne -Jim Fulton -Tadayoshi Funaba -Gyro Funch -Peter Funk -Geoff Furnish -Ulisses Furquim -Achim Gaedke -Lele Gaifax -Santiago Gala -Yitzchak Gale -Quentin Gallet-Gilles -Raymund Galvin -Nitin Ganatra -Fred Gansevles -Lars Marius Garshol -Dan Gass -Andrew Gaul -Stephen M. Gava -Harry Henry Gebel -Marius Gedminas -Thomas Gellekum -Christos Georgiou -Ben Gertzfield -Dinu Gherman -Jonathan Giddy -Johannes Gijsbers -Michael Gilfix -Tim Golden -Chris Gonnerman -David Goodger -Hans de Graaff -Eddy De Greef -Duncan Grisby -Dag Gruneau -Michael Guravage -Lars Gustäbel -Thomas Güttler -Barry Haddow -Paul ten Hagen -Rasmus Hahn -Peter Haight -Václav Haisman -Bob Halley -Jesse Hallio -Jun Hamano -Mark Hammond -Manus Hand -Milton L. Hankins -Stephen Hansen -Barry Hantman -Lynda Hardman -Derek Harland -Jason Harper -Larry Hastings -Shane Hathaway -Rycharde Hawkes -Jochen Hayek -Christian Heimes -Thomas Heller -Malte Helmert -Lance Finn Helsten -Jonathan Hendry -James Henstridge -Chris Herborth -Ivan Herman -Jürgen Hermann -Gary Herron -Thomas Herve -Bernhard Herzog -Magnus L. Hetland -Raymond Hettinger -Kevan Heydon -Jason Hildebrand -Richie Hindle -Konrad Hinsen -David Hobley -Tim Hochberg -Joerg-Cyril Hoehle -Gregor Hoffleit -Chris Hoffman -Albert Hofkamp -Jonathan Hogg -Gerrit Holl -Shane Holloway -Rune Holm -Philip Homburg -Naofumi Honda -Jeffrey Honig -Rob Hooft -Brian Hooper -Randall Hopper -Nadav Horesh -Ken Howard -Brad Howes -Chih-Hao Huang -Lawrence Hudson -Michael Hudson -Jim Hugunin -Greg Humphreys -Eric Huss -Jeremy Hylton -Gerhard Häring -Mihai Ibanescu -Lars Immisch -Tony Ingraldi -John Interrante -Bob Ippolito -Atsuo Ishimoto -Paul Jackson -Ben Jackson -David Jacobs -Kevin Jacobs -Kjetil Jacobsen -Geert Jansen -Jack Jansen -Bill Janssen -Drew Jenkins -Flemming Kjær Jensen -Jiba -Orjan Johansen -Gregory K. Johnson -Simon Johnston -Evan Jones -Jeremy Jones -Richard Jones -Irmen de Jong -Lucas de Jonge -John Jorgensen -Jens B. Jorgensen -Fred L. Drake, Jr. -Andreas Jung -Tattoo Mabonzo K. -Bob Kahn -Kurt B. Kaiser -Tamito Kajiyama -Peter van Kampen -Jacob Kaplan-Moss -Lou Kates -Sebastien Keim -Robert Kern -Randall Kern -Magnus Kessler -Lawrence Kesteloot -Vivek Khera -Mads Kiilerich -Taek Joo Kim -Paul Kippes -Steve Kirsch -Ron Klatchko -Bastian Kleineidam -Bob Kline -Matthias Klose -Kim Knapp -Lenny Kneler -Pat Knight -Greg Kochanski -Damon Kohler -Joseph Koshy -Bob Kras -Holger Krekel -Michael Kremer -Fabian Kreutz -Hannu Krosing -Andrew Kuchling -Vladimir Kushnir -Cameron Laird -Tino Lange -Andrew Langmead -Detlef Lannert -Soren Larsen -Piers Lauder -Ben Laurie -Simon Law -Chris Lawrence -Brian Leair -John J. Lee -Inyeol Lee -Thomas Lee -Christopher Lee -Luc Lefebvre -Kip Lehman -Joerg Lehmann -Luke Kenneth Casson Leighton -Marc-Andre Lemburg -John Lenton -Christopher Tur Lesniewski-Laas -Mark Levinson -William Lewis -Robert van Liere -Shawn Ligocki -Martin Ligr -Christopher Lindblad -Bjorn Lindqvist -Per Lindqvist -Eric Lindvall -Gregor Lingl -Nick Lockwood -Stephanie Lockwood -Anne Lord -Tom Loredo -Jason Lowe -Tony Lownds -Ray Loyzaga -Loren Luke -Fredrik Lundh -Mark Lutz -Jim Lynch -Mikael Lyngvig -Martin von Löwis -Andrew I MacIntyre -Tim MacKenzie -Nick Maclaren -Steve Majewski -Grzegorz Makarewicz -Ken Manheimer -Vladimir Marangozov -David Marek -Doug Marien -Alex Martelli -Anthony Martin -Sébastien Martini -Roger Masse -Nick Mathewson -Graham Matthews -Dieter Maurer -Arnaud Mazin -Chris McDonough -Greg McFarlane -Alan McIntyre -Michael McLay -Gordon McMillan -Caolan McNamara -Andrew McNamara -Craig McPheeters -Lambert Meertens -Bill van Melle -Luke Mewburn -Mike Meyer -Steven Miale -Trent Mick -Aristotelis Mikropoulos -Damien Miller -Chad Miller -Jay T. Miller -Roman Milner -Dustin J. Mitchell -Dom Mitchell -Doug Moen -The Dragon De Monsyne -Skip Montanaro -Paul Moore -James A Morrison -Sjoerd Mullender -Sape Mullender -Michael Muller -Piotr Meyer -John Nagle -Takahiro Nakayama -Travers Naran -Fredrik Nehr -Trent Nelson -Tony Nelson -Chad Netzer -Max Neunhöffer -George Neville-Neil -Johannes Nicolai -Samuel Nicolary -Gustavo Niemeyer -Oscar Nierstrasz -Hrvoje Niksic -Jesse Noller -Bill Noon -Stefan Norberg -Tim Northover -Joe Norton -Neal Norwitz -Nigel O'Brian -Kevin O'Connor -Tim O'Malley -Pascal Oberndoerfer -Jeffrey Ollie -Grant Olson -Piet van Oostrum -Jason Orendorff -Douglas Orr -Denis S. Otkidach -Michael Otteneder -R. M. Oudkerk -Russel Owen -Ondrej Palkovsky -Mike Pall -Todd R. Palmer -Juan David Ibáñez Palomar -Jan Palus -M. Papillon -Peter Parente -Alexandre Parenteau -Dan Parisien -Harri Pasanen -Randy Pausch -Samuele Pedroni -Marcel van der Peijl -Steven Pemberton -Mark Perrego -Trevor Perrin -Tim Peters -Benjamin Peterson -Chris Petrilli -Bjorn Pettersen -Geoff Philbrick -Gavrie Philipson -Adrian Phillips -Christopher J. Phoenix -Neale Pickett -Jim St. Pierre -Dan Pierson -Martijn Pieters -François Pinard -Zach Pincus -Michael Piotrowski -Antoine Pitrou -Jean-François Piéronne -Guilherme Polo -Michael Pomraning -Iustin Pop -John Popplewell -Amrit Prem -Paul Prescod -Donovan Preston -Steve Purcell -Fernando Pérez -Eduardo Pérez -Brian Quinlan -Anders Qvist -Burton Radons -Antti Rasinen -Eric Raymond -Edward K. Ream -Marc Recht -John Redford -Terry Reedy -Steve Reeves -Ofir Reichenberg -Sean Reifschneider -Michael P. Reilly -Bernhard Reiter -Steven Reiz -Roeland Rengelink -Tim Rice -Jan Pieter Riegel -Armin Rigo -Nicholas Riley -Jean-Claude Rimbault -Juan M. Bello Rivas -Anthony Roach -Mark Roberts -Jim Robinson -Andy Robinson -Kevin Rodgers -Giampaolo Rodola -Mike Romberg -Armin Ronacher -Case Roole -Timothy Roscoe -Jim Roskind -Just van Rossum -Hugo van Rossum -Saskia van Rossum -Donald Wallace Rouse II -Liam Routt -Craig Rowland -Paul Rubin -Sam Ruby -Audun S. Runde -Jeff Rush -Sam Rushing -Mark Russell -Nick Russo -Hajime Saitou -Rich Salz -Kevin Samborn -Ilya Sandler -Ty Sarna -Ben Sayer -Michael Scharf -Neil Schemenauer -David Scherer -Gregor Schmid -Ralf Schmitt -Michael Schneider -Peter Schneider-Kamp -Arvin Schnell -Chad J. Schroeder -Sam Schulenburg -Stefan Schwarzer -Dietmar Schwertberger -Federico Schwindt -Steven Scott -Barry Scott -Nick Seidenman -Žiga Seilnach -Fred Sells -Jiwon Seo -Jerry Seutter -Denis Severson -Ian Seyer -Ha Shao -Bruce Sherwood -Pete Shinners -Michael Shiplett -John W. Shipman -Joel Shprentz -Itamar Shtull-Trauring -Eric Siegerman -Paul Sijben -Kirill Simonov -Nathan Paul Simons -Janne Sinkkonen -George Sipe -J. Sipprell -Kragen Sitaker -Eric V. Smith -Christopher Smith -Gregory P. Smith -Rafal Smotrzyk -Dirk Soede -Paul Sokolovsky -Cody Somerville -Clay Spence -Per Spilling -Joshua Spoerri -Noah Spurrier -Nathan Srebro -RajGopal Srinivasan -Quentin Stafford-Fraser -Frank Stajano -Oliver Steele -Greg Stein -Chris Stern -Victor Stinner -Richard Stoakley -Peter Stoehr -Casper Stoel -Michael Stone -Ken Stox -Dan Stromberg -Daniel Stutzbach -Nathan Sullivan -Mark Summerfield -Hisao Suzuki -Andrew Svetlov -Kalle Svensson -Paul Swartz -Thenault Sylvain -Geoff Talvola -William Tanksley -Christian Tanzer -Steven Taschuk -Monty Taylor -Amy Taylor -Tobias Thelen -James Thomas -Robin Thomas -Eric Tiedemann -Tracy Tims -Oren Tirosh -Jason Tishler -Christian Tismer -Frank J. Tobin -R Lindsay Todd -Bennett Todd -Richard Townsend -Laurence Tratt -John Tromp -Jason Trowbridge -Anthony Tuininga -Stephen Turner -Bill Tutt -Doobee R. Tzeck -Eren Türkay -Lionel Ulmer -Roger Upole -Michael Urman -Hector Urtubia -Atul Varma -Dmitry Vasiliev -Alexandre Vassalotti -Frank Vercruesse -Mike Verdone -Jaap Vermeulen -Al Vezza -Jacques A. Vidrine -John Viega -Kannan Vijayan -Kurt Vile -Norman Vine -Frank Visser -Niki W. Waibel -Wojtek Walczak -Charles Waldman -Richard Walker -Larry Wall -Greg Ward -Barry Warsaw -Steve Waterbury -Bob Watson -Aaron Watters -Henrik Weber -Corran Webster -Stefan Wehr -Zack Weinberg -Edward Welbourne -Cliff Wells -Rickard Westman -Jeff Wheeler -Christopher White -Mats Wichmann -Truida Wiedijk -Felix Wiemann -Gerry Wiener -Bryce "Zooko" Wilcox-O'Hearn -John Williams -Sue Williams -Gerald S. Williams -Frank Willison -Greg V. Wilson -Jody Winston -Collin Winter -Dik Winter -Blake Winton -Jean-Claude Wippler -Lars Wirzenius -Chris Withers -Stefan Witzel -David Wolever -Klaus-Juergen Wolf -Dan Wolfe -Richard Wolff -Gordon Worley -Thomas Wouters -Heiko Wundram -Doug Wyatt -Ka-Ping Yee -Bob Yodlowski -Danny Yoo -George Yoshida -Masazumi Yoshikawa -Bernard Yue -Moshe Zadka -Milan Zamazal -Artur Zaprzala -Mike Zarnstorff -Siebren van der Zee -Uwe Zessin -Tarek ZiadŽ -Peter Åstrand -Jesse Noller diff --git a/project/jni/python/src/Misc/AIX-NOTES b/project/jni/python/src/Misc/AIX-NOTES deleted file mode 100644 index 613d501d4..000000000 --- a/project/jni/python/src/Misc/AIX-NOTES +++ /dev/null @@ -1,155 +0,0 @@ -Subject: AIX - Misc/AIX-NOTES -From: Vladimir Marangozov -To: guido@CNRI.Reston.Va.US (Guido van Rossum) -Date: Wed, 6 Aug 1997 11:41:00 +0200 (EET) - -============================================================================== - COMPILER INFORMATION ------------------------------------------------------------------------------- - -(1) A problem has been reported with "make test" failing because of "weird - indentation." Searching the comp.lang.python newsgroup reveals several - threads on this subject, and it seems to be a compiler bug in an old - version of the AIX CC compiler. However, the compiler/OS combination - which has this problem is not identified. In preparation for the 1.4 - release, Vladimir Marangozov (Vladimir.Marangozov@imag.fr) and Manus Hand - (mhand@csn.net) reported no such troubles for the following compilers and - operating system versions: - AIX C compiler version 3.1.2 on AIX 4.1.3 and AIX 4.1.4 - AIX C compiler version 1.3.0 on AIX 3.2.5 - If you have this problem, please report the compiler/OS version. - -(2) Stefan Esser (se@MI.Uni-Koeln.DE), in work done to compile Python - 1.0.0 on AIX 3.2.4, reports that AIX compilers don't like the LANG - environment varaiable set to European locales. This makes the compiler - generate floating point constants using "," as the decimal seperator, - which the assembler doesn't understand (or perhaps it is the other way - around, with the assembler expecting, but not getting "," in float - numbers). "LANG=C; export LANG" solves the problem, as does - "LANG=C $(MAKE) ..." in the master Makefile. - -(3) The cc (or xlc) compiler considers "Python/ceval.c" too complex to - optimize, except when invoked with "-qmaxmem=4000" - -(4) Some problems (due to _AIX not being #defined) when python 1.0.0 was - compiled using 'gcc -ansi' were reported by Stefan Esser, but were not - investigated. - -(5) The cc compiler has internal variables named "__abs" and "__div". These - names are reserved and may not be used as program variables in compiled - source. (As an anecdote in support of this, the implementation of - Python/operator.c had this problem in the 1.4 beta releases, and the - solution was to re#define some core-source variables having these names, - to give these python variables different names if the build is being done - on AIX.) - -(6) As mentioned in the README, builds done immediately after previous builds - (without "make clean" or "make clobber") sometimes fail for mysterious - reasons. There are some unpredictable results when the configuration - is changed (that is, if you "configure" with different parameters) or if - intermediate changes are made to some files. Performing "make clean" or - "make clobber" resolves the problems. - -============================================================================== - THREAD SUPPORT ------------------------------------------------------------------------------- - -As of AIX version 4, there are two (incompatible) types of pthreads on AIX: - a) AIX DCE pthreads (on AIX 3.2.5) - b) AIX 4 pthreads (on AIX 4.1 and up) -Support has been added to Python to handle the distinction. - -The cc and gcc compilers do not initialize pthreads properly. The only -compilers that can initialize pthreads properly are IBM *_r* compilers, -which use the crt0_r.o module, and which invoke ld with the reentrant -version of libc (libc_r). - -In order to enable thread support, follow these steps: - 1. Uncomment the thread module in Modules/Setup - 2. configure --without-gcc --with-thread ... - 3. make CC="cc_r" OPT="-O -qmaxmem=4000" - -For example, to make with both threads and readline, use: - ./configure --without-gcc --with-thread --with-readline=/usr/local/lib - make CC=cc_r OPT="-O2 -qmaxmem=4000" - -If the "make" which is used ignores the "CC=cc_r" directive, one could alias -the cc command to cc_r (for example, in C-shell, perform an "alias cc cc_r"). - -Vladimir Marangozov (Vladimir.Marangozov@imag.fr) provided this information, -and he reports that a cc_r build initializes threads properly and that all -demos on threads run okay with cc_r. - -============================================================================== - SHARED LIBRARY SUPPORT ------------------------------------------------------------------------------- - -AIX shared library support was added to Python in the 1.4 release by Manus -Hand (mhand@csn.net) and Vladimir Marangozov (Vladimir.Marangozov@imag.fr). - -Python modules may now be built as shared libraries on AIX using the normal -process of uncommenting the "*shared*" line in Modules/Setup before the -build. - -AIX shared libraries require that an "export" and "import" file be provided -at compile time to list all extern symbols which may be shared between -modules. The "export" file (named python.exp) for the modules and the -libraries that belong to the Python core is created by the "makexp_aix" -script before performing the link of the python binary. It lists all global -symbols (exported during the link) of the modules and the libraries that -make up the python executable. - -When shared library modules (.so files) are made, a second shell script -is invoked. This script is named "ld_so_aix" and is also provided with -the distribution in the Modules subdirectory. This script acts as an "ld" -wrapper which hides the explicit management of "export" and "import" files; -it adds the appropriate arguments (in the appropriate order) to the link -command that creates the shared module. Among other things, it specifies -that the "python.exp" file is an "import" file for the shared module. - -At the time of this writing, neither the python.exp file nor the makexp_aix -or ld_so_aix scripts are installed by the make procedure, so you should -remember to keep these and/or copy them to a different location for -safekeeping if you wish to use them to add shared extension modules to -python. However, if the make process has been updated since this writing, -these files MAY have been installed for you during the make by the -LIBAINSTALL rule, in which case the need to make safe copies is obviated. - -If you wish to add a shared extension module to the language, you would follow -the steps given in the example below (the example adds the shared extension -module "spam" to python): - 1. Make sure that "ld_so_aix" and "makexp_aix" are in your path. - 2. The "python.exp" file should be in the current directory. - 3. Issue the following commands or include them in your Makefile: - cc -c spammodule.c - ld_so_aix cc spammodule.o -o spammodule.so - -For more detailed information on the shared library support, examine the -contents of the "ld_so_aix" and "makexp_aix" scripts or refer to the AIX -documentation. - -NOTE: If the extension module is written in C++ and contains templates, - an alternative to "ld_so_aix" is the /usr/lpp/xlC/bin/makeC++SharedLib - script. Chris Myers (myers@TC.Cornell.EDU) reports that ld_so_aix - works well for some C++ (including the C++ that is generated - automatically by the Python SWIG package [SWIG can be found at - http://www.cs.utah.edu/~beazley/SWIG/swig.html]). However, it is not - known whether makeC++SharedLib can be used as a complete substitute - for ld_so_aix. - -According to Gary Hook from IBM, the format of the export file changed -in AIX 4.2. For AIX 4.2 and later, a period "." is required on the -first line after "#!". If python crashes while importing a shared -library, you can try modifying the LINKCC variable in the Makefile. -It probably looks like this: - - LINKCC= $(srcdir)/Modules/makexp_aix Modules/python.exp \"\" $(LIBRARY); $(PURIFY) $(CXX) - -You should modify the \"\" to be a period: - - LINKCC= $(srcdir)/Modules/makexp_aix Modules/python.exp . $(LIBRARY); $(PURIFY) $(CXX) - -Using a period fixed the problem in the snake farm. YMMV. -This fix has been incorporated into Python 2.3. - -============================================================================== diff --git a/project/jni/python/src/Misc/BeOS-NOTES b/project/jni/python/src/Misc/BeOS-NOTES deleted file mode 100644 index afff837bc..000000000 --- a/project/jni/python/src/Misc/BeOS-NOTES +++ /dev/null @@ -1,43 +0,0 @@ -Python for BeOS R5 - -In Python-2.1, the standard version of the new setup.py program -will not build the full complement of modules on BeOS. Instead, -please replace it with the special BeOS version in Misc/BeOS-setup.py. - -To build, - - 1) cp Misc/BeOS-setup.py setup.py - 2) ./configure --prefix=/boot/home/config - 3) make - -The modules will all build, except termios which assumes some flags -we don't have. Put a libreadline.a in /boot/home/config/lib to get -a readline.so for your interactive editing convenience; NB, not -libreadline.so, you want to link a static readline library into the -dynamically loaded Python module. - -Test: - - make test - - The BeOS is Not UNIX category: - - test_select crashed -- select.error : (-2147459072, 'Bad file descriptor') - - test_socket crashed -- exceptions.AttributeError : SOCK_RAW - - test_fcntl crashed -- exceptions.IOError: [Errno -2147483643] Invalid argument - - This one is funny! BeOS does support large files, and that's why - we get this error: the file is too big for my filesystem! - - test_largefile crashed -- exceptions.IOError: [Errno -2147459065] - No space left on device - - - test_pickle crashed. This is apparently a serious problem, "complex" - number objects reconstructed from a pickle don't compare equal to - their ancestors. But it happens on BeOS PPC only, not Intel. - -Install: - - make install - - -Maintainer: None (please volunteer if you would like to see this port continue -to exist!) diff --git a/project/jni/python/src/Misc/BeOS-setup.py b/project/jni/python/src/Misc/BeOS-setup.py deleted file mode 100644 index 0043a341d..000000000 --- a/project/jni/python/src/Misc/BeOS-setup.py +++ /dev/null @@ -1,574 +0,0 @@ -# Autodetecting setup.py script for building the Python extensions -# -# Modified for BeOS build. Donn Cave, March 27 2001. - -__version__ = "special BeOS after 1.37" - -import sys, os -from distutils import sysconfig -from distutils import text_file -from distutils.errors import * -from distutils.core import Extension, setup -from distutils.command.build_ext import build_ext - -# This global variable is used to hold the list of modules to be disabled. -disabled_module_list = ['dbm', 'mmap', 'resource', 'nis'] - -def find_file(filename, std_dirs, paths): - """Searches for the directory where a given file is located, - and returns a possibly-empty list of additional directories, or None - if the file couldn't be found at all. - - 'filename' is the name of a file, such as readline.h or libcrypto.a. - 'std_dirs' is the list of standard system directories; if the - file is found in one of them, no additional directives are needed. - 'paths' is a list of additional locations to check; if the file is - found in one of them, the resulting list will contain the directory. - """ - - # Check the standard locations - for dir in std_dirs: - f = os.path.join(dir, filename) - if os.path.exists(f): return [] - - # Check the additional directories - for dir in paths: - f = os.path.join(dir, filename) - if os.path.exists(f): - return [dir] - - # Not found anywhere - return None - -def find_library_file(compiler, libname, std_dirs, paths): - filename = compiler.library_filename(libname, lib_type='shared') - result = find_file(filename, std_dirs, paths) - if result is not None: return result - - filename = compiler.library_filename(libname, lib_type='static') - result = find_file(filename, std_dirs, paths) - return result - -def module_enabled(extlist, modname): - """Returns whether the module 'modname' is present in the list - of extensions 'extlist'.""" - extlist = [ext for ext in extlist if ext.name == modname] - return len(extlist) - -class PyBuildExt(build_ext): - - def build_extensions(self): - - # Detect which modules should be compiled - self.detect_modules() - - # Remove modules that are present on the disabled list - self.extensions = [ext for ext in self.extensions - if ext.name not in disabled_module_list] - - # Fix up the autodetected modules, prefixing all the source files - # with Modules/ and adding Python's include directory to the path. - (srcdir,) = sysconfig.get_config_vars('srcdir') - - # Figure out the location of the source code for extension modules - moddir = os.path.join(os.getcwd(), srcdir, 'Modules') - moddir = os.path.normpath(moddir) - srcdir, tail = os.path.split(moddir) - srcdir = os.path.normpath(srcdir) - moddir = os.path.normpath(moddir) - - # Fix up the paths for scripts, too - self.distribution.scripts = [os.path.join(srcdir, filename) - for filename in self.distribution.scripts] - - for ext in self.extensions[:]: - ext.sources = [ os.path.join(moddir, filename) - for filename in ext.sources ] - ext.include_dirs.append( '.' ) # to get config.h - ext.include_dirs.append( os.path.join(srcdir, './Include') ) - - # If a module has already been built statically, - # don't build it here - if ext.name in sys.builtin_module_names: - self.extensions.remove(ext) - - # Parse Modules/Setup to figure out which modules are turned - # on in the file. - input = text_file.TextFile('Modules/Setup', join_lines=1) - remove_modules = [] - while 1: - line = input.readline() - if not line: break - line = line.split() - remove_modules.append( line[0] ) - input.close() - - for ext in self.extensions[:]: - if ext.name in remove_modules: - self.extensions.remove(ext) - - # When you run "make CC=altcc" or something similar, you really want - # those environment variables passed into the setup.py phase. Here's - # a small set of useful ones. - compiler = os.environ.get('CC') - linker_so = os.environ.get('LDSHARED') - args = {} - # unfortunately, distutils doesn't let us provide separate C and C++ - # compilers - if compiler is not None: - args['compiler_so'] = compiler - if linker_so is not None: - args['linker_so'] = linker_so + ' -shared' - self.compiler.set_executables(**args) - - build_ext.build_extensions(self) - - def build_extension(self, ext): - - try: - build_ext.build_extension(self, ext) - except (CCompilerError, DistutilsError), why: - self.announce('WARNING: building of extension "%s" failed: %s' % - (ext.name, sys.exc_info()[1])) - - def get_platform (self): - # Get value of sys.platform - platform = sys.platform - if platform[:6] =='cygwin': - platform = 'cygwin' - elif platform[:4] =='beos': - platform = 'beos' - - return platform - - def detect_modules(self): - try: - belibs = os.environ['BELIBRARIES'].split(';') - except KeyError: - belibs = ['/boot/beos/system/lib'] - belibs.append('/boot/home/config/lib') - self.compiler.library_dirs.append('/boot/home/config/lib') - try: - beincl = os.environ['BEINCLUDES'].split(';') - except KeyError: - beincl = [] - beincl.append('/boot/home/config/include') - self.compiler.include_dirs.append('/boot/home/config/include') - # lib_dirs and inc_dirs are used to search for files; - # if a file is found in one of those directories, it can - # be assumed that no additional -I,-L directives are needed. - lib_dirs = belibs - inc_dirs = beincl - exts = [] - - platform = self.get_platform() - - # Check for MacOS X, which doesn't need libm.a at all - math_libs = ['m'] - if platform in ['Darwin1.2', 'beos']: - math_libs = [] - - # XXX Omitted modules: gl, pure, dl, SGI-specific modules - - # - # The following modules are all pretty straightforward, and compile - # on pretty much any POSIXish platform. - # - - # Some modules that are normally always on: - exts.append( Extension('_weakref', ['_weakref.c']) ) - exts.append( Extension('_symtable', ['symtablemodule.c']) ) - - # array objects - exts.append( Extension('array', ['arraymodule.c']) ) - # complex math library functions - exts.append( Extension('cmath', ['cmathmodule.c'], - libraries=math_libs) ) - - # math library functions, e.g. sin() - exts.append( Extension('math', ['mathmodule.c'], - libraries=math_libs) ) - # fast string operations implemented in C - exts.append( Extension('strop', ['stropmodule.c']) ) - # time operations and variables - exts.append( Extension('time', ['timemodule.c'], - libraries=math_libs) ) - # operator.add() and similar goodies - exts.append( Extension('operator', ['operator.c']) ) - # access to the builtin codecs and codec registry - exts.append( Extension('_codecs', ['_codecsmodule.c']) ) - # Python C API test module - exts.append( Extension('_testcapi', ['_testcapimodule.c']) ) - # static Unicode character database - exts.append( Extension('unicodedata', ['unicodedata.c']) ) - # access to ISO C locale support - exts.append( Extension('_locale', ['_localemodule.c']) ) - - # Modules with some UNIX dependencies -- on by default: - # (If you have a really backward UNIX, select and socket may not be - # supported...) - - # fcntl(2) and ioctl(2) - exts.append( Extension('fcntl', ['fcntlmodule.c']) ) - # pwd(3) - exts.append( Extension('pwd', ['pwdmodule.c']) ) - # grp(3) - exts.append( Extension('grp', ['grpmodule.c']) ) - # posix (UNIX) errno values - exts.append( Extension('errno', ['errnomodule.c']) ) - # select(2); not on ancient System V - exts.append( Extension('select', ['selectmodule.c']) ) - - # The md5 module implements the RSA Data Security, Inc. MD5 - # Message-Digest Algorithm, described in RFC 1321. The necessary files - # md5c.c and md5.h are included here. - exts.append( Extension('md5', ['md5module.c', 'md5c.c']) ) - - # The sha module implements the SHA checksum algorithm. - # (NIST's Secure Hash Algorithm.) - exts.append( Extension('sha', ['shamodule.c']) ) - - # Helper module for various ascii-encoders - exts.append( Extension('binascii', ['binascii.c']) ) - - # Fred Drake's interface to the Python parser - exts.append( Extension('parser', ['parsermodule.c']) ) - - # cStringIO and cPickle - exts.append( Extension('cStringIO', ['cStringIO.c']) ) - exts.append( Extension('cPickle', ['cPickle.c']) ) - - # Memory-mapped files (also works on Win32). - exts.append( Extension('mmap', ['mmapmodule.c']) ) - - # Lance Ellinghaus's syslog daemon interface - exts.append( Extension('syslog', ['syslogmodule.c']) ) - - # George Neville-Neil's timing module: - exts.append( Extension('timing', ['timingmodule.c']) ) - - # - # Here ends the simple stuff. From here on, modules need certain - # libraries, are platform-specific, or present other surprises. - # - - # Multimedia modules - # These don't work for 64-bit platforms!!! - # These represent audio samples or images as strings: - - # Disabled on 64-bit platforms - if sys.maxint != 9223372036854775807L: - # Operations on audio samples - exts.append( Extension('audioop', ['audioop.c']) ) - # Operations on images - exts.append( Extension('imageop', ['imageop.c']) ) - # Read SGI RGB image files (but coded portably) - exts.append( Extension('rgbimg', ['rgbimgmodule.c']) ) - - # readline - if self.compiler.find_library_file(lib_dirs, 'readline'): - readline_libs = ['readline'] - if self.compiler.find_library_file(lib_dirs + - ['/usr/lib/termcap'], - 'termcap'): - readline_libs.append('termcap') - exts.append( Extension('readline', ['readline.c'], - library_dirs=['/usr/lib/termcap'], - libraries=readline_libs) ) - - # The crypt module is now disabled by default because it breaks builds - # on many systems (where -lcrypt is needed), e.g. Linux (I believe). - - if self.compiler.find_library_file(lib_dirs, 'crypt'): - libs = ['crypt'] - else: - libs = [] - exts.append( Extension('crypt', ['cryptmodule.c'], libraries=libs) ) - - # socket(2) - # Detect SSL support for the socket module - ssl_incs = find_file('openssl/ssl.h', inc_dirs, - ['/usr/local/ssl/include', - '/usr/contrib/ssl/include/' - ] - ) - ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs, - ['/usr/local/ssl/lib', - '/usr/contrib/ssl/lib/' - ] ) - - if (ssl_incs is not None and - ssl_libs is not None): - exts.append( Extension('_socket', ['socketmodule.c'], - include_dirs = ssl_incs, - library_dirs = ssl_libs, - libraries = ['ssl', 'crypto'], - define_macros = [('USE_SSL',1)] ) ) - else: - exts.append( Extension('_socket', ['socketmodule.c']) ) - - # Modules that provide persistent dictionary-like semantics. You will - # probably want to arrange for at least one of them to be available on - # your machine, though none are defined by default because of library - # dependencies. The Python module anydbm.py provides an - # implementation independent wrapper for these; dumbdbm.py provides - # similar functionality (but slower of course) implemented in Python. - - # The standard Unix dbm module: - if platform not in ['cygwin']: - if (self.compiler.find_library_file(lib_dirs, 'ndbm')): - exts.append( Extension('dbm', ['dbmmodule.c'], - libraries = ['ndbm'] ) ) - else: - exts.append( Extension('dbm', ['dbmmodule.c']) ) - - # Anthony Baxter's gdbm module. GNU dbm(3) will require -lgdbm: - if (self.compiler.find_library_file(lib_dirs, 'gdbm')): - exts.append( Extension('gdbm', ['gdbmmodule.c'], - libraries = ['gdbm'] ) ) - - # Berkeley DB interface. - # - # This requires the Berkeley DB code, see - # ftp://ftp.cs.berkeley.edu/pub/4bsd/db.1.85.tar.gz - # - # Edit the variables DB and DBPORT to point to the db top directory - # and the subdirectory of PORT where you built it. - # - # (See http://electricrain.com/greg/python/bsddb3/ for an interface to - # BSD DB 3.x.) - - dblib = [] - if self.compiler.find_library_file(lib_dirs, 'db'): - dblib = ['db'] - - db185_incs = find_file('db_185.h', inc_dirs, - ['/usr/include/db3', '/usr/include/db2']) - db_inc = find_file('db.h', inc_dirs, ['/usr/include/db1']) - if db185_incs is not None: - exts.append( Extension('bsddb', ['bsddbmodule.c'], - include_dirs = db185_incs, - define_macros=[('HAVE_DB_185_H',1)], - libraries = dblib ) ) - elif db_inc is not None: - exts.append( Extension('bsddb', ['bsddbmodule.c'], - include_dirs = db_inc, - libraries = dblib) ) - - # Unix-only modules - if platform not in ['mac', 'win32']: - # Steen Lumholt's termios module - exts.append( Extension('termios', ['termios.c']) ) - # Jeremy Hylton's rlimit interface - if platform not in ['cygwin']: - exts.append( Extension('resource', ['resource.c']) ) - - # Generic dynamic loading module - #exts.append( Extension('dl', ['dlmodule.c']) ) - - # Sun yellow pages. Some systems have the functions in libc. - if platform not in ['cygwin']: - if (self.compiler.find_library_file(lib_dirs, 'nsl')): - libs = ['nsl'] - else: - libs = [] - exts.append( Extension('nis', ['nismodule.c'], - libraries = libs) ) - - # Curses support, requring the System V version of curses, often - # provided by the ncurses library. - if (self.compiler.find_library_file(lib_dirs, 'ncurses')): - curses_libs = ['ncurses'] - exts.append( Extension('_curses', ['_cursesmodule.c'], - libraries = curses_libs) ) - elif (self.compiler.find_library_file(lib_dirs, 'curses')): - if (self.compiler.find_library_file(lib_dirs, 'terminfo')): - curses_libs = ['curses', 'terminfo'] - else: - curses_libs = ['curses', 'termcap'] - - exts.append( Extension('_curses', ['_cursesmodule.c'], - libraries = curses_libs) ) - - # If the curses module is enabled, check for the panel module - if (os.path.exists('Modules/_curses_panel.c') and - module_enabled(exts, '_curses') and - self.compiler.find_library_file(lib_dirs, 'panel')): - exts.append( Extension('_curses_panel', ['_curses_panel.c'], - libraries = ['panel'] + curses_libs) ) - - - - # Lee Busby's SIGFPE modules. - # The library to link fpectl with is platform specific. - # Choose *one* of the options below for fpectl: - - if platform == 'irix5': - # For SGI IRIX (tested on 5.3): - exts.append( Extension('fpectl', ['fpectlmodule.c'], - libraries=['fpe']) ) - elif 0: # XXX how to detect SunPro? - # For Solaris with SunPro compiler (tested on Solaris 2.5 with SunPro C 4.2): - # (Without the compiler you don't have -lsunmath.) - #fpectl fpectlmodule.c -R/opt/SUNWspro/lib -lsunmath -lm - pass - else: - # For other systems: see instructions in fpectlmodule.c. - #fpectl fpectlmodule.c ... - exts.append( Extension('fpectl', ['fpectlmodule.c']) ) - - - # Andrew Kuchling's zlib module. - # This require zlib 1.1.3 (or later). - # See http://www.gzip.org/zlib/ - if (self.compiler.find_library_file(lib_dirs, 'z')): - exts.append( Extension('zlib', ['zlibmodule.c'], - libraries = ['z']) ) - - # Interface to the Expat XML parser - # - # Expat is written by James Clark and must be downloaded separately - # (see below). The pyexpat module was written by Paul Prescod after a - # prototype by Jack Jansen. - # - # The Expat dist includes Windows .lib and .dll files. Home page is - # at http://www.jclark.com/xml/expat.html, the current production - # release is always ftp://ftp.jclark.com/pub/xml/expat.zip. - # - # EXPAT_DIR, below, should point to the expat/ directory created by - # unpacking the Expat source distribution. - # - # Note: the expat build process doesn't yet build a libexpat.a; you - # can do this manually while we try convince the author to add it. To - # do so, cd to EXPAT_DIR, run "make" if you have not done so, then - # run: - # - # ar cr libexpat.a xmltok/*.o xmlparse/*.o - # - expat_defs = [] - expat_incs = find_file('expat.h', inc_dirs, []) - if expat_incs is not None: - # expat.h was found - expat_defs = [('HAVE_EXPAT_H', 1)] - else: - expat_incs = find_file('xmlparse.h', inc_dirs, []) - - if (expat_incs is not None and - self.compiler.find_library_file(lib_dirs, 'expat')): - exts.append( Extension('pyexpat', ['pyexpat.c'], - define_macros = expat_defs, - libraries = ['expat']) ) - - # Platform-specific libraries - if platform == 'linux2': - # Linux-specific modules - exts.append( Extension('linuxaudiodev', ['linuxaudiodev.c']) ) - - if platform == 'sunos5': - # SunOS specific modules - exts.append( Extension('sunaudiodev', ['sunaudiodev.c']) ) - - self.extensions.extend(exts) - - # Call the method for detecting whether _tkinter can be compiled - self.detect_tkinter(inc_dirs, lib_dirs) - - - def detect_tkinter(self, inc_dirs, lib_dirs): - # The _tkinter module. - - # Assume we haven't found any of the libraries or include files - tcllib = tklib = tcl_includes = tk_includes = None - for version in ['8.4', '8.3', '8.2', '8.1', '8.0']: - tklib = self.compiler.find_library_file(lib_dirs, - 'tk' + version ) - tcllib = self.compiler.find_library_file(lib_dirs, - 'tcl' + version ) - if tklib and tcllib: - # Exit the loop when we've found the Tcl/Tk libraries - break - - # Now check for the header files - if tklib and tcllib: - # Check for the include files on Debian, where - # they're put in /usr/include/{tcl,tk}X.Y - debian_tcl_include = [ '/usr/include/tcl' + version ] - debian_tk_include = [ '/usr/include/tk' + version ] + debian_tcl_include - tcl_includes = find_file('tcl.h', inc_dirs, debian_tcl_include) - tk_includes = find_file('tk.h', inc_dirs, debian_tk_include) - - if (tcllib is None or tklib is None and - tcl_includes is None or tk_includes is None): - # Something's missing, so give up - return - - # OK... everything seems to be present for Tcl/Tk. - - include_dirs = [] ; libs = [] ; defs = [] ; added_lib_dirs = [] - for dir in tcl_includes + tk_includes: - if dir not in include_dirs: - include_dirs.append(dir) - - # Check for various platform-specific directories - platform = self.get_platform() - if platform == 'sunos5': - include_dirs.append('/usr/openwin/include') - added_lib_dirs.append('/usr/openwin/lib') - elif os.path.exists('/usr/X11R6/include'): - include_dirs.append('/usr/X11R6/include') - added_lib_dirs.append('/usr/X11R6/lib') - elif os.path.exists('/usr/X11R5/include'): - include_dirs.append('/usr/X11R5/include') - added_lib_dirs.append('/usr/X11R5/lib') - else: - # Assume default location for X11 - include_dirs.append('/usr/X11/include') - added_lib_dirs.append('/usr/X11/lib') - - # Check for BLT extension - if self.compiler.find_library_file(lib_dirs + added_lib_dirs, 'BLT8.0'): - defs.append( ('WITH_BLT', 1) ) - libs.append('BLT8.0') - - # Add the Tcl/Tk libraries - libs.append('tk'+version) - libs.append('tcl'+version) - - if platform in ['aix3', 'aix4']: - libs.append('ld') - - # Finally, link with the X11 libraries - libs.append('X11') - - ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'], - define_macros=[('WITH_APPINIT', 1)] + defs, - include_dirs = include_dirs, - libraries = libs, - library_dirs = added_lib_dirs, - ) - self.extensions.append(ext) - - # XXX handle these, but how to detect? - # *** Uncomment and edit for PIL (TkImaging) extension only: - # -DWITH_PIL -I../Extensions/Imaging/libImaging tkImaging.c \ - # *** Uncomment and edit for TOGL extension only: - # -DWITH_TOGL togl.c \ - # *** Uncomment these for TOGL extension only: - # -lGL -lGLU -lXext -lXmu \ - -def main(): - setup(name = 'Python standard library', - version = '%d.%d' % sys.version_info[:2], - cmdclass = {'build_ext':PyBuildExt}, - # The struct module is defined here, because build_ext won't be - # called unless there's at least one extension module defined. - ext_modules=[Extension('struct', ['structmodule.c'])], - - # Scripts to install - scripts = ['Tools/scripts/pydoc'] - ) - -# --install-platlib -if __name__ == '__main__': - sysconfig.set_python_build() - main() diff --git a/project/jni/python/src/Misc/HISTORY b/project/jni/python/src/Misc/HISTORY deleted file mode 100644 index 33c0a4b0f..000000000 --- a/project/jni/python/src/Misc/HISTORY +++ /dev/null @@ -1,17442 +0,0 @@ -Python History --------------- - -This file contains the release messages for previous Python releases. -As you read on you go back to the dark ages of Python's history. -(Note: news about 2.5c2 and later 2.5 releases is in the Misc/NEWS -file of the release25-maint branch.) - - -====================================================================== - - -What's New in Python 2.5 release candidate 1? -============================================= - -*Release date: 17-AUG-2006* - -Core and builtins ------------------ - -- Unicode objects will no longer raise an exception when being - compared equal or unequal to a string and a UnicodeDecodeError - exception occurs, e.g. as result of a decoding failure. - - Instead, the equal (==) and unequal (!=) comparison operators will - now issue a UnicodeWarning and interpret the two objects as - unequal. The UnicodeWarning can be filtered as desired using - the warning framework, e.g. silenced completely, turned into an - exception, logged, etc. - - Note that compare operators other than equal and unequal will still - raise UnicodeDecodeError exceptions as they've always done. - -- Fix segfault when doing string formatting on subclasses of long. - -- Fix bug related to __len__ functions using values > 2**32 on 64-bit machines - with new-style classes. - -- Fix bug related to __len__ functions returning negative values with - classic classes. - -- Patch #1538606, Fix __index__() clipping. There were some problems - discovered with the API and how integers that didn't fit into Py_ssize_t - were handled. This patch attempts to provide enough alternatives - to effectively use __index__. - -- Bug #1536021: __hash__ may now return long int; the final hash - value is obtained by invoking hash on the long int. - -- Bug #1536786: buffer comparison could emit a RuntimeWarning. - -- Bug #1535165: fixed a segfault in input() and raw_input() when - sys.stdin is closed. - -- On Windows, the PyErr_Warn function is now exported from - the Python dll again. - -- Bug #1191458: tracing over for loops now produces a line event - on each iteration. Fixing this problem required changing the .pyc - magic number. This means that .pyc files generated before 2.5c1 - will be regenerated. - -- Bug #1333982: string/number constants were inappropriately stored - in the byte code and co_consts even if they were not used, ie - immediately popped off the stack. - -- Fixed a reference-counting problem in property(). - - -Library -------- - -- Fix a bug in the ``compiler`` package that caused invalid code to be - generated for generator expressions. - -- The distutils version has been changed to 2.5.0. The change to - keep it programmatically in sync with the Python version running - the code (introduced in 2.5b3) has been reverted. It will continue - to be maintained manually as static string literal. - -- If the Python part of a ctypes callback function returns None, - and this cannot be converted to the required C type, an exception is - printed with PyErr_WriteUnraisable. Before this change, the C - callback returned arbitrary values to the calling code. - -- The __repr__ method of a NULL ctypes.py_object() no longer raises - an exception. - -- uuid.UUID now has a bytes_le attribute. This returns the UUID in - little-endian byte order for Windows. In addition, uuid.py gained some - workarounds for clocks with low resolution, to stop the code yielding - duplicate UUIDs. - -- Patch #1540892: site.py Quitter() class attempts to close sys.stdin - before raising SystemExit, allowing IDLE to honor quit() and exit(). - -- Bug #1224621: make tabnanny recognize IndentationErrors raised by tokenize. - -- Patch #1536071: trace.py should now find the full module name of a - file correctly even on Windows. - -- logging's atexit hook now runs even if the rest of the module has - already been cleaned up. - -- Bug #1112549, fix DoS attack on cgi.FieldStorage. - -- Bug #1531405, format_exception no longer raises an exception if - str(exception) raised an exception. - -- Fix a bug in the ``compiler`` package that caused invalid code to be - generated for nested functions. - - -Extension Modules ------------------ - -- Patch #1511317: don't crash on invalid hostname (alias) info. - -- Patch #1535500: fix segfault in BZ2File.writelines and make sure it - raises the correct exceptions. - -- Patch # 1536908: enable building ctypes on OpenBSD/AMD64. The - '-no-stack-protector' compiler flag for OpenBSD has been removed. - -- Patch #1532975 was applied, which fixes Bug #1533481: ctypes now - uses the _as_parameter_ attribute when objects are passed to foreign - function calls. The ctypes version number was changed to 1.0.1. - -- Bug #1530559, struct.pack raises TypeError where it used to convert. - Passing float arguments to struct.pack when integers are expected - now triggers a DeprecationWarning. - - -Tests ------ - -- test_socketserver should now work on cygwin and not fail sporadically - on other platforms. - -- test_mailbox should now work on cygwin versions 2006-08-10 and later. - -- Bug #1535182: really test the xreadlines() method of bz2 objects. - -- test_threading now skips testing alternate thread stack sizes on - platforms that don't support changing thread stack size. - - -Documentation -------------- - -- Patch #1534922: unittest docs were corrected and enhanced. - - -Build ------ - -- Bug #1535502, build _hashlib on Windows, and use masm assembler - code in OpenSSL. - -- Bug #1534738, win32 debug version of _msi should be _msi_d.pyd. - -- Bug #1530448, ctypes build failure on Solaris 10 was fixed. - - -C API ------ - -- New API for Unicode rich comparisons: PyUnicode_RichCompare() - -- Bug #1069160. Internal correctness changes were made to - ``PyThreadState_SetAsyncExc()``. A test case was added, and - the documentation was changed to state that the return value - is always 1 (normal) or 0 (if the specified thread wasn't found). - - -What's New in Python 2.5 beta 3? -================================ - -*Release date: 03-AUG-2006* - -Core and builtins ------------------ - -- _PyWeakref_GetWeakrefCount() now returns a Py_ssize_t; it previously - returned a long (see PEP 353). - -- Bug #1515471: string.replace() accepts character buffers again. - -- Add PyErr_WarnEx() so C code can pass the stacklevel to warnings.warn(). - This provides the proper warning for struct.pack(). - PyErr_Warn() is now deprecated in favor of PyErr_WarnEx(). - -- Patch #1531113: Fix augmented assignment with yield expressions. - Also fix a SystemError when trying to assign to yield expressions. - -- Bug #1529871: The speed enhancement patch #921466 broke Python's compliance - with PEP 302. This was fixed by adding an ``imp.NullImporter`` type that is - used in ``sys.path_importer_cache`` to cache non-directory paths and avoid - excessive filesystem operations during imports. - -- Bug #1521947: When checking for overflow, ``PyOS_strtol()`` used some - operations on signed longs that are formally undefined by C. - Unfortunately, at least one compiler now cares about that, so complicated - the code to make that compiler happy again. - -- Bug #1524310: Properly report errors from FindNextFile in os.listdir. - -- Patch #1232023: Stop including current directory in search - path on Windows. - -- Fix some potential crashes found with failmalloc. - -- Fix warnings reported by Klocwork's static analysis tool. - -- Bug #1512814, Fix incorrect lineno's when code within a function - had more than 255 blank lines. - -- Patch #1521179: Python now accepts the standard options ``--help`` and - ``--version`` as well as ``/?`` on Windows. - -- Bug #1520864: unpacking singleton tuples in a 'for' loop (for x, in) works - again. Fixing this problem required changing the .pyc magic number. - This means that .pyc files generated before 2.5b3 will be regenerated. - -- Bug #1524317: Compiling Python ``--without-threads`` failed. - The Python core compiles again, and, in a build without threads, the - new ``sys._current_frames()`` returns a dictionary with one entry, - mapping the faux "thread id" 0 to the current frame. - -- Bug #1525447: build on MacOS X on a case-sensitive filesystem. - - -Library -------- - -- Fix #1693149. Now you can pass several modules separated by - comma to trace.py in the same --ignore-module option. - -- Correction of patch #1455898: In the mbcs decoder, set final=False - for stream decoder, but final=True for the decode function. - -- os.urandom no longer masks unrelated exceptions like SystemExit or - KeyboardInterrupt. - -- Bug #1525866: Don't copy directory stat times in - shutil.copytree on Windows - -- Bug #1002398: The documentation for os.path.sameopenfile now correctly - refers to file descriptors, not file objects. - -- The renaming of the xml package to xmlcore, and the import hackery done - to make it appear at both names, has been removed. Bug #1511497, - #1513611, and probably others. - -- Bug #1441397: The compiler module now recognizes module and function - docstrings correctly as it did in Python 2.4. - -- Bug #1529297: The rewrite of doctest for Python 2.4 unintentionally - lost that tests are sorted by name before being run. This rarely - matters for well-written tests, but can create baffling symptoms if - side effects from one test to the next affect outcomes. ``DocTestFinder`` - has been changed to sort the list of tests it returns. - -- The distutils version has been changed to 2.5.0, and is now kept - in sync with sys.version_info[:3]. - -- Bug #978833: Really close underlying socket in _socketobject.close. - -- Bug #1459963: urllib and urllib2 now normalize HTTP header names with - title(). - -- Patch #1525766: In pkgutil.walk_packages, correctly pass the onerror callback - to recursive calls and call it with the failing package name. - -- Bug #1525817: Don't truncate short lines in IDLE's tool tips. - -- Patch #1515343: Fix printing of deprecated string exceptions with a - value in the traceback module. - -- Resync optparse with Optik 1.5.3: minor tweaks for/to tests. - -- Patch #1524429: Use repr() instead of backticks in Tkinter again. - -- Bug #1520914: Change time.strftime() to accept a zero for any position in its - argument tuple. For arguments where zero is illegal, the value is forced to - the minimum value that is correct. This is to support an undocumented but - common way people used to fill in inconsequential information in the time - tuple pre-2.4. - -- Patch #1220874: Update the binhex module for Mach-O. - -- The email package has improved RFC 2231 support, specifically for - recognizing the difference between encoded (name*0*=) and non-encoded - (name*0=) parameter continuations. This may change the types of - values returned from email.message.Message.get_param() and friends. - Specifically in some cases where non-encoded continuations were used, - get_param() used to return a 3-tuple of (None, None, string) whereas now it - will just return the string (since non-encoded continuations don't have - charset and language parts). - - Also, whereas % values were decoded in all parameter continuations, they are - now only decoded in encoded parameter parts. - -- Bug #1517990: IDLE keybindings on MacOS X now work correctly - -- Bug #1517996: IDLE now longer shows the default Tk menu when a - path browser, class browser or debugger is the frontmost window on MacOS X - -- Patch #1520294: Support for getset and member descriptors in types.py, - inspect.py, and pydoc.py. Specifically, this allows for querying the type - of an object against these built-in types and more importantly, for getting - their docstrings printed in the interactive interpreter's help() function. - - -Extension Modules ------------------ - -- Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during - a socket operation on a socket with a timeout, the exception will be - caught correctly. Previously, the exception was not caught. - -- Patch #1529514: The _ctypes extension is now compiled on more - openbsd target platforms. - -- The ``__reduce__()`` method of the new ``collections.defaultdict`` had - a memory leak, affecting pickles and deep copies. - -- Bug #1471938: Fix curses module build problem on Solaris 8; patch by - Paul Eggert. - -- Patch #1448199: Release interpreter lock in _winreg.ConnectRegistry. - -- Patch #1521817: Index range checking on ctypes arrays containing - exactly one element enabled again. This allows iterating over these - arrays, without the need to check the array size before. - -- Bug #1521375: When the code in ctypes.util.find_library was - run with root privileges, it could overwrite or delete - /dev/null in certain cases; this is now fixed. - -- Bug #1467450: On Mac OS X 10.3, RTLD_GLOBAL is now used as the - default mode for loading shared libraries in ctypes. - -- Because of a misspelled preprocessor symbol, ctypes was always - compiled without thread support; this is now fixed. - -- pybsddb Bug #1527939: bsddb module DBEnv dbremove and dbrename - methods now allow their database parameter to be None as the - sleepycat API allows. - -- Bug #1526460: Fix socketmodule compile on NetBSD as it has a different - bluetooth API compared with Linux and FreeBSD. - -Tests ------ - -- Bug #1501330: Change test_ossaudiodev to be much more tolerant in terms of - how long the test file should take to play. Now accepts taking 2.93 secs - (exact time) +/- 10% instead of the hard-coded 3.1 sec. - -- Patch #1529686: The standard tests ``test_defaultdict``, ``test_iterlen``, - ``test_uuid`` and ``test_email_codecs`` didn't actually run any tests when - run via ``regrtest.py``. Now they do. - -Build ------ - -- Bug #1439538: Drop usage of test -e in configure as it is not portable. - -Mac ---- - -- PythonLauncher now works correctly when the path to the script contains - characters that are treated specially by the shell (such as quotes). - -- Bug #1527397: PythonLauncher now launches scripts with the working directory - set to the directory that contains the script instead of the user home - directory. That latter was an implementation accident and not what users - expect. - - -What's New in Python 2.5 beta 2? -================================ - -*Release date: 11-JUL-2006* - -Core and builtins ------------------ - -- Bug #1441486: The literal representation of -(sys.maxint - 1) - again evaluates to a int object, not a long. - -- Bug #1501934: The scope of global variables that are locally assigned - using augmented assignment is now correctly determined. - -- Bug #927248: Recursive method-wrapper objects can now safely - be released. - -- Bug #1417699: Reject locale-specific decimal point in float() - and atof(). - -- Bug #1511381: codec_getstreamcodec() in codec.c is corrected to - omit a default "error" argument for NULL pointer. This allows - the parser to take a codec from cjkcodecs again. - -- Bug #1519018: 'as' is now validated properly in import statements. - -- On 64 bit systems, int literals that use less than 64 bits are - now ints rather than longs. - -- Bug #1512814, Fix incorrect lineno's when code at module scope - started after line 256. - -- New function ``sys._current_frames()`` returns a dict mapping thread - id to topmost thread stack frame. This is for expert use, and is - especially useful for debugging application deadlocks. The functionality - was previously available in Fazal Majid's ``threadframe`` extension - module, but it wasn't possible to do this in a wholly threadsafe way from - an extension. - -Library -------- - -- Bug #1257728: Mention Cygwin in distutils error message about a missing - VS 2003. - -- Patch #1519566: Update turtle demo, make begin_fill idempotent. - -- Bug #1508010: msvccompiler now requires the DISTUTILS_USE_SDK - environment variable to be set in order to the SDK environment - for finding the compiler, include files, etc. - -- Bug #1515998: Properly generate logical ids for files in bdist_msi. - -- warnings.py now ignores ImportWarning by default - -- string.Template() now correctly handles tuple-values. Previously, - multi-value tuples would raise an exception and single-value tuples would - be treated as the value they contain, instead. - -- Bug #822974: Honor timeout in telnetlib.{expect,read_until} - even if some data are received. - -- Bug #1267547: Put proper recursive setup.py call into the - spec file generated by bdist_rpm. - -- Bug #1514693: Update turtle's heading when switching between - degrees and radians. - -- Reimplement turtle.circle using a polyline, to allow correct - filling of arcs. - -- Bug #1514703: Only setup canvas window in turtle when the canvas - is created. - -- Bug #1513223: .close() of a _socketobj now releases the underlying - socket again, which then gets closed as it becomes unreferenced. - -- Bug #1504333: Make sgmllib support angle brackets in quoted - attribute values. - -- Bug #853506: Fix IPv6 address parsing in unquoted attributes in - sgmllib ('[' and ']' were not accepted). - -- Fix a bug in the turtle module's end_fill function. - -- Bug #1510580: The 'warnings' module improperly required that a Warning - category be either a types.ClassType and a subclass of Warning. The proper - check is just that it is a subclass with Warning as the documentation states. - -- The compiler module now correctly compiles the new try-except-finally - statement (bug #1509132). - -- The wsgiref package is now installed properly on Unix. - -- A bug was fixed in logging.config.fileConfig() which caused a crash on - shutdown when fileConfig() was called multiple times. - -- The sqlite3 module did cut off data from the SQLite database at the first - null character before sending it to a custom converter. This has been fixed - now. - -Extension Modules ------------------ - -- #1494314: Fix a regression with high-numbered sockets in 2.4.3. This - means that select() on sockets > FD_SETSIZE (typically 1024) work again. - The patch makes sockets use poll() internally where available. - -- Assigning None to pointer type fields in ctypes structures possible - overwrote the wrong fields, this is fixed now. - -- Fixed a segfault in _ctypes when ctypes.wintypes were imported - on non-Windows platforms. - -- Bug #1518190: The ctypes.c_void_p constructor now accepts any - integer or long, without range checking. - -- Patch #1517790: It is now possible to use custom objects in the ctypes - foreign function argtypes sequence as long as they provide a from_param - method, no longer is it required that the object is a ctypes type. - -- The '_ctypes' extension module now works when Python is configured - with the --without-threads option. - -- Bug #1513646: os.access on Windows now correctly determines write - access, again. - -- Bug #1512695: cPickle.loads could crash if it was interrupted with - a KeyboardInterrupt. - -- Bug #1296433: parsing XML with a non-default encoding and - a CharacterDataHandler could crash the interpreter in pyexpat. - -- Patch #1516912: improve Modules support for OpenVMS. - -Build ------ - -- Automate Windows build process for the Win64 SSL module. - -- 'configure' now detects the zlib library the same way as distutils. - Previously, the slight difference could cause compilation errors of the - 'zlib' module on systems with more than one version of zlib. - -- The MSI compileall step was fixed to also support a TARGETDIR - with spaces in it. - -- Bug #1517388: sqlite3.dll is now installed on Windows independent - of Tcl/Tk. - -- Bug #1513032: 'make install' failed on FreeBSD 5.3 due to lib-old - trying to be installed even though it's empty. - -Tests ------ - -- Call os.waitpid() at the end of tests that spawn child processes in order - to minimize resources (zombies). - -Documentation -------------- - -- Cover ImportWarning, PendingDeprecationWarning and simplefilter() in the - documentation for the warnings module. - -- Patch #1509163: MS Toolkit Compiler no longer available. - -- Patch #1504046: Add documentation for xml.etree. - - -What's New in Python 2.5 beta 1? -================================ - -*Release date: 20-JUN-2006* - -Core and builtins ------------------ - -- Patch #1507676: Error messages returned by invalid abstract object operations - (such as iterating over an integer) have been improved and now include the - type of the offending object to help with debugging. - -- Bug #992017: A classic class that defined a __coerce__() method that returned - its arguments swapped would infinitely recurse and segfault the interpreter. - -- Fix the socket tests so they can be run concurrently. - -- Removed 5 integers from C frame objects (PyFrameObject). - f_nlocals, f_ncells, f_nfreevars, f_stack_size, f_restricted. - -- Bug #532646: object.__call__() will continue looking for the __call__ - attribute on objects until one without one is found. This leads to recursion - when you take a class and set its __call__ attribute to an instance of the - class. Originally fixed for classic classes, but this fix is for new-style. - Removes the infinite_rec_3 crasher. - -- The string and unicode methods startswith() and endswith() now accept - a tuple of prefixes/suffixes to look for. Implements RFE #1491485. - -- Buffer objects, at the C level, never used the char buffer - implementation even when the char buffer for the wrapped object was - explicitly requested (originally returned the read or write buffer). - Now a TypeError is raised if the char buffer is not present but is - requested. - -- Patch #1346214: Statements like "if 0: suite" are now again optimized - away like they were in Python 2.4. - -- Builtin exceptions are now full-blown new-style classes instead of - instances pretending to be classes, which speeds up exception handling - by about 80% in comparison to 2.5a2. - -- Patch #1494554: Update unicodedata.numeric and unicode.isnumeric to - Unicode 4.1. - -- Patch #921466: sys.path_importer_cache is now used to cache valid and - invalid file paths for the built-in import machinery which leads to - fewer open calls on startup. - -- Patch #1442927: ``long(str, base)`` is now up to 6x faster for non-power- - of-2 bases. The largest speedup is for inputs with about 1000 decimal - digits. Conversion from non-power-of-2 bases remains quadratic-time in - the number of input digits (it was and remains linear-time for bases - 2, 4, 8, 16 and 32). - -- Bug #1334662: ``int(string, base)`` could deliver a wrong answer - when ``base`` was not 2, 4, 8, 10, 16 or 32, and ``string`` represented - an integer close to ``sys.maxint``. This was repaired by patch - #1335972, which also gives a nice speedup. - -- Patch #1337051: reduced size of frame objects. - -- PyErr_NewException now accepts a tuple of base classes as its - "base" parameter. - -- Patch #876206: function call speedup by retaining allocated frame - objects. - -- Bug #1462152: file() now checks more thoroughly for invalid mode - strings and removes a possible "U" before passing the mode to the - C library function. - -- Patch #1488312, Fix memory alignment problem on SPARC in unicode - -- Bug #1487966: Fix SystemError with conditional expression in assignment - -- WindowsError now has two error code attributes: errno, which carries - the error values from errno.h, and winerror, which carries the error - values from winerror.h. Previous versions put the winerror.h values - (from GetLastError()) into the errno attribute. - -- Patch #1475845: Raise IndentationError for unexpected indent. - -- Patch #1479181: split open() and file() from being aliases for each other. - -- Patch #1497053 & bug #1275608: Exceptions occurring in ``__eq__()`` - methods were always silently ignored by dictionaries when comparing keys. - They are now passed through (except when using the C API function - ``PyDict_GetItem()``, whose semantics did not change). - -- Bug #1456209: In some obscure cases it was possible for a class with a - custom ``__eq__()`` method to confuse dict internals when class instances - were used as a dict's keys and the ``__eq__()`` method mutated the dict. - No, you don't have any code that did this ;-) - -Extension Modules ------------------ - -- Bug #1295808: expat symbols should be namespaced in pyexpat - -- Patch #1462338: Upgrade pyexpat to expat 2.0.0 - -- Change binascii.hexlify to accept a read-only buffer instead of only a char - buffer and actually follow its documentation. - -- Fixed a potentially invalid memory access of CJKCodecs' shift-jis decoder. - -- Patch #1478788 (modified version): The functional extension module has - been renamed to _functools and a functools Python wrapper module added. - This provides a home for additional function related utilities that are - not specifically about functional programming. See PEP 309. - -- Patch #1493701: performance enhancements for struct module. - -- Patch #1490224: time.altzone is now set correctly on Cygwin. - -- Patch #1435422: zlib's compress and decompress objects now have a - copy() method. - -- Patch #1454481: thread stack size is now tunable at runtime for thread - enabled builds on Windows and systems with Posix threads support. - -- On Win32, os.listdir now supports arbitrarily-long Unicode path names - (up to the system limit of 32K characters). - -- Use Win32 API to implement os.{access,chdir,chmod,mkdir,remove,rename,rmdir,utime}. - As a result, these functions now raise WindowsError instead of OSError. - -- ``time.clock()`` on Win64 should use the high-performance Windows - ``QueryPerformanceCounter()`` now (as was already the case on 32-bit - Windows platforms). - -- Calling Tk_Init twice is refused if the first call failed as that - may deadlock. - -- bsddb: added the DB_ARCH_REMOVE flag and fixed db.DBEnv.log_archive() to - accept it without potentially using an uninitialized pointer. - -- bsddb: added support for the DBEnv.log_stat() and DBEnv.lsn_reset() methods - assuming BerkeleyDB >= 4.0 and 4.4 respectively. [pybsddb project SF - patch numbers 1494885 and 1494902] - -- bsddb: added an interface for the BerkeleyDB >= 4.3 DBSequence class. - [pybsddb project SF patch number 1466734] - -- bsddb: fix DBCursor.pget() bug with keyword argument names when no data - parameter is supplied. [SF pybsddb bug #1477863] - -- bsddb: the __len__ method of a DB object has been fixed to return correct - results. It could previously incorrectly return 0 in some cases. - Fixes SF bug 1493322 (pybsddb bug 1184012). - -- bsddb: the bsddb.dbtables Modify method now raises the proper error and - aborts the db transaction safely when a modifier callback fails. - Fixes SF python patch/bug #1408584. - -- bsddb: multithreaded DB access using the simple bsddb module interface - now works reliably. It has been updated to use automatic BerkeleyDB - deadlock detection and the bsddb.dbutils.DeadlockWrap wrapper to retry - database calls that would previously deadlock. [SF python bug #775414] - -- Patch #1446489: add support for the ZIP64 extensions to zipfile. - -- Patch #1506645: add Python wrappers for the curses functions - is_term_resized, resize_term and resizeterm. - -Library -------- - -- Patch #815924: Restore ability to pass type= and icon= in tkMessageBox - functions. - -- Patch #812986: Update turtle output even if not tracing. - -- Patch #1494750: Destroy master after deleting children in - Tkinter.BaseWidget. - -- Patch #1096231: Add ``default`` argument to Tkinter.Wm.wm_iconbitmap. - -- Patch #763580: Add name and value arguments to Tkinter variable - classes. - -- Bug #1117556: SimpleHTTPServer now tries to find and use the system's - mime.types file for determining MIME types. - -- Bug #1339007: Shelf objects now don't raise an exception in their - __del__ method when initialization failed. - -- Patch #1455898: The MBCS codec now supports the incremental mode for - double-byte encodings. - -- ``difflib``'s ``SequenceMatcher.get_matching_blocks()`` was changed to - guarantee that adjacent triples in the return list always describe - non-adjacent blocks. Previously, a pair of matching blocks could end - up being described by multiple adjacent triples that formed a partition - of the matching pair. - -- Bug #1498146: fix optparse to handle Unicode strings in option help, - description, and epilog. - -- Bug #1366250: minor optparse documentation error. - -- Bug #1361643: fix textwrap.dedent() so it handles tabs appropriately; - clarify docs. - -- The wsgiref package has been added to the standard library. - -- The functions update_wrapper() and wraps() have been added to the functools - module. These make it easier to copy relevant metadata from the original - function when writing wrapper functions. - -- The optional ``isprivate`` argument to ``doctest.testmod()``, and the - ``doctest.is_private()`` function, both deprecated in 2.4, were removed. - -- Patch #1359618: Speed up charmap encoder by using a trie structure - for lookup. - -- The functions in the ``pprint`` module now sort dictionaries by key - before computing the display. Before 2.5, ``pprint`` sorted a dictionary - if and only if its display required more than one line, although that - wasn't documented. The new behavior increases predictability; e.g., - using ``pprint.pprint(a_dict)`` in a doctest is now reliable. - -- Patch #1497027: try HTTP digest auth before basic auth in urllib2 - (thanks for J. J. Lee). - -- Patch #1496206: improve urllib2 handling of passwords with respect to - default HTTP and HTTPS ports. - -- Patch #1080727: add "encoding" parameter to doctest.DocFileSuite. - -- Patch #1281707: speed up gzip.readline. - -- Patch #1180296: Two new functions were added to the locale module: - format_string() to get the effect of "format % items" but locale-aware, - and currency() to format a monetary number with currency sign. - -- Patch #1486962: Several bugs in the turtle Tk demo module were fixed - and several features added, such as speed and geometry control. - -- Patch #1488881: add support for external file objects in bz2 compressed - tarfiles. - -- Patch #721464: pdb.Pdb instances can now be given explicit stdin and - stdout arguments, making it possible to redirect input and output - for remote debugging. - -- Patch #1484695: Update the tarfile module to version 0.8. This fixes - a couple of issues, notably handling of long file names using the - GNU LONGNAME extension. - -- Patch #1478292. ``doctest.register_optionflag(name)`` shouldn't create a - new flag when ``name`` is already the name of an option flag. - -- Bug #1385040: don't allow "def foo(a=1, b): pass" in the compiler - package. - -- Patch #1472854: make the rlcompleter.Completer class usable on non- - UNIX platforms. - -- Patch #1470846: fix urllib2 ProxyBasicAuthHandler. - -- Bug #1472827: correctly escape newlines and tabs in attribute values in - the saxutils.XMLGenerator class. - - -Build ------ - -- Bug #1502728: Correctly link against librt library on HP-UX. - -- OpenBSD 3.9 is supported now. - -- Patch #1492356: Port to Windows CE. - -- Bug/Patch #1481770: Use .so extension for shared libraries on HP-UX for ia64. - -- Patch #1471883: Add --enable-universalsdk. - -C API ------ - -Tests ------ - -Tools ------ - -Documentation -------------- - - - -What's New in Python 2.5 alpha 2? -================================= - -*Release date: 27-APR-2006* - -Core and builtins ------------------ - -- Bug #1465834: 'bdist_wininst preinstall script support' was fixed - by converting these apis from macros into exported functions again: - - PyParser_SimpleParseFile PyParser_SimpleParseString PyRun_AnyFile - PyRun_AnyFileEx PyRun_AnyFileFlags PyRun_File PyRun_FileEx - PyRun_FileFlags PyRun_InteractiveLoop PyRun_InteractiveOne - PyRun_SimpleFile PyRun_SimpleFileEx PyRun_SimpleString - PyRun_String Py_CompileString - -- Under COUNT_ALLOCS, types are not necessarily immortal anymore. - -- All uses of PyStructSequence_InitType have been changed to initialize - the type objects only once, even if the interpreter is initialized - multiple times. - -- Bug #1454485, array.array('u') could crash the interpreter. This was - due to PyArgs_ParseTuple(args, 'u#', ...) trying to convert buffers (strings) - to unicode when it didn't make sense. 'u#' now requires a unicode string. - -- Py_UNICODE is unsigned. It was always documented as unsigned, but - due to a bug had a signed value in previous versions. - -- Patch #837242: ``id()`` of any Python object always gives a positive - number now, which might be a long integer. ``PyLong_FromVoidPtr`` and - ``PyLong_AsVoidPtr`` have been changed accordingly. Note that it has - never been correct to implement a ``__hash()__`` method that returns the - ``id()`` of an object: - - def __hash__(self): - return id(self) # WRONG - - because a hash result must be a (short) Python int but it was always - possible for ``id()`` to return a Python long. However, because ``id()`` - could return negative values before, on a 32-bit box an ``id()`` result - was always usable as a hash value before this patch. That's no longer - necessarily so. - -- Python on OS X 10.3 and above now uses dlopen() (via dynload_shlib.c) - to load extension modules and now provides the dl module. As a result, - sys.setdlopenflags() now works correctly on these systems. (SF patch - #1454844) - -- Patch #1463867: enhanced garbage collection to allow cleanup of cycles - involving generators that have paused outside of any ``try`` or ``with`` - blocks. (In 2.5a1, a paused generator that was part of a reference - cycle could not be garbage collected, regardless of whether it was - paused in a ``try`` or ``with`` block.) - -Extension Modules ------------------ - -- Patch #1191065: Fix preprocessor problems on systems where recvfrom - is a macro. - -- Bug #1467952: os.listdir() now correctly raises an error if readdir() - fails with an error condition. - -- Fixed bsddb.db.DBError derived exceptions so they can be unpickled. - -- Bug #1117761: bsddb.*open() no longer raises an exception when using - the cachesize parameter. - -- Bug #1149413: bsddb.*open() no longer raises an exception when using - a temporary db (file=None) with the 'n' flag to truncate on open. - -- Bug #1332852: bsddb module minimum BerkeleyDB version raised to 3.3 - as older versions cause excessive test failures. - -- Patch #1062014: AF_UNIX sockets under Linux have a special - abstract namespace that is now fully supported. - -Library -------- - -- Bug #1223937: subprocess.CalledProcessError reports the exit status - of the process using the returncode attribute, instead of - abusing errno. - -- Patch #1475231: ``doctest`` has a new ``SKIP`` option, which causes - a doctest to be skipped (the code is not run, and the expected output - or exception is ignored). - -- Fixed contextlib.nested to cope with exceptions being raised and - caught inside exit handlers. - -- Updated optparse module to Optik 1.5.1 (allow numeric constants in - hex, octal, or binary; add ``append_const`` action; keep going if - gettext cannot be imported; added ``OptionParser.destroy()`` method; - added ``epilog`` for better help generation). - -- Bug #1473760: ``tempfile.TemporaryFile()`` could hang on Windows, when - called from a thread spawned as a side effect of importing a module. - -- The pydoc module now supports documenting packages contained in - .zip or .egg files. - -- The pkgutil module now has several new utility functions, such - as ``walk_packages()`` to support working with packages that are either - in the filesystem or zip files. - -- The mailbox module can now modify and delete messages from - mailboxes, in addition to simply reading them. Thanks to Gregory - K. Johnson for writing the code, and to the 2005 Google Summer of - Code for funding his work. - -- The ``__del__`` method of class ``local`` in module ``_threading_local`` - returned before accomplishing any of its intended cleanup. - -- Patch #790710: Add breakpoint command lists in pdb. - -- Patch #1063914: Add Tkinter.Misc.clipboard_get(). - -- Patch #1191700: Adjust column alignment in bdb breakpoint lists. - -- SimpleXMLRPCServer relied on the fcntl module, which is unavailable on - Windows. Bug #1469163. - -- The warnings, linecache, inspect, traceback, site, and doctest modules - were updated to work correctly with modules imported from zipfiles or - via other PEP 302 __loader__ objects. - -- Patch #1467770: Reduce usage of subprocess._active to processes which - the application hasn't waited on. - -- Patch #1462222: Fix Tix.Grid. - -- Fix exception when doing glob.glob('anything*/') - -- The pstats.Stats class accepts an optional stream keyword argument to - direct output to an alternate file-like object. - -Build ------ - -- The Makefile now has a reindent target, which runs reindent.py on - the library. - -- Patch #1470875: Building Python with MS Free Compiler - -- Patch #1161914: Add a python-config script. - -- Patch #1324762:Remove ccpython.cc; replace --with-cxx with - --with-cxx-main. Link with C++ compiler only if --with-cxx-main was - specified. (Can be overridden by explicitly setting LINKCC.) Decouple - CXX from --with-cxx-main, see description in README. - -- Patch #1429775: Link extension modules with the shared libpython. - -- Fixed a libffi build problem on MIPS systems. - -- ``PyString_FromFormat``, ``PyErr_Format``, and ``PyString_FromFormatV`` - now accept formats "%u" for unsigned ints, "%lu" for unsigned longs, - and "%zu" for unsigned integers of type ``size_t``. - -Tests ------ - -- test_contextlib now checks contextlib.nested can cope with exceptions - being raised and caught inside exit handlers. - -- test_cmd_line now checks operation of the -m and -c command switches - -- The test_contextlib test in 2.5a1 wasn't actually run unless you ran - it separately and by hand. It also wasn't cleaning up its changes to - the current Decimal context. - -- regrtest.py now has a -M option to run tests that test the new limits of - containers, on 64-bit architectures. Running these tests is only sensible - on 64-bit machines with more than two gigabytes of memory. The argument - passed is the maximum amount of memory for the tests to use. - -Tools ------ - -- Added the Python benchmark suite pybench to the Tools/ directory; - contributed by Marc-Andre Lemburg. - -Documentation -------------- - -- Patch #1473132: Improve docs for ``tp_clear`` and ``tp_traverse``. - -- PEP 343: Added Context Types section to the library reference - and attempted to bring other PEP 343 related documentation into - line with the implementation and/or python-dev discussions. - -- Bug #1337990: clarified that ``doctest`` does not support examples - requiring both expected output and an exception. - - -What's New in Python 2.5 alpha 1? -================================= - -*Release date: 05-APR-2006* - -Core and builtins ------------------ - -- PEP 338: -m command line switch now delegates to runpy.run_module - allowing it to support modules in packages and zipfiles - -- On Windows, .DLL is not an accepted file name extension for - extension modules anymore; extensions are only found if they - end in .PYD. - -- Bug #1421664: sys.stderr.encoding is now set to the same value as - sys.stdout.encoding. - -- __import__ accepts keyword arguments. - -- Patch #1460496: round() now accepts keyword arguments. - -- Fixed bug #1459029 - unicode reprs were double-escaped. - -- Patch #1396919: The system scope threads are reenabled on FreeBSD - 5.4 and later versions. - -- Bug #1115379: Compiling a Unicode string with an encoding declaration - now gives a SyntaxError. - -- Previously, Python code had no easy way to access the contents of a - cell object. Now, a ``cell_contents`` attribute has been added - (closes patch #1170323). - -- Patch #1123430: Python's small-object allocator now returns an arena to - the system ``free()`` when all memory within an arena becomes unused - again. Prior to Python 2.5, arenas (256KB chunks of memory) were never - freed. Some applications will see a drop in virtual memory size now, - especially long-running applications that, from time to time, temporarily - use a large number of small objects. Note that when Python returns an - arena to the platform C's ``free()``, there's no guarantee that the - platform C library will in turn return that memory to the operating system. - The effect of the patch is to stop making that impossible, and in tests it - appears to be effective at least on Microsoft C and gcc-based systems. - Thanks to Evan Jones for hard work and patience. - -- Patch #1434038: property() now uses the getter's docstring if there is - no "doc" argument given. This makes it possible to legitimately use - property() as a decorator to produce a read-only property. - -- PEP 357, patch 1436368: add an __index__ method to int/long and a matching - nb_index slot to the PyNumberMethods struct. The slot is consulted instead - of requiring an int or long in slicing and a few other contexts, enabling - other objects (e.g. Numeric Python's integers) to be used as slice indices. - -- Fixed various bugs reported by Coverity's Prevent tool. - -- PEP 352, patch #1104669: Make exceptions new-style objects. Introduced the - new exception base class, BaseException, which has a new message attribute. - KeyboardInterrupt and SystemExit to directly inherit from BaseException now. - Raising a string exception now raises a DeprecationWarning. - -- Patch #1438387, PEP 328: relative and absolute imports. Imports can now be - explicitly relative, using 'from .module import name' to mean 'from the same - package as this module is in. Imports without dots still default to the - old relative-then-absolute, unless 'from __future__ import - absolute_import' is used. - -- Properly check if 'warnings' raises an exception (usually when a filter set - to "error" is triggered) when raising a warning for raising string - exceptions. - -- CO_GENERATOR_ALLOWED is no longer defined. This behavior is the default. - The name was removed from Include/code.h. - -- PEP 308: conditional expressions were added: (x if cond else y). - -- Patch 1433928: - - The copy module now "copies" function objects (as atomic objects). - - dict.__getitem__ now looks for a __missing__ hook before raising - KeyError. - -- PEP 343: with statement implemented. Needs ``from __future__ import - with_statement``. Use of 'with' as a variable will generate a warning. - Use of 'as' as a variable will also generate a warning (unless it's - part of an import statement). - The following objects have __context__ methods: - - The built-in file type. - - The thread.LockType type. - - The following types defined by the threading module: - Lock, RLock, Condition, Semaphore, BoundedSemaphore. - - The decimal.Context class. - -- Fix the encodings package codec search function to only search - inside its own package. Fixes problem reported in patch #1433198. - - Note: Codec packages should implement and register their own - codec search function. PEP 100 has the details. - -- PEP 353: Using ``Py_ssize_t`` as the index type. - -- ``PYMALLOC_DEBUG`` builds now add ``4*sizeof(size_t)`` bytes of debugging - info to each allocated block, since the ``Py_ssize_t`` changes (PEP 353) - now allow Python to make use of memory blocks exceeding 2**32 bytes for - some purposes on 64-bit boxes. A ``PYMALLOC_DEBUG`` build was limited - to 4-byte allocations before. - -- Patch #1400181, fix unicode string formatting to not use the locale. - This is how string objects work. u'%f' could use , instead of . - for the decimal point. Now both strings and unicode always use periods. - -- Bug #1244610, #1392915, fix build problem on OpenBSD 3.7 and 3.8. - configure would break checking curses.h. - -- Bug #959576: The pwd module is now builtin. This allows Python to be - built on UNIX platforms without $HOME set. - -- Bug #1072182, fix some potential problems if characters are signed. - -- Bug #889500, fix line number on SyntaxWarning for global declarations. - -- Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter. - -- Support for converting hex strings to floats no longer works. - This was not portable. float('0x3') now raises a ValueError. - -- Patch #1382163: Expose Subversion revision number to Python. New C API - function Py_GetBuildNumber(). New attribute sys.subversion. Build number - is now displayed in interactive prompt banner. - -- Implementation of PEP 341 - Unification of try/except and try/finally. - "except" clauses can now be written together with a "finally" clause in - one try statement instead of two nested ones. Patch #1355913. - -- Bug #1379994: Builtin unicode_escape and raw_unicode_escape codec - now encodes backslash correctly. - -- Patch #1350409: Work around signal handling bug in Visual Studio 2005. - -- Bug #1281408: Py_BuildValue now works correctly even with unsigned longs - and long longs. - -- SF Bug #1350188, "setdlopenflags" leads to crash upon "import" - It was possible for dlerror() to return a NULL pointer, so - it will now use a default error message in this case. - -- Replaced most Unicode charmap codecs with new ones using the - new Unicode translate string feature in the builtin charmap - codec; the codecs were created from the mapping tables available - at ftp.unicode.org and contain a few updates (e.g. the Mac OS - encodings now include a mapping for the Apple logo) - -- Added a few more codecs for Mac OS encodings - -- Sped up some Unicode operations. - -- A new AST parser implementation was completed. The abstract - syntax tree is available for read-only (non-compile) access - to Python code; an _ast module was added. - -- SF bug #1167751: fix incorrect code being produced for generator expressions. - The following code now raises a SyntaxError: foo(a = i for i in range(10)) - -- SF Bug #976608: fix SystemError when mtime of an imported file is -1. - -- SF Bug #887946: fix segfault when redirecting stdin from a directory. - Provide a warning when a directory is passed on the command line. - -- Fix segfault with invalid coding. - -- SF bug #772896: unknown encoding results in MemoryError. - -- All iterators now have a Boolean value of True. Formerly, some iterators - supported a __len__() method which evaluated to False when the iterator - was empty. - -- On 64-bit platforms, when __len__() returns a value that cannot be - represented as a C int, raise OverflowError. - -- test__locale is skipped on OS X < 10.4 (only partial locale support is - present). - -- SF bug #893549: parsing keyword arguments was broken with a few format - codes. - -- Changes donated by Elemental Security to make it work on AIX 5.3 - with IBM's 64-bit compiler (SF patch #1284289). This also closes SF - bug #105470: test_pwd fails on 64bit system (Opteron). - -- Changes donated by Elemental Security to make it work on HP-UX 11 on - Itanium2 with HP's 64-bit compiler (SF patch #1225212). - -- Disallow keyword arguments for type constructors that don't use them - (fixes bug #1119418). - -- Forward UnicodeDecodeError into SyntaxError for source encoding errors. - -- SF bug #900092: When tracing (e.g. for hotshot), restore 'return' events for - exceptions that cause a function to exit. - -- The implementation of set() and frozenset() was revised to use its - own internal data structure. Memory consumption is reduced by 1/3 - and there are modest speed-ups as well. The API is unchanged. - -- SF bug #1238681: freed pointer is used in longobject.c:long_pow(). - -- SF bug #1229429: PyObject_CallMethod failed to decrement some - reference counts in some error exit cases. - -- SF bug #1185883: Python's small-object memory allocator took over - a block managed by the platform C library whenever a realloc specified - a small new size. However, there's no portable way to know then how - much of the address space following the pointer is valid, so there's no - portable way to copy data from the C-managed block into Python's - small-object space without risking a memory fault. Python's small-object - realloc now leaves such blocks under the control of the platform C - realloc. - -- SF bug #1232517: An overflow error was not detected properly when - attempting to convert a large float to an int in os.utime(). - -- SF bug #1224347: hex longs now print with lowercase letters just - like their int counterparts. - -- SF bug #1163563: the original fix for bug #1010677 ("thread Module - Breaks PyGILState_Ensure()") broke badly in the case of multiple - interpreter states; back out that fix and do a better job (see - http://mail.python.org/pipermail/python-dev/2005-June/054258.html - for a longer write-up of the problem). - -- SF patch #1180995: marshal now uses a binary format by default when - serializing floats. - -- SF patch #1181301: on platforms that appear to use IEEE 754 floats, - the routines that promise to produce IEEE 754 binary representations - of floats now simply copy bytes around. - -- bug #967182: disallow opening files with 'wU' or 'aU' as specified by PEP - 278. - -- patch #1109424: int, long, float, complex, and unicode now check for the - proper magic slot for type conversions when subclassed. Previously the - magic slot was ignored during conversion. Semantics now match the way - subclasses of str always behaved. int/long/float, conversion of an instance - to the base class has been moved to the proper nb_* magic slot and out of - PyNumber_*(). - Thanks Walter D�rwald. - -- Descriptors defined in C with a PyGetSetDef structure, where the setter is - NULL, now raise an AttributeError when attempting to set or delete the - attribute. Previously a TypeError was raised, but this was inconsistent - with the equivalent pure-Python implementation. - -- It is now safe to call PyGILState_Release() before - PyEval_InitThreads() (note that if there is reason to believe there - are multiple threads around you still must call PyEval_InitThreads() - before using the Python API; this fix is for extension modules that - have no way of knowing if Python is multi-threaded yet). - -- Typing Ctrl-C whilst raw_input() was waiting in a build with threads - disabled caused a crash. - -- Bug #1165306: instancemethod_new allowed the creation of a method - with im_class == im_self == NULL, which caused a crash when called. - -- Move exception finalisation later in the shutdown process - this - fixes the crash seen in bug #1165761 - -- Added two new builtins, any() and all(). - -- Defining a class with empty parentheses is now allowed - (e.g., ``class C(): pass`` is no longer a syntax error). - Patch #1176012 added support to the 'parser' module and 'compiler' package - (thanks to logistix for that added support). - -- Patch #1115086: Support PY_LONGLONG in structmember. - -- Bug #1155938: new style classes did not check that __init__() was - returning None. - -- Patch #802188: Report characters after line continuation character - ('\') with a specific error message. - -- Bug #723201: Raise a TypeError for passing bad objects to 'L' format. - -- Bug #1124295: the __name__ attribute of file objects was - inadvertently made inaccessible in restricted mode. - -- Bug #1074011: closing sys.std{out,err} now causes a flush() and - an ferror() call. - -- min() and max() now support key= arguments with the same meaning as in - list.sort(). - -- The peephole optimizer now performs simple constant folding in expressions: - (2+3) --> (5). - -- set and frozenset objects can now be marshalled. SF #1098985. - -- Bug #1077106: Poor argument checking could cause memory corruption - in calls to os.read(). - -- The parser did not complain about future statements in illegal - positions. It once again reports a syntax error if a future - statement occurs after anything other than a doc string. - -- Change the %s format specifier for str objects so that it returns a - unicode instance if the argument is not an instance of basestring and - calling __str__ on the argument returns a unicode instance. - -- Patch #1413181: changed ``PyThreadState_Delete()`` to forget about the - current thread state when the auto-GIL-state machinery knows about - it (since the thread state is being deleted, continuing to remember it - can't help, but can hurt if another thread happens to get created with - the same thread id). - -Extension Modules ------------------ - -- Patch #1380952: fix SSL objects timing out on consecutive read()s - -- Patch #1309579: wait3 and wait4 were added to the posix module. - -- Patch #1231053: The audioop module now supports encoding/decoding of alaw. - In addition, the existing ulaw code was updated. - -- RFE #567972: Socket objects' family, type and proto properties are - now exposed via new attributes. - -- Everything under lib-old was removed. This includes the following modules: - Para, addpack, cmp, cmpcache, codehack, dircmp, dump, find, fmt, grep, - lockfile, newdir, ni, packmail, poly, rand, statcache, tb, tzparse, - util, whatsound, whrandom, zmod - -- The following modules were removed: regsub, reconvert, regex, regex_syntax. - -- re and sre were swapped, so help(re) provides full help. importing sre - is deprecated. The undocumented re.engine variable no longer exists. - -- Bug #1448490: Fixed a bug that ISO-2022 codecs could not handle - SS2 (single-shift 2) escape sequences correctly. - -- The unicodedata module was updated to the 4.1 version of the Unicode - database. The 3.2 version is still available as unicodedata.db_3_2_0 - for applications that require this specific version (such as IDNA). - -- The timing module is no longer built by default. It was deprecated - in PEP 4 in Python 2.0 or earlier. - -- Patch 1433928: Added a new type, defaultdict, to the collections module. - This uses the new __missing__ hook behavior added to dict (see above). - -- Bug #854823: socketmodule now builds on Sun platforms even when - INET_ADDRSTRLEN is not defined. - -- Patch #1393157: os.startfile() now has an optional argument to specify - a "command verb" to invoke on the file. - -- Bug #876637, prevent stack corruption when socket descriptor - is larger than FD_SETSIZE. - -- Patch #1407135, bug #1424041: harmonize mmap behavior of anonymous memory. - mmap.mmap(-1, size) now returns anonymous memory in both Unix and Windows. - mmap.mmap(0, size) should not be used on Windows for anonymous memory. - -- Patch #1422385: The nis module now supports access to domains other - than the system default domain. - -- Use Win32 API to implement os.stat/fstat. As a result, subsecond timestamps - are reported, the limit on path name lengths is removed, and stat reports - WindowsError now (instead of OSError). - -- Add bsddb.db.DBEnv.set_tx_timestamp allowing time based database recovery. - -- Bug #1413192, fix seg fault in bsddb if a transaction was deleted - before the env. - -- Patch #1103116: Basic AF_NETLINK support. - -- Bug #1402308, (possible) segfault when using mmap.mmap(-1, ...) - -- Bug #1400822, _curses over{lay,write} doesn't work when passing 6 ints. - Also fix ungetmouse() which did not accept arguments properly. - The code now conforms to the documented signature. - -- Bug #1400115, Fix segfault when calling curses.panel.userptr() - without prior setting of the userptr. - -- Fix 64-bit problems in bsddb. - -- Patch #1365916: fix some unsafe 64-bit mmap methods. - -- Bug #1290333: Added a workaround for cjkcodecs' _codecs_cn build - problem on AIX. - -- Bug #869197: os.setgroups rejects long integer arguments - -- Bug #1346533, select.poll() doesn't raise an error if timeout > sys.maxint - -- Bug #1344508, Fix UNIX mmap leaking file descriptors - -- Patch #1338314, Bug #1336623: fix tarfile so it can extract - REGTYPE directories from tarfiles written by old programs. - -- Patch #1407992, fixes broken bsddb module db associate when using - BerkeleyDB 3.3, 4.0 or 4.1. - -- Get bsddb module to build with BerkeleyDB version 4.4 - -- Get bsddb module to build with BerkeleyDB version 3.2 - -- Patch #1309009, Fix segfault in pyexpat when the XML document is in latin_1, - but Python incorrectly assumes it is in UTF-8 format - -- Fix parse errors in the readline module when compiling without threads. - -- Patch #1288833: Removed thread lock from socket.getaddrinfo on - FreeBSD 5.3 and later versions which got thread-safe getaddrinfo(3). - -- Patches #1298449 and #1298499: Add some missing checks for error - returns in cStringIO.c. - -- Patch #1297028: fix segfault if call type on MultibyteCodec, - MultibyteStreamReader, or MultibyteStreamWriter - -- Fix memory leak in posix.access(). - -- Patch #1213831: Fix typo in unicodedata._getcode. - -- Bug #1007046: os.startfile() did not accept unicode strings encoded in - the file system encoding. - -- Patch #756021: Special-case socket.inet_aton('255.255.255.255') for - platforms that don't have inet_aton(). - -- Bug #1215928: Fix bz2.BZ2File.seek() for 64-bit file offsets. - -- Bug #1191043: Fix bz2.BZ2File.(x)readlines for files containing one - line without newlines. - -- Bug #728515: mmap.resize() now resizes the file on Unix as it did - on Windows. - -- Patch #1180695: Add nanosecond stat resolution, and st_gen, - st_birthtime for FreeBSD. - -- Patch #1231069: The fcntl.ioctl function now uses the 'I' code for - the request code argument, which results in more C-like behaviour - for large or negative values. - -- Bug #1234979: For the argument of thread.Lock.acquire, the Windows - implementation treated all integer values except 1 as false. - -- Bug #1194181: bz2.BZ2File didn't handle mode 'U' correctly. - -- Patch #1212117: os.stat().st_flags is now accessible as a attribute - if available on the platform. - -- Patch #1103951: Expose O_SHLOCK and O_EXLOCK in the posix module if - available on the platform. - -- Bug #1166660: The readline module could segfault if hook functions - were set in a different thread than that which called readline. - -- collections.deque objects now support a remove() method. - -- operator.itemgetter() and operator.attrgetter() now support retrieving - multiple fields. This provides direct support for sorting on multiple - keys (primary, secondary, etc). - -- os.access now supports Unicode path names on non-Win32 systems. - -- Patches #925152, #1118602: Avoid reading after the end of the buffer - in pyexpat.GetInputContext. - -- Patches #749830, #1144555: allow UNIX mmap size to default to current - file size. - -- Added functional.partial(). See PEP309. - -- Patch #1093585: raise a ValueError for negative history items in readline. - {remove_history,replace_history} - -- The spwd module has been added, allowing access to the shadow password - database. - -- stat_float_times is now True. - -- array.array objects are now picklable. - -- the cPickle module no longer accepts the deprecated None option in the - args tuple returned by __reduce__(). - -- itertools.islice() now accepts None for the start and step arguments. - This allows islice() to work more readily with slices: - islice(s.start, s.stop, s.step) - -- datetime.datetime() now has a strptime class method which can be used to - create datetime object using a string and format. - -- Patch #1117961: Replace the MD5 implementation from RSA Data Security Inc - with the implementation from http://sourceforge.net/projects/libmd5-rfc/. - -Library -------- - -- Patch #1388073: Numerous __-prefixed attributes of unittest.TestCase have - been renamed to have only a single underscore prefix. This was done to - make subclassing easier. - -- PEP 338: new module runpy defines a run_module function to support - executing modules which provide access to source code or a code object - via the PEP 302 import mechanisms. - -- The email module's parsedate_tz function now sets the daylight savings - flag to -1 (unknown) since it can't tell from the date whether it should - be set. - -- Patch #624325: urlparse.urlparse() and urlparse.urlsplit() results - now sport attributes that provide access to the parts of the result. - -- Patch #1462498: sgmllib now handles entity and character references - in attribute values. - -- Added the sqlite3 package. This is based on pysqlite2.1.3, and provides - a DB-API interface in the standard library. You'll need sqlite 3.0.8 or - later to build this - if you have an earlier version, the C extension - module will not be built. - -- Bug #1460340: ``random.sample(dict)`` failed in various ways. Dicts - aren't officially supported here, and trying to use them will probably - raise an exception some day. But dicts have been allowed, and "mostly - worked", so support for them won't go away without warning. - -- Bug #1445068: getpass.getpass() can now be given an explicit stream - argument to specify where to write the prompt. - -- Patch #1462313, bug #1443328: the pickle modules now can handle classes - that have __private names in their __slots__. - -- Bug #1250170: mimetools now handles socket.gethostname() failures gracefully. - -- patch #1457316: "setup.py upload" now supports --identity to select the - key to be used for signing the uploaded code. - -- Queue.Queue objects now support .task_done() and .join() methods - to make it easier to monitor when daemon threads have completed - processing all enqueued tasks. Patch #1455676. - -- popen2.Popen objects now preserve the command in a .cmd attribute. - -- Added the ctypes ffi package. - -- email 4.0 package now integrated. This is largely the same as the email 3.0 - package that was included in Python 2.3, except that PEP 8 module names are - now used (e.g. mail.message instead of email.Message). The MIME classes - have been moved to a subpackage (e.g. email.mime.text instead of - email.MIMEText). The old names are still supported for now. Several - deprecated Message methods have been removed and lots of bugs have been - fixed. More details can be found in the email package documentation. - -- Patches #1436130/#1443155: codecs.lookup() now returns a CodecInfo object - (a subclass of tuple) that provides incremental decoders and encoders - (a way to use stateful codecs without the stream API). Python functions - codecs.getincrementaldecoder() and codecs.getincrementalencoder() as well - as C functions PyCodec_IncrementalEncoder() and PyCodec_IncrementalDecoder() - have been added. - -- Patch #1359365: Calling next() on a closed StringIO.String object raises - a ValueError instead of a StopIteration now (like file and cString.String do). - cStringIO.StringIO.isatty() will raise a ValueError now if close() has been - called before (like file and StringIO.StringIO do). - -- A regrtest option -w was added to re-run failed tests in verbose mode. - -- Patch #1446372: quit and exit can now be called from the interactive - interpreter to exit. - -- The function get_count() has been added to the gc module, and gc.collect() - grew an optional 'generation' argument. - -- A library msilib to generate Windows Installer files, and a distutils - command bdist_msi have been added. - -- PEP 343: new module contextlib.py defines decorator @contextmanager - and helpful context managers nested() and closing(). - -- The compiler package now supports future imports after the module docstring. - -- Bug #1413790: zipfile now sanitizes absolute archive names that are - not allowed by the specs. - -- Patch #1215184: FileInput now can be given an opening hook which can - be used to control how files are opened. - -- Patch #1212287: fileinput.input() now has a mode parameter for - specifying the file mode input files should be opened with. - -- Patch #1215184: fileinput now has a fileno() function for getting the - current file number. - -- Patch #1349274: gettext.install() now optionally installs additional - translation functions other than _() in the builtin namespace. - -- Patch #1337756: fileinput now accepts Unicode filenames. - -- Patch #1373643: The chunk module can now read chunks larger than - two gigabytes. - -- Patch #1417555: SimpleHTTPServer now returns Last-Modified headers. - -- Bug #1430298: It is now possible to send a mail with an empty - return address using smtplib. - -- Bug #1432260: The names of lambda functions are now properly displayed - in pydoc. - -- Patch #1412872: zipfile now sets the creator system to 3 (Unix) - unless the system is Win32. - -- Patch #1349118: urllib now supports user:pass@ style proxy - specifications, raises IOErrors when proxies for unsupported protocols - are defined, and uses the https proxy on https redirections. - -- Bug #902075: urllib2 now supports 'host:port' style proxy specifications. - -- Bug #1407902: Add support for sftp:// URIs to urlparse. - -- Bug #1371247: Update Windows locale identifiers in locale.py. - -- Bug #1394565: SimpleHTTPServer now doesn't choke on query parameters - any more. - -- Bug #1403410: The warnings module now doesn't get confused - when it can't find out the module name it generates a warning for. - -- Patch #1177307: Added a new codec utf_8_sig for UTF-8 with a BOM signature. - -- Patch #1157027: cookielib mishandles RFC 2109 cookies in Netscape mode - -- Patch #1117398: cookielib.LWPCookieJar and .MozillaCookieJar now raise - LoadError as documented, instead of IOError. For compatibility, - LoadError subclasses IOError. - -- Added the hashlib module. It provides secure hash functions for MD5 and - SHA1, 224, 256, 384, and 512. Note that recent developments make the - historic MD5 and SHA1 unsuitable for cryptographic-strength applications. - In - Ronald L. Rivest offered this advice for Python: - - "The consensus of researchers in this area (at least as - expressed at the NIST Hash Function Workshop 10/31/05), - is that SHA-256 is a good choice for the time being, but - that research should continue, and other alternatives may - arise from this research. The larger SHA's also seem OK." - -- Added a subset of Fredrik Lundh's ElementTree package. Available - modules are xml.etree.ElementTree, xml.etree.ElementPath, and - xml.etree.ElementInclude, from ElementTree 1.2.6. - -- Patch #1162825: Support non-ASCII characters in IDLE window titles. - -- Bug #1365984: urllib now opens "data:" URLs again. - -- Patch #1314396: prevent deadlock for threading.Thread.join() when an exception - is raised within the method itself on a previous call (e.g., passing in an - illegal argument) - -- Bug #1340337: change time.strptime() to always return ValueError when there - is an error in the format string. - -- Patch #754022: Greatly enhanced webbrowser.py (by Oleg Broytmann). - -- Bug #729103: pydoc.py: Fix docother() method to accept additional - "parent" argument. - -- Patch #1300515: xdrlib.py: Fix pack_fstring() to really use null bytes - for padding. - -- Bug #1296004: httplib.py: Limit maximal amount of data read from the - socket to avoid a MemoryError on Windows. - -- Patch #1166948: locale.py: Prefer LC_ALL, LC_CTYPE and LANG over LANGUAGE - to get the correct encoding. - -- Patch #1166938: locale.py: Parse LANGUAGE as a colon separated list of - languages. - -- Patch #1268314: Cache lines in StreamReader.readlines for performance. - -- Bug #1290505: Fix clearing the regex cache for time.strptime(). - -- Bug #1167128: Fix size of a symlink in a tarfile to be 0. - -- Patch #810023: Fix off-by-one bug in urllib.urlretrieve reporthook - functionality. - -- Bug #1163178: Make IDNA return an empty string when the input is empty. - -- Patch #848017: Make Cookie more RFC-compliant. Use CRLF as default output - separator and do not output trailing semicolon. - -- Patch #1062060: urllib.urlretrieve() now raises a new exception, named - ContentTooShortException, when the actually downloaded size does not - match the Content-Length header. - -- Bug #1121494: distutils.dir_utils.mkpath now accepts Unicode strings. - -- Bug #1178484: Return complete lines from codec stream readers - even if there is an exception in later lines, resulting in - correct line numbers for decoding errors in source code. - -- Bug #1192315: Disallow negative arguments to clear() in pdb. - -- Patch #827386: Support absolute source paths in msvccompiler.py. - -- Patch #1105730: Apply the new implementation of commonprefix in posixpath - to ntpath, macpath, os2emxpath and riscospath. - -- Fix a problem in Tkinter introduced by SF patch #869468: delete bogus - __hasattr__ and __delattr__ methods on class Tk that were breaking - Tkdnd. - -- Bug #1015140: disambiguated the term "article id" in nntplib docs and - docstrings to either "article number" or "message id". - -- Bug #1238170: threading.Thread.__init__ no longer has "kwargs={}" as a - parameter, but uses the usual "kwargs=None". - -- textwrap now processes text chunks at O(n) speed instead of O(n**2). - Patch #1209527 (Contributed by Connelly). - -- urllib2 has now an attribute 'httpresponses' mapping from HTTP status code - to W3C name (404 -> 'Not Found'). RFE #1216944. - -- Bug #1177468: Don't cache the /dev/urandom file descriptor for os.urandom, - as this can cause problems with apps closing all file descriptors. - -- Bug #839151: Fix an attempt to access sys.argv in the warnings module; - it can be missing in embedded interpreters - -- Bug #1155638: Fix a bug which affected HTTP 0.9 responses in httplib. - -- Bug #1100201: Cross-site scripting was possible on BaseHTTPServer via - error messages. - -- Bug #1108948: Cookie.py produced invalid JavaScript code. - -- The tokenize module now detects and reports indentation errors. - Bug #1224621. - -- The tokenize module has a new untokenize() function to support a full - roundtrip from lexed tokens back to Python source code. In addition, - the generate_tokens() function now accepts a callable argument that - terminates by raising StopIteration. - -- Bug #1196315: fix weakref.WeakValueDictionary constructor. - -- Bug #1213894: os.path.realpath didn't resolve symlinks that were the first - component of the path. - -- Patch #1120353: The xmlrpclib module provides better, more transparent, - support for datetime.{datetime,date,time} objects. With use_datetime set - to True, applications shouldn't have to fiddle with the DateTime wrapper - class at all. - -- distutils.commands.upload was added to support uploading distribution - files to PyPI. - -- distutils.commands.register now encodes the data as UTF-8 before posting - them to PyPI. - -- decimal operator and comparison methods now return NotImplemented - instead of raising a TypeError when interacting with other types. This - allows other classes to implement __radd__ style methods and have them - work as expected. - -- Bug #1163325: Decimal infinities failed to hash. Attempting to - hash a NaN raised an InvalidOperation instead of a TypeError. - -- Patch #918101: Add tarfile open mode r|* for auto-detection of the - stream compression; add, for symmetry reasons, r:* as a synonym of r. - -- Patch #1043890: Add extractall method to tarfile. - -- Patch #1075887: Don't require MSVC in distutils if there is nothing - to build. - -- Patch #1103407: Properly deal with tarfile iterators when untarring - symbolic links on Windows. - -- Patch #645894: Use getrusage for computing the time consumption in - profile.py if available. - -- Patch #1046831: Use get_python_version where appropriate in sysconfig.py. - -- Patch #1117454: Remove code to special-case cookies without values - in LWPCookieJar. - -- Patch #1117339: Add cookielib special name tests. - -- Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder. - -- Patch #1110248: SYNC_FLUSH the zlib buffer for GZipFile.flush. - -- Patch #1107973: Allow to iterate over the lines of a tarfile.ExFileObject. - -- Patch #1104111: Alter setup.py --help and --help-commands. - -- Patch #1121234: Properly cleanup _exit and tkerror commands. - -- Patch #1049151: xdrlib now unpacks booleans as True or False. - -- Fixed bug in a NameError bug in cookielib. Patch #1116583. - -- Applied a security fix to SimpleXMLRPCserver (PSF-2005-001). This - disables recursive traversal through instance attributes, which can - be exploited in various ways. - -- Bug #1222790: in SimpleXMLRPCServer, set the reuse-address and close-on-exec - flags on the HTTP listening socket. - -- Bug #792570: SimpleXMLRPCServer had problems if the request grew too large. - Fixed by reading the HTTP body in chunks instead of one big socket.read(). - -- Patches #893642, #1039083: add allow_none, encoding arguments to - constructors of SimpleXMLRPCServer and CGIXMLRPCRequestHandler. - -- Bug #1110478: Revert os.environ.update to do putenv again. - -- Bug #1103844: fix distutils.install.dump_dirs() with negated options. - -- os.{SEEK_SET, SEEK_CUR, SEEK_END} have been added for convenience. - -- Enhancements to the csv module: - - + Dialects are now validated by the underlying C code, better - reflecting its capabilities, and improving its compliance with - PEP 305. - + Dialect parameter parsing has been re-implemented to improve error - reporting. - + quotechar=None and quoting=QUOTE_NONE now work the way PEP 305 - dictates. - + the parser now removes the escapechar prefix from escaped characters. - + when quoting=QUOTE_NONNUMERIC, the writer now tests for numeric - types, rather than any object that can be represented as a numeric. - + when quoting=QUOTE_NONNUMERIC, the reader now casts unquoted fields - to floats. - + reader now allows \r characters to be quoted (previously it only allowed - \n to be quoted). - + writer doublequote handling improved. - + Dialect classes passed to the module are no longer instantiated by - the module before being parsed (the former validation scheme required - this, but the mechanism was unreliable). - + The dialect registry now contains instances of the internal - C-coded dialect type, rather than references to python objects. - + the internal c-coded dialect type is now immutable. - + register_dialect now accepts the same keyword dialect specifications - as the reader and writer, allowing the user to register dialects - without first creating a dialect class. - + a configurable limit to the size of parsed fields has been added - - previously, an unmatched quote character could result in the entire - file being read into the field buffer before an error was reported. - + A new module method csv.field_size_limit() has been added that sets - the parser field size limit (returning the former limit). The initial - limit is 128kB. - + A line_num attribute has been added to the reader object, which tracks - the number of lines read from the source iterator. This is not - the same as the number of records returned, as records can span - multiple lines. - + reader and writer objects were not being registered with the cyclic-GC. - This has been fixed. - -- _DummyThread objects in the threading module now delete self.__block that is - inherited from _Thread since it uses up a lock allocated by 'thread'. The - lock primitives tend to be limited in number and thus should not be wasted on - a _DummyThread object. Fixes bug #1089632. - -- The imghdr module now detects Exif files. - -- StringIO.truncate() now correctly adjusts the size attribute. - (Bug #951915). - -- locale.py now uses an updated locale alias table (built using - Tools/i18n/makelocalealias.py, a tool to parse the X11 locale - alias file); the encoding lookup was enhanced to use Python's - encoding alias table. - -- moved deprecated modules to Lib/lib-old: whrandom, tzparse, statcache. - -- the pickle module no longer accepts the deprecated None option in the - args tuple returned by __reduce__(). - -- optparse now optionally imports gettext. This allows its use in setup.py. - -- the pickle module no longer uses the deprecated bin parameter. - -- the shelve module no longer uses the deprecated binary parameter. - -- the pstats module no longer uses the deprecated ignore() method. - -- the filecmp module no longer uses the deprecated use_statcache argument. - -- unittest.TestCase.run() and unittest.TestSuite.run() can now be successfully - extended or overridden by subclasses. Formerly, the subclassed method would - be ignored by the rest of the module. (Bug #1078905). - -- heapq.nsmallest() and heapq.nlargest() now support key= arguments with - the same meaning as in list.sort(). - -- Bug #1076985: ``codecs.StreamReader.readline()`` now calls ``read()`` only - once when a size argument is given. This prevents a buffer overflow in the - tokenizer with very long source lines. - -- Bug #1083110: ``zlib.decompress.flush()`` would segfault if called - immediately after creating the object, without any intervening - ``.decompress()`` calls. - -- The reconvert.quote function can now emit triple-quoted strings. The - reconvert module now has some simple documentation. - -- ``UserString.MutableString`` now supports negative indices in - ``__setitem__`` and ``__delitem__`` - -- Bug #1149508: ``textwrap`` now handles hyphenated numbers (eg. "2004-03-05") - correctly. - -- Partial fixes for SF bugs #1163244 and #1175396: If a chunk read by - ``codecs.StreamReader.readline()`` has a trailing "\r", read one more - character even if the user has passed a size parameter to get a proper - line ending. Remove the special handling of a "\r\n" that has been split - between two lines. - -- Bug #1251300: On UCS-4 builds the "unicode-internal" codec will now complain - about illegal code points. The codec now supports PEP 293 style error - handlers. - -- Bug #1235646: ``codecs.StreamRecoder.next()`` now reencodes the data it reads - from the input stream, so that the output is a byte string in the correct - encoding instead of a unicode string. - -- Bug #1202493: Fixing SRE parser to handle '{}' as perl does, rather than - considering it exactly like a '*'. - -- Bug #1245379: Add "unicode-1-1-utf-7" as an alias for "utf-7" to - ``encodings.aliases``. - -- ` uu.encode()`` and ``uu.decode()`` now support unicode filenames. - -- Patch #1413711: Certain patterns of differences were making difflib - touch the recursion limit. - -- Bug #947906: An object oriented interface has been added to the calendar - module. It's possible to generate HTML calendar now and the module can be - called as a script (e.g. via ``python -mcalendar``). Localized month and - weekday names can be ouput (even if an exotic encoding is used) using - special classes that use unicode. - -Build ------ - -- Fix test_float, test_long, and test_struct failures on Tru64 with gcc - by using -mieee gcc option. - -- Patch #1432345: Make python compile on DragonFly. - -- Build support for Win64-AMD64 was added. - -- Patch #1428494: Prefer linking against ncursesw over ncurses library. - -- Patch #881820: look for openpty and forkpty also in libbsd. - -- The sources of zlib are now part of the Python distribution (zlib 1.2.3). - The zlib module is now builtin on Windows. - -- Use -xcode=pic32 for CCSHARED on Solaris with SunPro. - -- Bug #1189330: configure did not correctly determine the necessary - value of LINKCC if python was built with GCC 4.0. - -- Upgrade Windows build to zlib 1.2.3 which eliminates a potential security - vulnerability in zlib 1.2.1 and 1.2.2. - -- EXTRA_CFLAGS has been introduced as an environment variable to hold compiler - flags that change binary compatibility. Changes were also made to - distutils.sysconfig to also use the environment variable when used during - compilation of the interpreter and of C extensions through distutils. - -- SF patch 1171735: Darwin 8's headers are anal about POSIX compliance, - and linking has changed (prebinding is now deprecated, and libcc_dynamic - no longer exists). This configure patch makes things right. - -- Bug #1158607: Build with --disable-unicode again. - -- spwdmodule.c is built only if either HAVE_GETSPNAM or HAVE_HAVE_GETSPENT is - defined. Discovered as a result of not being able to build on OS X. - -- setup.py now uses the directories specified in LDFLAGS using the -L option - and in CPPFLAGS using the -I option for adding library and include - directories, respectively, for compiling extension modules against. This has - led to the core being compiled using the values in CPPFLAGS. It also removes - the need for the special-casing of both DarwinPorts and Fink for darwin since - the proper directories can be specified in LDFLAGS (``-L/sw/lib`` for Fink, - ``-L/opt/local/lib`` for DarwinPorts) and CPPFLAGS (``-I/sw/include`` for - Fink, ``-I/opt/local/include`` for DarwinPorts). - -- Test in configure.in that checks for tzset no longer dependent on tm->tm_zone - to exist in the struct (not required by either ISO C nor the UNIX 2 spec). - Tests for sanity in tzname when HAVE_TZNAME defined were also defined. - Closes bug #1096244. Thanks Gregory Bond. - -C API ------ - -- ``PyMem_{Del, DEL}`` and ``PyMem_{Free, FREE}`` no longer map to - ``PyObject_{Free, FREE}``. They map to the system ``free()`` now. If memory - is obtained via the ``PyObject_`` family, it must be released via the - ``PyObject_`` family, and likewise for the ``PyMem_`` family. This has - always been officially true, but when Python's small-object allocator was - introduced, an attempt was made to cater to a few extension modules - discovered at the time that obtained memory via ``PyObject_New`` but - released it via ``PyMem_DEL``. It's years later, and if such code still - exists it will fail now (probably with segfaults, but calling wrong - low-level memory management functions can yield many symptoms). - -- Added a C API for set and frozenset objects. - -- Removed PyRange_New(). - -- Patch #1313939: PyUnicode_DecodeCharmap() accepts a unicode string as the - mapping argument now. This string is used as a mapping table. Byte values - greater than the length of the string and 0xFFFE are treated as undefined - mappings. - - -Tests ------ - -- In test_os, st_?time is now truncated before comparing it with ST_?TIME. - -- Patch #1276356: New resource "urlfetch" is implemented. This enables - even impatient people to run tests that require remote files. - - -Documentation -------------- - -- Bug #1402224: Add warning to dl docs about crashes. - -- Bug #1396471: Document that Windows' ftell() can return invalid - values for text files with UNIX-style line endings. - -- Bug #1274828: Document os.path.splitunc(). - -- Bug #1190204: Clarify which directories are searched by site.py. - -- Bug #1193849: Clarify os.path.expanduser() documentation. - -- Bug #1243192: re.UNICODE and re.LOCALE affect \d, \D, \s and \S. - -- Bug #755617: Document the effects of os.chown() on Windows. - -- Patch #1180012: The documentation for modulefinder is now in the library reference. - -- Patch #1213031: Document that os.chown() accepts argument values of -1. - -- Bug #1190563: Document os.waitpid() return value with WNOHANG flag. - -- Bug #1175022: Correct the example code for property(). - -- Document the IterableUserDict class in the UserDict module. - Closes bug #1166582. - -- Remove all latent references for "Macintosh" that referred to semantics for - Mac OS 9 and change to reflect the state for OS X. - Closes patch #1095802. Thanks Jack Jansen. - -Mac ---- - - -New platforms -------------- - -- FreeBSD 7 support is added. - - -Tools/Demos ------------ - -- Created Misc/Vim/vim_syntax.py to auto-generate a python.vim file in that - directory for syntax highlighting in Vim. Vim directory was added and placed - vimrc to it (was previous up a level). - -- Added two new files to Tools/scripts: pysource.py, which recursively - finds Python source files, and findnocoding.py, which finds Python - source files that need an encoding declaration. - Patch #784089, credits to Oleg Broytmann. - -- Bug #1072853: pindent.py used an uninitialized variable. - -- Patch #1177597: Correct Complex.__init__. - -- Fixed a display glitch in Pynche, which could cause the right arrow to - wiggle over by a pixel. - - -What's New in Python 2.4 final? -=============================== - -*Release date: 30-NOV-2004* - -Core and builtins ------------------ - -- Bug 875692: Improve signal handling, especially when using threads, by - forcing an early re-execution of PyEval_EvalFrame() "periodic" code when - things_to_do is not cleared by Py_MakePendingCalls(). - - -What's New in Python 2.4 (release candidate 1) -============================================== - -*Release date: 18-NOV-2004* - -Core and builtins ------------------ - -- Bug 1061968: Fixes in 2.4a3 to address thread bug 1010677 reintroduced - the years-old thread shutdown race bug 225673. Numeric history lesson - aside, all bugs in all three reports are fixed now. - - -Library -------- - -- Bug 1052242: If exceptions are raised by an atexit handler function an - attempt is made to execute the remaining handlers. The last exception - raised is re-raised. - -- ``doctest``'s new support for adding ``pdb.set_trace()`` calls to - doctests was broken in a dramatic but shallow way. Fixed. - -- Bug 1065388: ``calendar``'s ``day_name``, ``day_abbr``, ``month_name``, - and ``month_abbr`` attributes emulate sequences of locale-correct - spellings of month and day names. Because the locale can change at - any time, the correct spelling is recomputed whenever one of these is - indexed. In the worst case, the index may be a slice object, so these - recomputed every day or month name each time they were indexed. This is - much slower than necessary in the usual case, when the index is just an - integer. In that case, only the single spelling needed is recomputed - now; and, when the index is a slice object, only the spellings needed - by the slice are recomputed now. - -- Patch 1061679: Added ``__all__`` to pickletools.py. - -Build ------ - -- Bug 1034277 / Patch 1035255: Remove compilation of core against CoreServices - and CoreFoundation on OS X. Involved removing PyMac_GetAppletScriptFile() - which has no known users. Thanks Bob Ippolito. - -C API ------ - -- The PyRange_New() function is deprecated. - - -What's New in Python 2.4 beta 2? -================================ - -*Release date: 03-NOV-2004* - -License -------- - -The Python Software Foundation changed the license under which Python -is released, to remove Python version numbers. There were no other -changes to the license. So, for example, wherever the license for -Python 2.3 said "Python 2.3", the new license says "Python". The -intent is to make it possible to refer to the PSF license in a more -durable way. For example, some people say they're confused by that -the Open Source Initiative's entry for the Python Software Foundation -License:: - - http://www.opensource.org/licenses/PythonSoftFoundation.php - -says "Python 2.1.1" all over it, wondering whether it applies only -to Python 2.1.1. - -The official name of the new license is the Python Software Foundation -License Version 2. - -Core and builtins ------------------ - -- Bug #1055820 Cyclic garbage collection was not protecting against that - calling a live weakref to a piece of cyclic trash could resurrect an - insane mutation of the trash if any Python code ran during gc (via - running a dead object's __del__ method, running another callback on a - weakref to a dead object, or via any Python code run in any other thread - that managed to obtain the GIL while a __del__ or callback was running - in the thread doing gc). The most likely symptom was "impossible" - ``AttributeError`` exceptions, appearing seemingly at random, on weakly - referenced objects. The cure was to clear all weakrefs to unreachable - objects before allowing any callbacks to run. - -- Bug #1054139 _PyString_Resize() now invalidates its cached hash value. - -Extension Modules ------------------ - -- Bug #1048870: the compiler now generates distinct code objects for - functions with identical bodies. This was producing confusing - traceback messages which pointed to the function where the code - object was first defined rather than the function being executed. - -Library -------- - -- Patch #1056967 changes the semantics of Template.safe_substitute() so that - no ValueError is raised on an 'invalid' match group. Now the delimiter is - returned. - -- Bug #1052503 pdb.runcall() was not passing along keyword arguments. - -- Bug #902037: XML.sax.saxutils.prepare_input_source() now combines relative - paths with a base path before checking os.path.isfile(). - -- The whichdb module can now be run from the command line. - -- Bug #1045381: time.strptime() can now infer the date using %U or %W (week of - the year) when the day of the week and year are also specified. - -- Bug #1048816: fix bug in Ctrl-K at start of line in curses.textpad.Textbox - -- Bug #1017553: fix bug in tarfile.filemode() - -- Patch #737473: fix bug that old source code is shown in tracebacks even if - the source code is updated and reloaded. - -Build ------ - -- Patch #1044395: --enable-shared is allowed in FreeBSD also. - -What's New in Python 2.4 beta 1? -================================ - -*Release date: 15-OCT-2004* - -Core and builtins ------------------ - -- Patch #975056: Restartable signals were not correctly disabled on - BSD systems. Consistently use PyOS_setsig() instead of signal(). - -- The internal portable implementation of thread-local storage (TLS), used - by the ``PyGILState_Ensure()``/``PyGILState_Release()`` API, was not - thread-correct. This could lead to a variety of problems, up to and - including segfaults. See bug 1041645 for an example. - -- Added a command line option, -m module, which searches sys.path for the - module and then runs it. (Contributed by Nick Coghlan.) - -- The bytecode optimizer now folds tuples of constants into a single - constant. - -- SF bug #513866: Float/long comparison anomaly. Prior to 2.4b1, when - an integer was compared to a float, the integer was coerced to a float. - That could yield spurious overflow errors (if the integer was very - large), and to anomalies such as - ``long(1e200)+1 == 1e200 == long(1e200)-1``. Coercion to float is no - longer performed, and cases like ``long(1e200)-1 < 1e200``, - ``long(1e200)+1 > 1e200`` and ``(1 << 20000) > 1e200`` are computed - correctly now. - -Extension modules ------------------ - -- ``collections.deque`` objects didn't play quite right with garbage - collection, which could lead to a segfault in a release build, or - an assert failure in a debug build. Also, added overflow checks, - better detection of mutation during iteration, and shielded deque - comparisons from unusual subclass overrides of the __iter__() method. - -Library -------- - -- Patch 1046644: distutils build_ext grew two new options - --swig for - specifying the swig executable to use, and --swig-opts to specify - options to pass to swig. --swig-opts="-c++" is the new way to spell - --swig-cpp. - -- Patch 983206: distutils now obeys environment variable LDSHARED, if - it is set. - -- Added Peter Astrand's subprocess.py module. See PEP 324 for details. - -- time.strptime() now properly escapes timezones and all other locale-specific - strings for regex-specific symbols. Was breaking under Japanese Windows when - the timezone was specified as "Tokyo (standard time)". - Closes bug #1039270. - -- Updates for the email package: - - + email.Utils.formatdate() grew a 'usegmt' argument for HTTP support. - + All deprecated APIs that in email 2.x issued warnings have been removed: - _encoder argument to the MIMEText constructor, Message.add_payload(), - Utils.dump_address_pair(), Utils.decode(), Utils.encode() - + New deprecations: Generator.__call__(), Message.get_type(), - Message.get_main_type(), Message.get_subtype(), the 'strict' argument to - the Parser constructor. These will be removed in email 3.1. - + Support for Python earlier than 2.3 has been removed (see PEP 291). - + All defect classes have been renamed to end in 'Defect'. - + Some FeedParser fixes; also a MultipartInvariantViolationDefect will be - added to messages that claim to be multipart but really aren't. - + Updates to documentation. - -- re's findall() and finditer() functions now take an optional flags argument - just like the compile(), search(), and match() functions. Also, documented - the previously existing start and stop parameters for the findall() and - finditer() methods of regular expression objects. - -- rfc822 Messages now support iterating over the headers. - -- The (undocumented) tarfile.Tarfile.membernames has been removed; - applications should use the getmember function. - -- httplib now offers symbolic constants for the HTTP status codes. - -- SF bug #1028306: Trying to compare a ``datetime.date`` to a - ``datetime.datetime`` mistakenly compared only the year, month and day. - Now it acts like a mixed-type comparison: ``False`` for ``==``, - ``True`` for ``!=``, and raises ``TypeError`` for other comparison - operators. Because datetime is a subclass of date, comparing only the - base class (date) members can still be done, if that's desired, by - forcing using of the approprate date method; e.g., - ``a_date.__eq__(a_datetime)`` is true if and only if the year, month - and day members of ``a_date`` and ``a_datetime`` are equal. - -- bdist_rpm now supports command line options --force-arch, - {pre,post}-install, {pre,post}-uninstall, and - {prep,build,install,clean,verify}-script. - -- SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support - decoding incomplete input (when the input stream is temporarily exhausted). - ``codecs.StreamReader`` now implements buffering, which enables proper - readline support for the UTF-16 decoders. ``codecs.StreamReader.read()`` - has a new argument ``chars`` which specifies the number of characters to - return. ``codecs.StreamReader.readline()`` and - ``codecs.StreamReader.readlines()`` have a new argument ``keepends``. - Trailing "\n"s will be stripped from the lines if ``keepends`` is false. - -- The documentation for doctest is greatly expanded, and now covers all - the new public features (of which there are many). - -- ``doctest.master`` was put back in, and ``doctest.testmod()`` once again - updates it. This isn't good, because every ``testmod()`` call - contributes to bloating the "hidden" state of ``doctest.master``, but - some old code apparently relies on it. For now, all we can do is - encourage people to stitch doctests together via doctest's unittest - integration features instead. - -- httplib now handles ipv6 address/port pairs. - -- SF bug #1017864: ConfigParser now correctly handles default keys, - processing them with ``ConfigParser.optionxform`` when supplied, - consistent with the handling of config file entries and runtime-set - options. - -- SF bug #997050: Document, test, & check for non-string values in - ConfigParser. Moved the new string-only restriction added in - rev. 1.65 to the SafeConfigParser class, leaving existing - ConfigParser & RawConfigParser behavior alone, and documented the - conditions under which non-string values work. - -Build ------ - -- Building on darwin now includes /opt/local/include and /opt/local/lib for - building extension modules. This is so as to include software installed as - a DarwinPorts port - -- pyport.h now defines a Py_IS_NAN macro. It works as-is when the - platform C computes true for ``x != x`` if and only if X is a NaN. - Other platforms can override the default definition with a platform- - specific spelling in that platform's pyconfig.h. You can also override - pyport.h's default Py_IS_INFINITY definition now. - -C API ------ - -- SF patch 1044089: New function ``PyEval_ThreadsInitialized()`` returns - non-zero if PyEval_InitThreads() has been called. - -- The undocumented and unused extern int ``_PyThread_Started`` was removed. - -- The C API calls ``PyInterpreterState_New()`` and ``PyThreadState_New()`` - are two of the very few advertised as being safe to call without holding - the GIL. However, this wasn't true in a debug build, as bug 1041645 - demonstrated. In a debug build, Python redirects the ``PyMem`` family - of calls to Python's small-object allocator, to get the benefit of - its extra debugging capabilities. But Python's small-object allocator - isn't threadsafe, relying on the GIL to avoid the expense of doing its - own locking. ``PyInterpreterState_New()`` and ``PyThreadState_New()`` - call the platform ``malloc()`` directly now, regardless of build type. - -- PyLong_AsUnsignedLong[Mask] now support int objects as well. - -- SF patch #998993: ``PyUnicode_DecodeUTF8Stateful`` and - ``PyUnicode_DecodeUTF16Stateful`` have been added, which implement stateful - decoding. - -Tests ------ - -- test__locale ported to unittest - -Mac ---- - -- ``plistlib`` now supports non-dict root objects. There is also a new - interface for reading and writing plist files: ``readPlist(pathOrFile)`` - and ``writePlist(rootObject, pathOrFile)`` - -Tools/Demos ------------ - -- The text file comparison scripts ``ndiff.py`` and ``diff.py`` now - read the input files in universal-newline mode. This spares them - from consuming a great deal of time to deduce the useless result that, - e.g., a file with Windows line ends and a file with Linux line ends - have no lines in common. - - -What's New in Python 2.4 alpha 3? -================================= - -*Release date: 02-SEP-2004* - -Core and builtins ------------------ - -- SF patch #1007189: ``from ... import ...`` statements now allow the name - list to be surrounded by parentheses. - -- Some speedups for long arithmetic, thanks to Trevor Perrin. Gradeschool - multiplication was sped a little by optimizing the C code. Gradeschool - squaring was sped by about a factor of 2, by exploiting that about half - the digit products are duplicates in a square. Because exponentiation - uses squaring often, this also speeds long power. For example, the time - to compute 17**1000000 dropped from about 14 seconds to 9 on my box due - to this much. The cutoff for Karatsuba multiplication was raised, - since gradeschool multiplication got quicker, and the cutoff was - aggressively small regardless. The exponentiation algorithm was switched - from right-to-left to left-to-right, which is more efficient for small - bases. In addition, if the exponent is large, the algorithm now does - 5 bits (instead of 1 bit) at a time. That cut the time to compute - 17**1000000 on my box in half again, down to about 4.5 seconds. - -- OverflowWarning is no longer generated. PEP 237 scheduled this to - occur in Python 2.3, but since OverflowWarning was disabled by default, - nobody realized it was still being generated. On the chance that user - code is still using them, the Python builtin OverflowWarning, and - corresponding C API PyExc_OverflowWarning, will exist until Python 2.5. - -- Py_InitializeEx has been added. - -- Fix the order of application of decorators. The proper order is bottom-up; - the first decorator listed is the last one called. - -- SF patch #1005778. Fix a seg fault if the list size changed while - calling list.index(). This could happen if a rich comparison function - modified the list. - -- The ``func_name`` (a.k.a. ``__name__``) attribute of user-defined - functions is now writable. - -- code_new (a.k.a new.code()) now checks its arguments sufficiently - carefully that passing them on to PyCode_New() won't trigger calls - to Py_FatalError() or PyErr_BadInternalCall(). It is still the case - that the returned code object might be entirely insane. - -- Subclasses of string can no longer be interned. The semantics of - interning were not clear here -- a subclass could be mutable, for - example -- and had bugs. Explicitly interning a subclass of string - via intern() will raise a TypeError. Internal operations that attempt - to intern a string subclass will have no effect. - -- Bug 1003935: xrange() could report bogus OverflowErrors. Documented - what xrange() intends, and repaired tests accordingly. - -Extension modules ------------------ - -- difflib now supports HTML side-by-side diff. - -- os.urandom has been added for systems that support sources of random - data. - -- Patch 1012740: truncate() on a writeable cStringIO now resets the - position to the end of the stream. This is consistent with the original - StringIO module and avoids inadvertently resurrecting data that was - supposed to have been truncated away. - -- Added socket.socketpair(). - -- Added CurrentByteIndex, CurrentColumnNumber, CurrentLineNumber - members to xml.parsers.expat.XMLParser object. - -- The mpz, rotor, and xreadlines modules, all deprecated in earlier - versions of Python, have now been removed. - -Library -------- - -- Patch #934356: if a module defines __all__, believe that rather than using - heuristics for filtering out imported names. - -- Patch #941486: added os.path.lexists(), which returns True for broken - symlinks, unlike os.path.exists(). - -- the random module now uses os.urandom() for seeding if it is available. - Added a new generator based on os.urandom(). - -- difflib and diff.py can now generate HTML. - -- bdist_rpm now includes version and release in the BuildRoot, and - replaces - by ``_`` in version and release. - -- distutils build/build_scripts now has an -e option to specify the - path to the Python interpreter for installed scripts. - -- PEP 292 classes Template and SafeTemplate are added to the string module. - -- tarfile now generates GNU tar files by default. - -- HTTPResponse has now a getheaders method. - -- Patch #1006219: let inspect.getsource handle '@' decorators. Thanks Simon - Percivall. - -- logging.handlers.SMTPHandler.date_time has been removed; - the class now uses email.Utils.formatdate to generate the time stamp. - -- A new function tkFont.nametofont was added to return an existing - font. The Font class constructor now has an additional exists argument - which, if True, requests to return/configure an existing font, rather - than creating a new one. - -- Updated the decimal package's min() and max() methods to match the - latest revision of the General Decimal Arithmetic Specification. - Quiet NaNs are ignored and equal values are sorted based on sign - and exponent. - -- The decimal package's Context.copy() method now returns deep copies. - -- Deprecated sys.exitfunc in favor of the atexit module. The sys.exitfunc - attribute will be kept around for backwards compatibility and atexit - will just become the one preferred way to do it. - -- patch #675551: Add get_history_item and replace_history_item functions - to the readline module. - -- bug #989672: pdb.doc and the help messages for the help_d and help_u methods - of the pdb.Pdb class gives have been corrected. d(own) goes to a newer - frame, u(p) to an older frame, not the other way around. - -- bug #990669: os.path.realpath() will resolve symlinks before normalizing the - path, as normalizing the path may alter the meaning of the path if it - contains symlinks. - -- bug #851123: shutil.copyfile will raise an exception when trying to copy a - file onto a link to itself. Thanks Gregory Ball. - -- bug #570300: Fix inspect to resolve file locations using os.path.realpath() - so as to properly list all functions in a module when the module itself is - reached through a symlink. Thanks Johannes Gijsbers. - -- doctest refactoring continued. See the docs for details. As part of - this effort, some old and little- (never?) used features are now - deprecated: the Tester class, the module is_private() function, and the - isprivate argument to testmod(). The Tester class supplied a feeble - "by hand" way to combine multiple doctests, if you knew exactly what - you were doing. The newer doctest features for unittest integration - already did a better job of that, are stronger now than ever, and the - new DocTestRunner class is a saner foundation if you want to do it by - hand. The "private name" filtering gimmick was a mistake from the - start, and testmod() changed long ago to ignore it by default. If - you want to filter out tests, the new DocTestFinder class can be used - to return a list of all doctests, and you can filter that list by - any computable criteria before passing it to a DocTestRunner instance. - -- Bug #891637, patch #1005466: fix inspect.getargs() crash on def foo((bar)). - -Tools/Demos ------------ - -- IDLE's shortcut keys for windows are now case insensitive so that - Control-V works the same as Control-v. - -- pygettext.py: Generate POT-Creation-Date header in ISO format. - -Build ------ - -- Backward incompatibility: longintrepr.h now triggers a compile-time - error if SHIFT (the number of bits in a Python long "digit") isn't - divisible by 5. This new requirement allows simple code for the new - 5-bits-at-a-time long_pow() implementation. If necessary, the - restriction could be removed (by complicating long_pow(), or by - falling back to the 1-bit-at-a-time algorithm), but there are no - plans to do so. - -- bug #991962: When building with --disable-toolbox-glue on Darwin no - attempt to build Mac-specific modules occurs. - -- The --with-tsc flag to configure to enable VM profiling with the - processor's timestamp counter now works on PPC platforms. - -- patch #1006629: Define _XOPEN_SOURCE to 500 on Solaris 8/9 to match - GCC's definition and avoid redefinition warnings. - -- Detect pthreads support (provided by gnu pth pthread emulation) on - GNU/k*BSD systems. - -- bug #1005737, #1007249: Fixed several build problems and warnings - found on old/legacy C compilers of HP-UX, IRIX and Tru64. - -C API ------ - -.. - -Documentation -------------- - -- patch #1005936, bug #1009373: fix index entries which contain - an underscore when viewed with Acrobat. - -- bug #990669: os.path.normpath may alter the meaning of a path if - it contains symbolic links. This has been documented in a comment - since 1992, but is now in the library reference as well. - -New platforms -------------- - -- FreeBSD 6 is now supported. - -Tests ------ - -.. - -Windows -------- - -- Boosted the stack reservation for python.exe and pythonw.exe from - the default 1MB to 2MB. Stack frames under VC 7.1 for 2.4 are enough - bigger than under VC 6.0 for 2.3.4 that deeply recursive progams - within the default sys.getrecursionlimit() default value of 1000 were - able to suffer undetected C stack overflows. The standard test program - test_compiler was one such program. If a Python process on Windows - "just vanishes" without a trace, and without an error message of any - kind, but with an exit code of 128, undetected stack overflow may be - the problem. - -Mac ---- - -.. - - -What's New in Python 2.4 alpha 2? -================================= - -*Release date: 05-AUG-2004* - -Core and builtins ------------------ - -- Patch #980695: Implements efficient string concatenation for statements - of the form s=s+t and s+=t. This will vary across implementations. - Accordingly, the str.join() method is strongly preferred for performance - sensitive code. - -- PEP-0318, Function Decorators have been added to the language. These are - implemented using the Java-style @decorator syntax, like so:: - - @staticmethod - def foo(bar): - - (The PEP needs to be updated to reflect the current state) - -- When importing a module M raises an exception, Python no longer leaves M - in sys.modules. Before 2.4a2 it did, and a subsequent import of M would - succeed, picking up a module object from sys.modules reflecting as much - of the initialization of M as completed before the exception was raised. - Subsequent imports got no indication that M was in a partially- - initialized state, and the importers could get into arbitrarily bad - trouble as a result (the M they got was in an unintended state, - arbitrarily far removed from M's author's intent). Now subsequent - imports of M will continue raising exceptions (but if, for example, the - source code for M is edited between import attempts, then perhaps later - attempts will succeed, or raise a different exception). - - This can break existing code, but in such cases the code was probably - working before by accident. In the Python source, the only case of - breakage discovered was in a test accidentally relying on a damaged - module remaining in sys.modules. Cases are also known where tests - deliberately provoking import errors remove damaged modules from - sys.modules themselves, and such tests will break now if they do an - unconditional del sys.modules[M]. - -- u'%s' % obj will now try obj.__unicode__() first and fallback to - obj.__str__() if no __unicode__ method can be found. - -- Patch #550732: Add PyArg_VaParseTupleAndKeywords(). Analogous to - PyArg_VaParse(). Both are now documented. Thanks Greg Chapman. - -- Allow string and unicode return types from .encode()/.decode() - methods on string and unicode objects. Added unicode.decode() - which was missing for no apparent reason. - -- An attempt to fix the mess that is Python's behaviour with - signal handlers and threads, complicated by readline's behaviour. - It's quite possible that there are still bugs here. - -- Added C macros Py_CLEAR and Py_VISIT to ease the implementation of - types that support garbage collection. - -- Compiler now treats None as a constant. - -- The type of values returned by __int__, __float__, __long__, - __oct__, and __hex__ are now checked. Returning an invalid type - will cause a TypeError to be raised. This matches the behavior of - Jython. - -- Implemented bind_textdomain_codeset() in locale module. - -- Added a workaround for proper string operations in BSDs. str.split - and str.is* methods can now work correctly with UTF-8 locales. - -- Bug #989185: unicode.iswide() and unicode.width() is dropped and - the East Asian Width support is moved to unicodedata extension - module. - -- Patch #941229: The source code encoding in interactive mode - now refers sys.stdin.encoding not just ISO-8859-1 anymore. This - allows for non-latin-1 users to write unicode strings directly. - -Extension modules ------------------ - -- cpickle now supports the same keyword arguments as pickle. - -Library -------- - -- Added new codecs and aliases for ISO_8859-11, ISO_8859-16 and - TIS-620 - -- Thanks to Edward Loper, doctest has been massively refactored, and - many new features were added. Full docs will appear later. For now - the doctest module comments and new test cases give good coverage. - The refactoring provides many hook points for customizing behavior - (such as how to report errors, and how to compare expected to actual - output). New features include a marker for expected - output containing blank lines, options to produce unified or context - diffs when actual output doesn't match expectations, an option to - normalize whitespace before comparing, and an option to use an - ellipsis to signify "don't care" regions of output. - -- Tkinter now supports the wish -sync and -use options. - -- The following methods in time support passing of None: ctime(), gmtime(), - and localtime(). If None is provided, the current time is used (the - same as when the argument is omitted). - [SF bug 658254, patch 663482] - -- nntplib does now allow to ignore a .netrc file. - -- urllib2 now recognizes Basic authentication even if other authentication - schemes are offered. - -- Bug #1001053. wave.open() now accepts unicode filenames. - -- gzip.GzipFile has a new fileno() method, to retrieve the handle of the - underlying file object (provided it has a fileno() method). This is - needed if you want to use os.fsync() on a GzipFile. - -- imaplib has two new methods: deleteacl and myrights. - -- nntplib has two new methods: description and descriptions. They - use a more RFC-compliant way of getting a newsgroup description. - -- Bug #993394. Fix a possible red herring of KeyError in 'threading' being - raised during interpreter shutdown from a registered function with atexit - when dummy_threading is being used. - -- Bug #857297/Patch #916874. Fix an error when extracting a hard link - from a tarfile. - -- Patch #846659. Fix an error in tarfile.py when using - GNU longname/longlink creation. - -- The obsolete FCNTL.py has been deleted. The builtin fcntl module - has been available (on platforms that support fcntl) since Python - 1.5a3, and all FCNTL.py did is export fcntl's names, after generating - a deprecation warning telling you to use fcntl directly. - -- Several new unicode codecs are added: big5hkscs, euc_jis_2004, - iso2022_jp_2004, shift_jis_2004. - -- Bug #788520. Queue.{get, get_nowait, put, put_nowait} have new - implementations, exploiting Conditions (which didn't exist at the time - Queue was introduced). A minor semantic change is that the Full and - Empty exceptions raised by non-blocking calls now occur only if the - queue truly was full or empty at the instant the queue was checked (of - course the Queue may no longer be full or empty by the time a calling - thread sees those exceptions, though). Before, the exceptions could - also be raised if it was "merely inconvenient" for the implementation - to determine the true state of the Queue (because the Queue was locked - by some other method in progress). - -- Bugs #979794 and #980117: difflib.get_grouped_opcodes() now handles the - case of comparing two empty lists. This affected both context_diff() and - unified_diff(), - -- Bug #980938: smtplib now prints debug output to sys.stderr. - -- Bug #930024: posixpath.realpath() now handles infinite loops in symlinks by - returning the last point in the path that was not part of any loop. Thanks - AM Kuchling. - -- Bug #980327: ntpath not handles compressing erroneous slashes between the - drive letter and the rest of the path. Also clearly handles UNC addresses now - as well. Thanks Paul Moore. - -- bug #679953: zipfile.py should now work for files over 2 GB. The packed data - for file sizes (compressed and uncompressed) was being stored as signed - instead of unsigned. - -- decimal.py now only uses signals in the IBM spec. The other conditions are - no longer part of the public API. - -- codecs module now has two new generic APIs: encode() and decode() - which don't restrict the return types (unlike the unicode and - string methods of the same name). - -- Non-blocking SSL sockets work again; they were broken in Python 2.3. - SF patch 945642. - -- doctest unittest integration improvements: - - o Improved the unitest test output for doctest-based unit tests - - o Can now pass setUp and tearDown functions when creating - DocTestSuites. - -- The threading module has a new class, local, for creating objects - that provide thread-local data. - -- Bug #990307: when keep_empty_values is True, cgi.parse_qsl() - no longer returns spurious empty fields. - -- Implemented bind_textdomain_codeset() in gettext module. - -- Introduced in gettext module the l*gettext() family of functions, - which return translation strings encoded in the preferred encoding, - as informed by locale module's getpreferredencoding(). - -- optparse module (and tests) upgraded to Optik 1.5a1. Changes: - - - Add expansion of default values in help text: the string - "%default" in an option's help string is expanded to str() of - that option's default value, or "none" if no default value. - - - Bug #955889: option default values that happen to be strings are - now processed in the same way as values from the command line; this - allows generation of nicer help when using custom types. Can - be disabled with parser.set_process_default_values(False). - - - Bug #960515: don't crash when generating help for callback - options that specify 'type', but not 'dest' or 'metavar'. - - - Feature #815264: change the default help format for short options - that take an argument from e.g. "-oARG" to "-o ARG"; add - set_short_opt_delimiter() and set_long_opt_delimiter() methods to - HelpFormatter to allow (slight) customization of the formatting. - - - Patch #736940: internationalize Optik: all built-in user- - targeted literal strings are passed through gettext.gettext(). (If - you want translations (.po files), they're not included with Python - -- you'll find them in the Optik source distribution from - http://optik.sourceforge.net/ .) - - - Bug #878453: respect $COLUMNS environment variable for - wrapping help output. - - - Feature #988122: expand "%prog" in the 'description' passed - to OptionParser, just like in the 'usage' and 'version' strings. - (This is *not* done in the 'description' passed to OptionGroup.) - -C API ------ - -- PyImport_ExecCodeModule() and PyImport_ExecCodeModuleEx(): if an - error occurs while loading the module, these now delete the module's - entry from sys.modules. All ways of loading modules eventually call - one of these, so this is an error-case change in semantics for all - ways of loading modules. In rare cases, a module loader may wish - to keep a module object in sys.modules despite that the module's - code cannot be executed. In such cases, the module loader must - arrange to reinsert the name and module object in sys.modules. - PyImport_ReloadModule() has been changed to reinsert the original - module object into sys.modules if the module reload fails, so that - its visible semantics have not changed. - -- A large pile of datetime field-extraction macros is now documented, - thanks to Anthony Tuininga (patch #986010). - -Documentation -------------- - -- Improved the tutorial on creating types in C. - - - point out the importance of reassigning data members before - assigning their values - - - correct my misconception about return values from visitprocs. Sigh. - - - mention the labor saving Py_VISIT and Py_CLEAR macros. - -- Major rewrite of the math module docs, to address common confusions. - -Tests ------ - -- The test data files for the decimal test suite are now installed on - platforms that use the Makefile. - -- SF patch 995225: The test file testtar.tar accidentally contained - CVS keywords (like $Id: HISTORY 60928 2008-02-21 19:46:35Z guido.van.rossum $), which could cause spurious failures in - test_tarfile.py depending on how the test file was checked out. - - -What's New in Python 2.4 alpha 1? -================================= - -*Release date: 08-JUL-2004* - -Core and builtins ------------------ - -- weakref.ref is now the type object also known as - weakref.ReferenceType; it can be subclassed like any other new-style - class. There's less per-entry overhead in WeakValueDictionary - objects now (one object instead of three). - -- Bug #951851: Python crashed when reading import table of certain - Windows DLLs. - -- Bug #215126. The locals argument to eval(), execfile(), and exec now - accept any mapping type. - -- marshal now shares interned strings. This change introduces - a new .pyc magic. - -- Bug #966623. classes created with type() in an exec(, {}) don't - have a __module__, but code in typeobject assumed it would always - be there. - -- Python no longer relies on the LC_NUMERIC locale setting to be - the "C" locale; as a result, it no longer tries to prevent changing - the LC_NUMERIC category. - -- Bug #952807: Unpickling pickled instances of subclasses of - datetime.date, datetime.datetime and datetime.time could yield insane - objects. Thanks to Jiwon Seo for a fix. - -- Bug #845802: Python crashes when __init__.py is a directory. - -- Unicode objects received two new methods: iswide() and width(). - These query East Asian width information, as specified in Unicode - TR11. - -- Improved the tuple hashing algorithm to give fewer collisions in - common cases. Fixes bug #942952. - -- Implemented generator expressions (PEP 289). Coded by Jiwon Seo. - -- Enabled the profiling of C extension functions (and builtins) - check - new documentation and modified profile and bdb modules for more details - -- Set file.name to the object passed to open (instead of a new string) - -- Moved tracebackobject into traceback.h and renamed to PyTracebackObject - -- Optimized the byte coding for multiple assignments like "a,b=b,a" and - "a,b,c=1,2,3". Improves their speed by 25% to 30%. - -- Limit the nested depth of a tuple for the second argument to isinstance() - and issubclass() to the recursion limit of the interpreter. - Fixes bug #858016 . - -- Optimized dict iterators, creating separate types for each - and having them reveal their length. Also optimized the - methods: keys(), values(), and items(). - -- Implemented a newcode opcode, LIST_APPEND, that simplifies - the generated bytecode for list comprehensions and further - improves their performance (about 35%). - -- Implemented rich comparisons for floats, which seems to make - comparisons involving NaNs somewhat less surprising when the - underlying C compiler actually implements C99 semantics. - -- Optimized list.extend() to save memory and no longer create - intermediate sequences. Also, extend() now pre-allocates the - needed memory whenever the length of the iterable is known in - advance -- this halves the time to extend the list. - -- Optimized list resize operations to make fewer calls to the system - realloc(). Significantly speeds up list appends, list pops, - list comprehensions, and the list constructor (when the input iterable - length is not known). - -- Changed the internal list over-allocation scheme. For larger lists, - overallocation ranged between 3% and 25%. Now, it is a constant 12%. - For smaller lists (n<8), overallocation was upto eight elements. Now, - the overallocation is no more than three elements -- this improves space - utilization for applications that have large numbers of small lists. - -- Most list bodies now get re-used rather than freed. Speeds up list - instantiation and deletion by saving calls to malloc() and free(). - -- The dict.update() method now accepts all the same argument forms - as the dict() constructor. This now includes item lists and/or - keyword arguments. - -- Support for arbitrary objects supporting the read-only buffer - interface as the co_code field of code objects (something that was - only possible to create from C code) has been removed. - -- Made omitted callback and None equivalent for weakref.ref() and - weakref.proxy(); the None case wasn't handled correctly in all - cases. - -- Fixed problem where PyWeakref_NewRef() and PyWeakref_NewProxy() - assumed that initial existing entries in an object's weakref list - would not be removed while allocating a new weakref object. Since - GC could be invoked at that time, however, that assumption was - invalid. In a truly obscure case of GC being triggered during - creation for a new weakref object for an referent which already - has a weakref without a callback which is only referenced from - cyclic trash, a memory error can occur. This consistently created a - segfault in a debug build, but provided less predictable behavior in - a release build. - -- input() builtin function now respects compiler flags such as - __future__ statements. SF patch 876178. - -- Removed PendingDeprecationWarning from apply(). apply() remains - deprecated, but the nuisance warning will not be issued. - -- At Python shutdown time (Py_Finalize()), 2.3 called cyclic garbage - collection twice, both before and after tearing down modules. The - call after tearing down modules has been disabled, because too much - of Python has been torn down then for __del__ methods and weakref - callbacks to execute sanely. The most common symptom was a sequence - of uninformative messages on stderr when Python shut down, produced - by threads trying to raise exceptions, but unable to report the nature - of their problems because too much of the sys module had already been - destroyed. - -- Removed FutureWarnings related to hex/oct literals and conversions - and left shifts. (Thanks to Kalle Svensson for SF patch 849227.) - This addresses most of the remaining semantic changes promised by - PEP 237, except for repr() of a long, which still shows the trailing - 'L'. The PEP appears to promise warnings for operations that - changed semantics compared to Python 2.3, but this is not - implemented; we've suffered through enough warnings related to - hex/oct literals and I think it's best to be silent now. - -- For str and unicode objects, the ljust(), center(), and rjust() - methods now accept an optional argument specifying a fill - character other than a space. - -- When method objects have an attribute that can be satisfied either - by the function object or by the method object, the function - object's attribute usually wins. Christian Tismer pointed out that - that this is really a mistake, because this only happens for special - methods (like __reduce__) where the method object's version is - really more appropriate than the function's attribute. So from now - on, all method attributes will have precedence over function - attributes with the same name. - -- Critical bugfix, for SF bug 839548: if a weakref with a callback, - its callback, and its weakly referenced object, all became part of - cyclic garbage during a single run of garbage collection, the order - in which they were torn down was unpredictable. It was possible for - the callback to see partially-torn-down objects, leading to immediate - segfaults, or, if the callback resurrected garbage objects, to - resurrect insane objects that caused segfaults (or other surprises) - later. In one sense this wasn't surprising, because Python's cyclic gc - had no knowledge of Python's weakref objects. It does now. When - weakrefs with callbacks become part of cyclic garbage now, those - weakrefs are cleared first. The callbacks don't trigger then, - preventing the problems. If you need callbacks to trigger, then just - as when cyclic gc is not involved, you need to write your code so - that weakref objects outlive the objects they weakly reference. - -- Critical bugfix, for SF bug 840829: if cyclic garbage collection - happened to occur during a weakref callback for a new-style class - instance, subtle memory corruption was the result (in a release build; - in a debug build, a segfault occurred reliably very soon after). - This has been repaired. - -- Compiler flags set in PYTHONSTARTUP are now active in __main__. - -- Added two builtin types, set() and frozenset(). - -- Added a reversed() builtin function that returns a reverse iterator - over a sequence. - -- Added a sorted() builtin function that returns a new sorted list - from any iterable. - -- CObjects are now mutable (on the C level) through PyCObject_SetVoidPtr. - -- list.sort() now supports three keyword arguments: cmp, key, and reverse. - The key argument can be a function of one argument that extracts a - comparison key from the original record: mylist.sort(key=str.lower). - The reverse argument is a boolean value and if True will change the - sort order as if the comparison arguments were reversed. In addition, - the documentation has been amended to provide a guarantee that all sorts - starting with Py2.3 are guaranteed to be stable (the relative order of - records with equal keys is unchanged). - -- Added test whether wchar_t is signed or not. A signed wchar_t is not - usable as internal unicode type base for Py_UNICODE since the - unicode implementation assumes an unsigned type. - -- Fixed a bug in the cache of length-one Unicode strings that could - lead to a seg fault. The specific problem occurred when an earlier, - non-fatal error left an uninitialized Unicode object in the - freelist. - -- The % formatting operator now supports '%F' which is equivalent to - '%f'. This has always been documented but never implemented. - -- complex(obj) could leak a little memory if obj wasn't a string or - number. - -- zip() with no arguments now returns an empty list instead of raising - a TypeError exception. - -- obj.__contains__() now returns True/False instead of 1/0. SF patch - 820195. - -- Python no longer tries to be smart about recursive comparisons. - When comparing containers with cyclic references to themselves it - will now just hit the recursion limit. See SF patch 825639. - -- str and unicode builtin types now have an rsplit() method that is - same as split() except that it scans the string from the end - working towards the beginning. See SF feature request 801847. - -- Fixed a bug in object.__reduce_ex__ when using protocol 2. Failure - to clear the error when attempts to get the __getstate__ attribute - fail caused intermittent errors and odd behavior. - -- buffer objects based on other objects no longer cache a pointer to - the data and the data length. Instead, the appropriate tp_as_buffer - method is called as necessary. - -- fixed: if a file is opened with an explicit buffer size >= 1, repeated - close() calls would attempt to free() the buffer already free()ed on - the first call. - - -Extension modules ------------------ - -- Added socket.getservbyport(), and make the second argument in - getservbyname() and getservbyport() optional. - -- time module code that deals with input POSIX timestamps will now raise - ValueError if more than a second is lost in precision when the - timestamp is cast to the platform C time_t type. There's no chance - that the platform will do anything sensible with the result in such - cases. This includes ctime(), localtime() and gmtime(). Assorted - fromtimestamp() and utcfromtimestamp() methods in the datetime module - were also protected. Closes bugs #919012 and 975996. - -- fcntl.ioctl now warns if the mutate flag is not specified. - -- nt now properly allows to refer to UNC roots, e.g. in nt.stat(). - -- the weakref module now supports additional objects: array.array, - sre.pattern_objects, file objects, and sockets. - -- operator.isMappingType() and operator.isSequenceType() now give - fewer false positives. - -- socket.sslerror is now a subclass of socket.error . Also added - socket.error to the socket module's C API. - -- Bug #920575: A problem where the _locale module segfaults on - nl_langinfo(ERA) caused by GNU libc's illegal NULL return is fixed. - -- array objects now support the copy module. Also, their resizing - scheme has been updated to match that used for list objects. This improves - the performance (speed and memory usage) of append() operations. - Also, array.array() and array.extend() now accept any iterable argument - for repeated appends without needing to create another temporary array. - -- cStringIO.writelines() now accepts any iterable argument and writes - the lines one at a time rather than joining them and writing once. - Made a parallel change to StringIO.writelines(). Saves memory and - makes suitable for use with generator expressions. - -- time.strftime() now checks that the values in its time tuple argument - are within the proper boundaries to prevent possible crashes from the - platform's C library implementation of strftime(). Can possibly - break code that uses values outside the range that didn't cause - problems previously (such as sitting day of year to 0). Fixes bug - #897625. - -- The socket module now supports Bluetooth sockets, if the - system has - -- Added a collections module containing a new datatype, deque(), - offering high-performance, thread-safe, memory friendly appends - and pops on either side of the deque. - -- Several modules now take advantage of collections.deque() for - improved performance: Queue, mutex, shlex, threading, and pydoc. - -- The operator module has two new functions, attrgetter() and - itemgetter() which are useful for creating fast data extractor - functions for map(), list.sort(), itertools.groupby(), and - other functions that expect a function argument. - -- socket.SHUT_{RD,WR,RDWR} was added. - -- os.getsid was added. - -- The pwd module incorrectly advertised its struct type as - struct_pwent; this has been renamed to struct_passwd. (The old name - is still supported for backwards compatibility.) - -- The xml.parsers.expat module now provides Expat 1.95.7. - -- socket.IPPROTO_IPV6 was added. - -- readline.clear_history was added. - -- select.select() now accepts sequences for its first three arguments. - -- cStringIO now supports the f.closed attribute. - -- The signal module now exposes SIGRTMIN and SIGRTMAX (if available). - -- curses module now supports use_default_colors(). [patch #739124] - -- Bug #811028: ncurses.h breakage on FreeBSD/MacOS X - -- Bug #814613: INET_ADDRSTRLEN fix needed for all compilers on SGI - -- Implemented non-recursive SRE matching scheme (#757624). - -- Implemented (?(id/name)yes|no) support in SRE (#572936). - -- random.seed() with no arguments or None uses time.time() as a default - seed. Modified to match Py2.2 behavior and use fractional seconds so - that successive runs are more likely to produce different sequences. - -- random.Random has a new method, getrandbits(k), which returns an int - with k random bits. This method is now an optional part of the API - for user defined generators. Any generator that defines genrandbits() - can now use randrange() for ranges with a length >= 2**53. Formerly, - randrange would return only even numbers for ranges that large (see - SF bug #812202). Generators that do not define genrandbits() now - issue a warning when randrange() is called with a range that large. - -- itertools has a new function, groupby() for aggregating iterables - into groups sharing the same key (as determined by a key function). - It offers some of functionality of SQL's groupby keyword and of - the Unix uniq filter. - -- itertools now has a new tee() function which produces two independent - iterators from a single iterable. - -- itertools.izip() with no arguments now returns an empty iterator instead - of raising a TypeError exception. - -- Fixed #853061: allow BZ2Compressor.compress() to receive an empty string - as parameter. - -Library -------- - -- Added a new module: cProfile, a C profiler with the same interface as the - profile module. cProfile avoids some of the drawbacks of the hotshot - profiler and provides a bit more information than the other two profilers. - Based on "lsprof" (patch #1212837). - -- Bug #1266283: The new function "lexists" is now in os.path.__all__. - -- Bug #981530: Fix UnboundLocalError in shutil.rmtree(). This affects - the documented behavior: the function passed to the onerror() - handler can now also be os.listdir. - -- Bug #754449: threading.Thread objects no longer mask exceptions raised during - interpreter shutdown with another exception from attempting to handle the - original exception. - -- Added decimal.py per PEP 327. - -- Bug #981299: rsync is now a recognized protocol in urlparse that uses a - "netloc" portion of a URL. - -- Bug #919012: shutil.move() will not try to move a directory into itself. - Thanks Johannes Gijsbers. - -- Bug #934282: pydoc.stripid() is now case-insensitive. Thanks Robin Becker. - -- Bug #823209: cmath.log() now takes an optional base argument so that its - API matches math.log(). - -- Bug #957381: distutils bdist_rpm no longer fails on recent RPM versions - that generate a -debuginfo.rpm - -- os.path.devnull has been added for all supported platforms. - -- Fixed #877165: distutils now picks the right C++ compiler command - on cygwin and mingw32. - -- urllib.urlopen().readline() now handles HTTP/0.9 correctly. - -- refactored site.py into functions. Also wrote regression tests for the - module. - -- The distutils install command now supports the --home option and - installation scheme for all platforms. - -- asyncore.loop now has a repeat count parameter that defaults to - looping forever. - -- The distutils sdist command now ignores all .svn directories, in - addition to CVS and RCS directories. .svn directories hold - administrative files for the Subversion source control system. - -- Added a new module: cookielib. Automatic cookie handling for HTTP - clients. Also, support for cookielib has been added to urllib2, so - urllib2.urlopen() can transparently handle cookies. - -- stringprep.py now uses built-in set() instead of sets.Set(). - -- Bug #876278: Unbounded recursion in modulefinder - -- Bug #780300: Swap public and system ID in LexicalHandler.startDTD. - Applications relying on the wrong order need to be corrected. - -- Bug #926075: Fixed a bug that returns a wrong pattern object - for a string or unicode object in sre.compile() when a different - type pattern with the same value exists. - -- Added countcallers arg to trace.Trace class (--trackcalls command line arg - when run from the command prompt). - -- Fixed a caching bug in platform.platform() where the argument of 'terse' was - not taken into consideration when caching value. - -- Added two new command-line arguments for profile (output file and - default sort). - -- Added global runctx function to profile module - -- Add hlist missing entryconfigure and entrycget methods. - -- The ptcp154 codec was added for Kazakh character set support. - -- Support non-anonymous ftp URLs in urllib2. - -- The encodings package will now apply codec name aliases - first before starting to try the import of the codec module. - This simplifies overriding built-in codecs with external - packages, e.g. the included CJK codecs with the JapaneseCodecs - package, by adjusting the aliases dictionary in encodings.aliases - accordingly. - -- base64 now supports RFC 3548 Base16, Base32, and Base64 encoding and - decoding standards. - -- urllib2 now supports processors. A processor is a handler that - implements an xxx_request or xxx_response method. These methods are - called for all requests. - -- distutils compilers now compile source files in the same order as - they are passed to the compiler. - -- pprint.pprint() and pprint.pformat() now have additional parameters - indent, width and depth. - -- Patch #750542: pprint now will pretty print subclasses of list, tuple - and dict too, as long as they don't overwrite __repr__(). - -- Bug #848614: distutils' msvccompiler fails to find the MSVC6 - compiler because of incomplete registry entries. - -- httplib.HTTP.putrequest now offers to omit the implicit Accept-Encoding. - -- Patch #841977: modulefinder didn't find extension modules in packages - -- imaplib.IMAP4.thread was added. - -- Plugged a minor hole in tempfile.mktemp() due to the use of - os.path.exists(), switched to using os.lstat() directly if possible. - -- bisect.py and heapq.py now have underlying C implementations - for better performance. - -- heapq.py has two new functions, nsmallest() and nlargest(). - -- traceback.format_exc has been added (similar to print_exc but it returns - a string). - -- xmlrpclib.MultiCall has been added. - -- poplib.POP3_SSL has been added. - -- tmpfile.mkstemp now returns an absolute path even if dir is relative. - -- urlparse is RFC 2396 compliant. - -- The fieldnames argument to the csv module's DictReader constructor is now - optional. If omitted, the first row of the file will be used as the - list of fieldnames. - -- encodings.bz2_codec was added for access to bz2 compression - using "a long string".encode('bz2') - -- Various improvements to unittest.py, realigned with PyUnit CVS. - -- dircache now passes exceptions to the caller, instead of returning - empty lists. - -- The bsddb module and dbhash module now support the iterator and - mapping protocols which make them more substitutable for dictionaries - and shelves. - -- The csv module's DictReader and DictWriter classes now accept keyword - arguments. This was an omission in the initial implementation. - -- The email package handles some RFC 2231 parameters with missing - CHARSET fields better. It also includes a patch to parameter - parsing when semicolons appear inside quotes. - -- sets.py now runs under Py2.2. In addition, the argument restrictions - for most set methods (but not the operators) have been relaxed to - allow any iterable. - -- _strptime.py now has a behind-the-scenes caching mechanism for the most - recent TimeRE instance used along with the last five unique directive - patterns. The overall module was also made more thread-safe. - -- random.cunifvariate() and random.stdgamma() were deprecated in Py2.3 - and removed in Py2.4. - -- Bug #823328: urllib2.py's HTTP Digest Auth support works again. - -- Patch #873597: CJK codecs are imported into rank of default codecs. - -Tools/Demos ------------ - -- A hotshotmain script was added to the Tools/scripts directory that - makes it easy to run a script under control of the hotshot profiler. - -- The db2pickle and pickle2db scripts can now dump/load gdbm files. - -- The file order on the command line of the pickle2db script was reversed. - It is now [ picklefile ] dbfile. This provides better symmetry with - db2pickle. The file arguments to both scripts are now source followed by - destination in situations where both files are given. - -- The pydoc script will display a link to the module documentation for - modules determined to be part of the core distribution. The documentation - base directory defaults to http://www.python.org/doc/current/lib/ but can - be changed by setting the PYTHONDOCS environment variable. - -- texcheck.py now detects double word errors. - -- md5sum.py mistakenly opened input files in text mode by default, a - silent and dangerous change from previous releases. It once again - opens input files in binary mode by default. The -t and -b flags - remain for compatibility with the 2.3 release, but -b is the default - now. - -- py-electric-colon now works when pending-delete/delete-selection mode is - in effect - -- py-help-at-point is no longer bound to the F1 key - it's still bound to - C-c C-h - -- Pynche was fixed to not crash when there is no ~/.pynche file and no - -d option was given. - -Build ------ - -- Bug #978645: Modules/getpath.c now builds properly in --disable-framework - build under OS X. - -- Profiling using gprof is now available if Python is configured with - --enable-profiling. - -- Profiling the VM using the Pentium TSC is now possible if Python - is configured --with-tsc. - -- In order to find libraries, setup.py now also looks in /lib64, for use - on AMD64. - -- Bug #934635: Fixed a bug where the configure script couldn't detect - getaddrinfo() properly if the KAME stack had SCTP support. - -- Support for missing ANSI C header files (limits.h, stddef.h, etc) was - removed. - -- Systems requiring the D4, D6 or D7 variants of pthreads are no longer - supported (see PEP 11). - -- Universal newline support can no longer be disabled (see PEP 11). - -- Support for DGUX, SunOS 4, IRIX 4 and Minix was removed (see PEP 11). - -- Support for systems requiring --with-dl-dld or --with-sgi-dl was removed - (see PEP 11). - -- Tests for sizeof(char) were removed since ANSI C mandates that - sizeof(char) must be 1. - -C API ------ - -- Thanks to Anthony Tuininga, the datetime module now supplies a C API - containing type-check macros and constructors. See new docs in the - Python/C API Reference Manual for details. - -- Private function _PyTime_DoubleToTimet added, to convert a Python - timestamp (C double) to platform time_t with some out-of-bounds - checking. Declared in new header file timefuncs.h. It would be - good to expose some other internal timemodule.c functions there. - -- New public functions PyEval_EvaluateFrame and PyGen_New to expose - generator objects. - -- New public functions Py_IncRef() and Py_DecRef(), exposing the - functionality of the Py_XINCREF() and Py_XDECREF macros. Useful for - runtime dynamic embedding of Python. See patch #938302, by Bob - Ippolito. - -- Added a new macro, PySequence_Fast_ITEMS, which retrieves a fast sequence's - underlying array of PyObject pointers. Useful for high speed looping. - -- Created a new method flag, METH_COEXIST, which causes a method to be loaded - even if already defined by a slot wrapper. This allows a __contains__ - method, for example, to co-exist with a defined sq_contains slot. This - is helpful because the PyCFunction can take advantage of optimized calls - whenever METH_O or METH_NOARGS flags are defined. - -- Added a new function, PyDict_Contains(d, k) which is like - PySequence_Contains() but is specific to dictionaries and executes - about 10% faster. - -- Added three new macros: Py_RETURN_NONE, Py_RETURN_TRUE, and Py_RETURN_FALSE. - Each return the singleton they mention after Py_INCREF()ing them. - -- Added a new function, PyTuple_Pack(n, ...) for constructing tuples from a - variable length argument list of Python objects without having to invoke - the more complex machinery of Py_BuildValue(). PyTuple_Pack(3, a, b, c) - is equivalent to Py_BuildValue("(OOO)", a, b, c). - -Windows -------- - -- The _winreg module could segfault when reading very large registry - values, due to unchecked alloca() calls (SF bug 851056). The fix is - uses either PyMem_Malloc(n) or PyString_FromStringAndSize(NULL, n), - as appropriate, followed by a size check. - -- file.truncate() could misbehave if the file was open for update - (modes r+, rb+, w+, wb+), and the most recent file operation before - the truncate() call was an input operation. SF bug 801631. - - -What's New in Python 2.3 final? -=============================== - -*Release date: 29-Jul-2003* - -IDLE ----- - -- Bug 778400: IDLE hangs when selecting "Edit with IDLE" from explorer. - This was unique to Windows, and was fixed by adding an -n switch to - the command the Windows installer creates to execute "Edit with IDLE" - context-menu actions. - -- IDLE displays a new message upon startup: some "personal firewall" - kinds of programs (for example, ZoneAlarm) open a dialog of their - own when any program opens a socket. IDLE does use sockets, talking - on the computer's internal loopback interface. This connection is not - visible on any external interface and no data is sent to or received - from the Internet. So, if you get such a dialog when opening IDLE, - asking whether to let pythonw.exe talk to address 127.0.0.1, say yes, - and rest assured no communication external to your machine is taking - place. If you don't allow it, IDLE won't be able to start. - - -What's New in Python 2.3 release candidate 2? -============================================= - -*Release date: 24-Jul-2003* - -Core and builtins ------------------ - -- It is now possible to import from zipfiles containing additional - data bytes before the zip compatible archive. Zipfiles containing a - comment at the end are still unsupported. - -Extension modules ------------------ - -- A longstanding bug in the parser module's initialization could cause - fatal internal refcount confusion when the module got initialized more - than once. This has been fixed. - -- Fixed memory leak in pyexpat; using the parser's ParseFile() method - with open files that aren't instances of the standard file type - caused an instance of the bound .read() method to be leaked on every - call. - -- Fixed some leaks in the locale module. - -Library -------- - -- Lib/encodings/rot_13.py when used as a script, now more properly - uses the first Python interpreter on your path. - -- Removed caching of TimeRE (and thus LocaleTime) in _strptime.py to - fix a locale related bug in the test suite. Although another patch - was needed to actually fix the problem, the cache code was not - restored. - -IDLE ----- - -- Calltips patches. - -Build ------ - -- For MacOSX, added -mno-fused-madd to BASECFLAGS to fix test_coercion - on Panther (OSX 10.3). - -C API ------ - -Windows -------- - -- The tempfile module could do insane imports on Windows if PYTHONCASEOK - was set, making temp file creation impossible. Repaired. - -- Add a patch to workaround pthread_sigmask() bugs in Cygwin. - -Mac ---- - -- Various fixes to pimp. - -- Scripts runs with pythonw no longer had full window manager access. - -- Don't force boot-disk-only install, for reasons unknown it causes - more problems than it solves. - - -What's New in Python 2.3 release candidate 1? -============================================= - -*Release date: 18-Jul-2003* - -Core and builtins ------------------ - -- The new function sys.getcheckinterval() returns the last value set - by sys.setcheckinterval(). - -- Several bugs in the symbol table phase of the compiler have been - fixed. Errors could be lost and compilation could fail without - reporting an error. SF patch 763201. - -- The interpreter is now more robust about importing the warnings - module. In an executable generated by freeze or similar programs, - earlier versions of 2.3 would fail if the warnings module could - not be found on the file system. Fixes SF bug 771097. - -- A warning about assignments to module attributes that shadow - builtins, present in earlier releases of 2.3, has been removed. - -- It is not possible to create subclasses of builtin types like str - and tuple that define an itemsize. Earlier releases of Python 2.3 - allowed this by mistake, leading to crashes and other problems. - -- The thread_id is now initialized to 0 in a non-thread build. SF bug - 770247. - -- SF bug 762891: "del p[key]" on proxy object no longer raises SystemError. - -Extension modules ------------------ - -- weakref.proxy() can now handle "del obj[i]" for proxy objects - defining __delitem__. Formerly, it generated a SystemError. - -- SSL no longer crashes the interpreter when the remote side disconnects. - -- On Unix the mmap module can again be used to map device files. - -- time.strptime now exclusively uses the Python implementation - contained within the _strptime module. - -- The print slot of weakref proxy objects was removed, because it was - not consistent with the object's repr slot. - -- The mmap module only checks file size for regular files, not - character or block devices. SF patch 708374. - -- The cPickle Pickler garbage collection support was fixed to traverse - the find_class attribute, if present. - -- There are several fixes for the bsddb3 wrapper module. - - bsddb3 no longer crashes if an environment is closed before a cursor - (SF bug 763298). - - The DB and DBEnv set_get_returns_none function was extended to take - a level instead of a boolean flag. The new level 2 means that in - addition, cursor.set()/.get() methods return None instead of raising - an exception. - - A typo was fixed in DBCursor.join_item(), preventing a crash. - -Library -------- - -- distutils now supports MSVC 7.1 - -- doctest now examines all docstrings by default. Previously, it would - skip over functions with private names (as indicated by the underscore - naming convention). The old default created too much of a risk that - user tests were being skipped inadvertently. Note, this change could - break code in the unlikely case that someone had intentionally put - failing tests in the docstrings of private functions. The breakage - is easily fixable by specifying the old behavior when calling testmod() - or Tester(). - -- There were several fixes to the way dumbdbms are closed. It's vital - that a dumbdbm database be closed properly, else the on-disk data - and directory files can be left in mutually inconsistent states. - dumbdbm.py's _Database.__del__() method attempted to close the - database properly, but a shutdown race in _Database._commit() could - prevent this from working, so that a program trusting __del__() to - get the on-disk files in synch could be badly surprised. The race - has been repaired. A sync() method was also added so that shelve - can guarantee data is written to disk. - - The close() method can now be called more than once without complaint. - -- The classes in threading.py are now new-style classes. That they - weren't before was an oversight. - -- The urllib2 digest authentication handlers now define the correct - auth_header. The earlier versions would fail at runtime. - -- SF bug 763023: fix uncaught ZeroDivisionError in difflib ratio methods - when there are no lines. - -- SF bug 763637: fix exception in Tkinter with after_cancel - which could occur with Tk 8.4 - -- SF bug 770601: CGIHTTPServer.py now passes the entire environment - to child processes. - -- SF bug 765238: add filter to fnmatch's __all__. - -- SF bug 748201: make time.strptime() error messages more helpful. - -- SF patch 764470: Do not dump the args attribute of a Fault object in - xmlrpclib. - -- SF patch 549151: urllib and urllib2 now redirect POSTs on 301 - responses. - -- SF patch 766650: The whichdb module was fixed to recognize dbm files - generated by gdbm on OS/2 EMX. - -- SF bugs 763047 and 763052: fixes bug of timezone value being left as - -1 when ``time.tzname[0] == time.tzname[1] and not time.daylight`` - is true when it should only when time.daylight is true. - -- SF bug 764548: re now allows subclasses of str and unicode to be - used as patterns. - -- SF bug 763637: In Tkinter, change after_cancel() to handle tuples - of varying sizes. Tk 8.4 returns a different number of values - than Tk 8.3. - -- SF bug 763023: difflib.ratio() did not catch zero division. - -- The Queue module now has an __all__ attribute. - -Tools/Demos ------------ - -- See Lib/idlelib/NEWS.txt for IDLE news. - -- SF bug 753592: webchecker/wsgui now handles user supplied directories. - -- The trace.py script has been removed. It is now in the standard library. - -Build ------ - -- Python now compiles with -fno-strict-aliasing if possible (SF bug 766696). - -- The socket module compiles on IRIX 6.5.10. - -- An irix64 system is treated the same way as an irix6 system (SF - patch 764560). - -- Several definitions were missing on FreeBSD 5.x unless the - __BSD_VISIBLE symbol was defined. configure now defines it as - needed. - -C API ------ - -- Unicode objects now support mbcs as a built-in encoding, so the C - API can use it without deferring to the encodings package. - -Windows -------- - -- The Windows implementation of PyThread_start_new_thread() never - checked error returns from Windows functions correctly. As a result, - it could claim to start a new thread even when the Microsoft - _beginthread() function failed (due to "too many threads" -- this is - on the order of thousands when it happens). In these cases, the - Python exception :: - - thread.error: can't start new thread - - is raised now. - -- SF bug 766669: Prevent a GPF on interpreter exit when sockets are in - use. The interpreter now calls WSACleanup() from Py_Finalize() - instead of from DLL teardown. - -Mac ---- - -- Bundlebuilder now inherits default values in the right way. It was - previously possible for app bundles to get a type of "BNDL" instead - of "APPL." Other improvements include, a --build-id option to - specify the CFBundleIdentifier and using the --python option to set - the executable in the bundle. - -- Fixed two bugs in MacOSX framework handling. - -- pythonw did not allow user interaction in 2.3rc1, this has been fixed. - -- Python is now compiled with -mno-fused-madd, making all tests pass - on Panther. - -What's New in Python 2.3 beta 2? -================================ - -*Release date: 29-Jun-2003* - -Core and builtins ------------------ - -- A program can now set the environment variable PYTHONINSPECT to some - string value in Python, and cause the interpreter to enter the - interactive prompt at program exit, as if Python had been invoked - with the -i option. - -- list.index() now accepts optional start and stop arguments. Similar - changes were made to UserList.index(). SF feature request 754014. - -- SF patch 751998 fixes an unwanted side effect of the previous fix - for SF bug 742860 (the next item). - -- SF bug 742860: "WeakKeyDictionary __delitem__ uses iterkeys". This - wasn't threadsafe, was very inefficient (expected time O(len(dict)) - instead of O(1)), and could raise a spurious RuntimeError if another - thread mutated the dict during __delitem__, or if a comparison function - mutated it. It also neglected to raise KeyError when the key wasn't - present; didn't raise TypeError when the key wasn't of a weakly - referencable type; and broke various more-or-less obscure dict - invariants by using a sequence of equality comparisons over the whole - set of dict keys instead of computing the key's hash code to narrow - the search to those keys with the same hash code. All of these are - considered to be bugs. A new implementation of __delitem__ repairs all - that, but note that fixing these bugs may change visible behavior in - code relying (whether intentionally or accidentally) on old behavior. - -- SF bug 734869: Fixed a compiler bug that caused a fatal error when - compiling a list comprehension that contained another list comprehension - embedded in a lambda expression. - -- SF bug 705231: builtin pow() no longer lets the platform C pow() - raise -1.0 to integer powers, because (at least) glibc gets it wrong - in some cases. The result should be -1.0 if the power is odd and 1.0 - if the power is even, and any float with a sufficiently large exponent - is (mathematically) an exact even integer. - -- SF bug 759227: A new-style class that implements __nonzero__() must - return a bool or int (but not an int subclass) from that method. This - matches the restriction on classic classes. - -- The encoding attribute has been added for file objects, and set to - the terminal encoding on Unix and Windows. - -- The softspace attribute of file objects became read-only by oversight. - It's writable again. - -- Reverted a 2.3 beta 1 change to iterators for subclasses of list and - tuple. By default, the iterators now access data elements directly - instead of going through __getitem__. If __getitem__ access is - preferred, then __iter__ can be overridden. - -- SF bug 735247: The staticmethod and super types participate in - garbage collection. Before this change, it was possible for leaks to - occur in functions with non-global free variables that used these types. - -Extension modules ------------------ - -- the socket module has a new exception, socket.timeout, to allow - timeouts to be handled separately from other socket errors. - -- SF bug 751276: cPickle has fixed to propagate exceptions raised in - user code. In earlier versions, cPickle caught and ignored any - exception when it performed operations that it expected to raise - specific exceptions like AttributeError. - -- cPickle Pickler and Unpickler objects now participate in garbage - collection. - -- mimetools.choose_boundary() could return duplicate strings at times, - especially likely on Windows. The strings returned are now guaranteed - unique within a single program run. - -- thread.interrupt_main() raises KeyboardInterrupt in the main thread. - dummy_thread has also been modified to try to simulate the behavior. - -- array.array.insert() now treats negative indices as being relative - to the end of the array, just like list.insert() does. (SF bug #739313) - -- The datetime module classes datetime, time, and timedelta are now - properly subclassable. - -- _tkinter.{get|set}busywaitinterval was added. - -- itertools.islice() now accepts stop=None as documented. - Fixes SF bug #730685. - -- the bsddb185 module is built in one restricted instance - - /usr/include/db.h exists and defines HASHVERSION to be 2. This is true - for many BSD-derived systems. - - -Library -------- - -- Some happy doctest extensions from Jim Fulton have been added to - doctest.py. These are already being used in Zope3. The two - primary ones: - - doctest.debug(module, name) extracts the doctests from the named object - in the given module, puts them in a temp file, and starts pdb running - on that file. This is great when a doctest fails. - - doctest.DocTestSuite(module=None) returns a synthesized unittest - TestSuite instance, to be run by the unittest framework, which - runs all the doctests in the module. This allows writing tests in - doctest style (which can be clearer and shorter than writing tests - in unittest style), without losing unittest's powerful testing - framework features (which doctest lacks). - -- For compatibility with doctests created before 2.3, if an expected - output block consists solely of "1" and the actual output block - consists solely of "True", it's accepted as a match; similarly - for "0" and "False". This is quite un-doctest-like, but is practical. - The behavior can be disabled by passing the new doctest module - constant DONT_ACCEPT_TRUE_FOR_1 to the new optionflags optional - argument. - -- ZipFile.testzip() now only traps BadZipfile exceptions. Previously, - a bare except caught to much and reported all errors as a problem - in the archive. - -- The logging module now has a new function, makeLogRecord() making - LogHandler easier to interact with DatagramHandler and SocketHandler. - -- The cgitb module has been extended to support plain text display (SF patch - 569574). - -- A brand new version of IDLE (from the IDLEfork project at - SourceForge) is now included as Lib/idlelib. The old Tools/idle is - no more. - -- Added a new module: trace (documentation missing). This module used - to be distributed in Tools/scripts. It uses sys.settrace() to trace - code execution -- either function calls or individual lines. It can - generate tracing output during execution or a post-mortem report of - code coverage. - -- The threading module has new functions settrace() and setprofile() - that cooperate with the functions of the same name in the sys - module. A function registered with the threading module will - be used for all threads it creates. The new trace module uses this - to provide tracing for code running in threads. - -- copy.py: applied SF patch 707900, fixing bug 702858, by Steven - Taschuk. Copying a new-style class that had a reference to itself - didn't work. (The same thing worked fine for old-style classes.) - Builtin functions are now treated as atomic, fixing bug #746304. - -- difflib.py has two new functions: context_diff() and unified_diff(). - -- More fixes to urllib (SF 549151): (a) When redirecting, always use - GET. This is common practice and more-or-less sanctioned by the - HTTP standard. (b) Add a handler for 307 redirection, which becomes - an error for POST, but a regular redirect for GET and HEAD - -- Added optional 'onerror' argument to os.walk(), to control error - handling. - -- inspect.is{method|data}descriptor was added, to allow pydoc display - __doc__ of data descriptors. - -- Fixed socket speed loss caused by use of the _socketobject wrapper class - in socket.py. - -- timeit.py now checks the current directory for imports. - -- urllib2.py now knows how to order proxy classes, so the user doesn't - have to insert it in front of other classes, nor do dirty tricks like - inserting a "dummy" HTTPHandler after a ProxyHandler when building an - opener with proxy support. - -- Iterators have been added for dbm keys. - -- random.Random objects can now be pickled. - -Tools/Demos ------------ - -- pydoc now offers help on keywords and topics. - -- Tools/idle is gone; long live Lib/idlelib. - -- diff.py prints file diffs in context, unified, or ndiff formats, - providing a command line interface to difflib.py. - -- texcheck.py is a new script for making a rough validation of Python LaTeX - files. - -Build ------ - -- Setting DESTDIR during 'make install' now allows specifying a - different root directory. - -C API ------ - -- PyType_Ready(): If a type declares that it participates in gc - (Py_TPFLAGS_HAVE_GC), and its base class does not, and its base class's - tp_free slot is the default _PyObject_Del, and type does not define - a tp_free slot itself, _PyObject_GC_Del is assigned to type->tp_free. - Previously _PyObject_Del was inherited, which could at best lead to a - segfault. In addition, if even after this magic the type's tp_free - slot is _PyObject_Del or NULL, and the type is a base type - (Py_TPFLAGS_BASETYPE), TypeError is raised: since the type is a base - type, its dealloc function must call type->tp_free, and since the type - is gc'able, tp_free must not be NULL or _PyObject_Del. - -- PyThreadState_SetAsyncExc(): A new API (deliberately accessible only - from C) to interrupt a thread by sending it an exception. It is - intentional that you have to write your own C extension to call it - from Python. - - -New platforms -------------- - -None this time. - -Tests ------ - -- test_imp rewritten so that it doesn't raise RuntimeError if run as a - side effect of being imported ("import test.autotest"). - -Windows -------- - -- The Windows installer ships with Tcl/Tk 8.4.3 (upgraded from 8.4.1). - -- The installer always suggested that Python be installed on the C: - drive, due to a hardcoded "C:" generated by the Wise installation - wizard. People with machines where C: is not the system drive - usually want Python installed on whichever drive is their system drive - instead. We removed the hardcoded "C:", and two testers on machines - where C: is not the system drive report that the installer now - suggests their system drive. Note that you can always select the - directory you want in the "Select Destination Directory" dialog -- - that's what it's for. - -Mac ---- - -- There's a new module called "autoGIL", which offers a mechanism to - automatically release the Global Interpreter Lock when an event loop - goes to sleep, allowing other threads to run. It's currently only - supported on OSX, in the Mach-O version. -- The OSA modules now allow direct access to properties of the - toplevel application class (in AppleScript terminology). -- The Package Manager can now update itself. - -SourceForge Bugs and Patches Applied ------------------------------------- - -430160, 471893, 501716, 542562, 549151, 569574, 595837, 596434, -598163, 604210, 604716, 610332, 612627, 614770, 620190, 621891, -622042, 639139, 640236, 644345, 649742, 649742, 658233, 660022, -661318, 661676, 662807, 662923, 666219, 672855, 678325, 682347, -683486, 684981, 685773, 686254, 692776, 692959, 693094, 696777, -697989, 700827, 703666, 708495, 708604, 708901, 710733, 711902, -713722, 715782, 718286, 719359, 719367, 723136, 723831, 723962, -724588, 724767, 724767, 725942, 726150, 726446, 726869, 727051, -727719, 727719, 727805, 728277, 728563, 728656, 729096, 729103, -729293, 729297, 729300, 729317, 729395, 729622, 729817, 730170, -730296, 730594, 730685, 730826, 730963, 731209, 731403, 731504, -731514, 731626, 731635, 731643, 731644, 731644, 731689, 732124, -732143, 732234, 732284, 732284, 732479, 732761, 732783, 732951, -733667, 733781, 734118, 734231, 734869, 735051, 735293, 735527, -735613, 735694, 736962, 736962, 737970, 738066, 739313, 740055, -740234, 740301, 741806, 742126, 742741, 742860, 742860, 742911, -744041, 744104, 744238, 744687, 744877, 745055, 745478, 745525, -745620, 746012, 746304, 746366, 746801, 746953, 747348, 747667, -747954, 748846, 748849, 748973, 748975, 749191, 749210, 749759, -749831, 749911, 750008, 750092, 750542, 750595, 751038, 751107, -751276, 751451, 751916, 751941, 751956, 751998, 752671, 753451, -753602, 753617, 753845, 753925, 754014, 754340, 754447, 755031, -755087, 755147, 755245, 755683, 755987, 756032, 756996, 757058, -757229, 757818, 757821, 757822, 758112, 758910, 759227, 759889, -760257, 760703, 760792, 761104, 761337, 761519, 761830, 762455 - - -What's New in Python 2.3 beta 1? -================================ - -*Release date: 25-Apr-2003* - -Core and builtins ------------------ - -- New format codes B, H, I, k and K have been implemented for - PyArg_ParseTuple and PyBuild_Value. - -- New builtin function sum(seq, start=0) returns the sum of all the - items in iterable object seq, plus start (items are normally numbers, - and cannot be strings). - -- bool() called without arguments now returns False rather than - raising an exception. This is consistent with calling the - constructors for the other builtin types -- called without argument - they all return the false value of that type. (SF patch #724135) - -- In support of PEP 269 (making the pgen parser generator accessible - from Python), some changes to the pgen code structure were made; a - few files that used to be linked only with pgen are now linked with - Python itself. - -- The repr() of a weakref object now shows the __name__ attribute of - the referenced object, if it has one. - -- super() no longer ignores data descriptors, except __class__. See - the thread started at - http://mail.python.org/pipermail/python-dev/2003-April/034338.html - -- list.insert(i, x) now interprets negative i as it would be - interpreted by slicing, so negative values count from the end of the - list. This was the only place where such an interpretation was not - placed on a list index. - -- range() now works even if the arguments are longs with magnitude - larger than sys.maxint, as long as the total length of the sequence - fits. E.g., range(2**100, 2**101, 2**100) is the following list: - [1267650600228229401496703205376L]. (SF patch #707427.) - -- Some horridly obscure problems were fixed involving interaction - between garbage collection and old-style classes with "ambitious" - getattr hooks. If an old-style instance didn't have a __del__ method, - but did have a __getattr__ hook, and the instance became reachable - only from an unreachable cycle, and the hook resurrected or deleted - unreachable objects when asked to resolve "__del__", anything up to - a segfault could happen. That's been repaired. - -- dict.pop now takes an optional argument specifying a default - value to return if the key is not in the dict. If a default is not - given and the key is not found, a KeyError will still be raised. - Parallel changes were made to UserDict.UserDict and UserDict.DictMixin. - [SF patch #693753] (contributed by Michael Stone.) - -- sys.getfilesystemencoding() was added to expose - Py_FileSystemDefaultEncoding. - -- New function sys.exc_clear() clears the current exception. This is - rarely needed, but can sometimes be useful to release objects - referenced by the traceback held in sys.exc_info()[2]. (SF patch - #693195.) - -- On 64-bit systems, a dictionary could contain duplicate long/int keys - if the key value was larger than 2**32. See SF bug #689659. - -- Fixed SF bug #663074. The codec system was using global static - variables to store internal data. As a result, any attempts to use the - unicode system with multiple active interpreters, or successive - interpreter executions, would fail. - -- "%c" % u"a" now returns a unicode string instead of raising a - TypeError. u"%c" % 0xffffffff now raises a OverflowError instead - of a ValueError to be consistent with "%c" % 256. See SF patch #710127. - -Extension modules ------------------ - -- The socket module now provides the functions inet_pton and inet_ntop - for converting between string and packed representation of IP - addresses. There is also a new module variable, has_ipv6, which is - True iff the current Python has IPv6 support. See SF patch #658327. - -- Tkinter wrappers around Tcl variables now pass objects directly - to Tcl, instead of first converting them to strings. - -- The .*? pattern in the re module is now special-cased to avoid the - recursion limit. (SF patch #720991 -- many thanks to Gary Herron - and Greg Chapman.) - -- New function sys.call_tracing() allows pdb to debug code - recursively. - -- New function gc.get_referents(obj) returns a list of objects - directly referenced by obj. In effect, it exposes what the object's - tp_traverse slot does, and can be helpful when debugging memory - leaks. - -- The iconv module has been removed from this release. - -- The platform-independent routines for packing floats in IEEE formats - (struct.pack's f, d codes; pickle and cPickle's protocol 1 - pickling of floats) ignored that rounding can cause a carry to - propagate. The worst consequence was that, in rare cases, f - could produce strings that, when unpacked again, were a factor of 2 - away from the original float. This has been fixed. See SF bug - #705836. - -- New function time.tzset() provides access to the C library tzset() - function, if supported. (SF patch #675422.) - -- Using createfilehandler, deletefilehandler, createtimerhandler functions - on Tkinter.tkinter (_tkinter module) no longer crashes the interpreter. - See SF bug #692416. - -- Modified the fcntl.ioctl() function to allow modification of a passed - mutable buffer (for details see the reference documentation). - -- Made user requested changes to the itertools module. - Subsumed the times() function into repeat(). - Added chain() and cycle(). - -- The rotor module is now deprecated; the encryption algorithm it uses - is not believed to be secure, and including crypto code with Python - has implications for exporting and importing it in various countries. - -- The socket module now always uses the _socketobject wrapper class, even on - platforms which have dup(2). The makefile() method is built directly - on top of the socket without duplicating the file descriptor, allowing - timeouts to work properly. - -Library -------- - -- New generator function os.walk() is an easy-to-use alternative to - os.path.walk(). See os module docs for details. os.path.walk() - isn't deprecated at this time, but may become deprecated in a - future release. - -- Added new module "platform" which provides a wide range of tools - for querying platform dependent features. - -- netrc now allows ASCII punctuation characters in passwords. - -- shelve now supports the optional writeback argument, and exposes - pickle protocol versions. - -- Several methods of nntplib.NNTP have grown an optional file argument - which specifies a file where to divert the command's output - (already supported by the body() method). (SF patch #720468) - -- The self-documenting XML server library DocXMLRPCServer was added. - -- Support for internationalized domain names has been added through - the 'idna' and 'punycode' encodings, the 'stringprep' module, the - 'mkstringprep' tool, and enhancements to the socket and httplib - modules. - -- htmlentitydefs has two new dictionaries: name2codepoint maps - HTML entity names to Unicode codepoints (as integers). - codepoint2name is the reverse mapping. See SF patch #722017. - -- pdb has a new command, "debug", which lets you step through - arbitrary code from the debugger's (pdb) prompt. - -- unittest.failUnlessEqual and its equivalent unittest.assertEqual now - return 'not a == b' rather than 'a != b'. This gives the desired - result for classes that define __eq__ without defining __ne__. - -- sgmllib now supports SGML marked sections, in particular the - MS Office extensions. - -- The urllib module now offers support for the iterator protocol. - SF patch 698520 contributed by Brett Cannon. - -- New module timeit provides a simple framework for timing the - execution speed of expressions and statements. - -- sets.Set objects now support mixed-type __eq__ and __ne__, instead - of raising TypeError. If x is a Set object and y is a non-Set object, - x == y is False, and x != y is True. This is akin to the change made - for mixed-type comparisons of datetime objects in 2.3a2; more info - about the rationale is in the NEWS entry for that. See also SF bug - report . - -- On Unix platforms, if os.listdir() is called with a Unicode argument, - it now returns Unicode strings. (This behavior was added earlier - to the Windows NT/2k/XP version of os.listdir().) - -- Distutils: both 'py_modules' and 'packages' keywords can now be specified - in core.setup(). Previously you could supply one or the other, but - not both of them. (SF patch #695090 from Bernhard Herzog) - -- New csv package makes it easy to read/write CSV files. - -- Module shlex has been extended to allow posix-like shell parsings, - including a split() function for easy spliting of quoted strings and - commands. An iterator interface was also implemented. - -Tools/Demos ------------ - -- New script combinerefs.py helps analyze new PYTHONDUMPREFS output. - See the module docstring for details. - -Build ------ - -- Fix problem building on OSF1 because the compiler only accepted - preprocessor directives that start in column 1. (SF bug #691793.) - -C API ------ - -- Added PyGC_Collect(), equivalent to calling gc.collect(). - -- PyThreadState_GetDict() was changed not to raise an exception or - issue a fatal error when no current thread state is available. This - makes it possible to print dictionaries when no thread is active. - -- LONG_LONG was renamed to PY_LONG_LONG. Extensions that use this and - need compatibility with previous versions can use this: - - #ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG - #endif - -- Added PyObject_SelfIter() to fill the tp_iter slot for the - typical case where the method returns its self argument. - -- The extended type structure used for heap types (new-style - classes defined by Python code using a class statement) is now - exported from object.h as PyHeapTypeObject. (SF patch #696193.) - -New platforms -------------- - -None this time. - -Tests ------ - -- test_timeout now requires -u network to be passed to regrtest to run. - See SF bug #692988. - -Windows -------- - -- os.fsync() now exists on Windows, and calls the Microsoft _commit() - function. - -- New function winsound.MessageBeep() wraps the Win32 API - MessageBeep(). - -Mac ---- - -- os.listdir() now returns Unicode strings on MacOS X when called with - a Unicode argument. See the general news item under "Library". - -- A new method MacOS.WMAvailable() returns true if it is safe to access - the window manager, false otherwise. - -- EasyDialogs dialogs are now movable-modal, and if the application is - currently in the background they will ask to be moved to the foreground - before displaying. - -- OSA Scripting support has improved a lot, and gensuitemodule.py can now - be used by mere mortals. The documentation is now also more or less - complete. - -- The IDE (in a framework build) now includes introductory documentation - in Apple Help Viewer format. - - -What's New in Python 2.3 alpha 2? -================================= - -*Release date: 19-Feb-2003* - -Core and builtins ------------------ - -- Negative positions returned from PEP 293 error callbacks are now - treated as being relative to the end of the input string. Positions - that are out of bounds raise an IndexError. - -- sys.path[0] (the directory from which the script is loaded) is now - turned into an absolute pathname, unless it is the empty string. - (SF patch #664376.) - -- Finally fixed the bug in compile() and exec where a string ending - with an indented code block but no newline would raise SyntaxError. - This would have been a four-line change in parsetok.c... Except - codeop.py depends on this behavior, so a compilation flag had to be - invented that causes the tokenizer to revert to the old behavior; - this required extra changes to 2 .h files, 2 .c files, and 2 .py - files. (Fixes SF bug #501622.) - -- If a new-style class defines neither __new__ nor __init__, its - constructor would ignore all arguments. This is changed now: the - constructor refuses arguments in this case. This might break code - that worked under Python 2.2. The simplest fix is to add a no-op - __init__: ``def __init__(self, *args, **kw): pass``. - -- Through a bytecode optimizer bug (and I bet you didn't even know - Python *had* a bytecode optimizer :-), "unsigned" hex/oct constants - with a leading minus sign would come out with the wrong sign. - ("Unsigned" hex/oct constants are those with a face value in the - range sys.maxint+1 through sys.maxint*2+1, inclusive; these have - always been interpreted as negative numbers through sign folding.) - E.g. 0xffffffff is -1, and -(0xffffffff) is 1, but -0xffffffff would - come out as -4294967295. This was the case in Python 2.2 through - 2.2.2 and 2.3a1, and in Python 2.4 it will once again have that - value, but according to PEP 237 it really needs to be 1 now. This - will be backported to Python 2.2.3 a well. (SF #660455) - -- int(s, base) sometimes sign-folds hex and oct constants; it only - does this when base is 0 and s.strip() starts with a '0'. When the - sign is actually folded, as in int("0xffffffff", 0) on a 32-bit - machine, which returns -1, a FutureWarning is now issued; in Python - 2.4, this will return 4294967295L, as do int("+0xffffffff", 0) and - int("0xffffffff", 16) right now. (PEP 347) - -- super(X, x): x may now be a proxy for an X instance, i.e. - issubclass(x.__class__, X) but not issubclass(type(x), X). - -- isinstance(x, X): if X is a new-style class, this is now equivalent - to issubclass(type(x), X) or issubclass(x.__class__, X). Previously - only type(x) was tested. (For classic classes this was already the - case.) - -- compile(), eval() and the exec statement now fully support source code - passed as unicode strings. - -- int subclasses can be initialized with longs if the value fits in an int. - See SF bug #683467. - -- long(string, base) takes time linear in len(string) when base is a power - of 2 now. It used to take time quadratic in len(string). - -- filter returns now Unicode results for Unicode arguments. - -- raw_input can now return Unicode objects. - -- List objects' sort() method now accepts None as the comparison function. - Passing None is semantically identical to calling sort() with no - arguments. - -- Fixed crash when printing a subclass of str and __str__ returned self. - See SF bug #667147. - -- Fixed an invalid RuntimeWarning and an undetected error when trying - to convert a long integer into a float which couldn't fit. - See SF bug #676155. - -- Function objects now have a __module__ attribute that is bound to - the name of the module in which the function was defined. This - applies for C functions and methods as well as functions and methods - defined in Python. This attribute is used by pickle.whichmodule(), - which changes the behavior of whichmodule slightly. In Python 2.2 - whichmodule() returns "__main__" for functions that are not defined - at the top-level of a module (examples: methods, nested functions). - Now whichmodule() will return the proper module name. - -Extension modules ------------------ - -- operator.isNumberType() now checks that the object has a nb_int or - nb_float slot, rather than simply checking whether it has a non-NULL - tp_as_number pointer. - -- The imp module now has ways to acquire and release the "import - lock": imp.acquire_lock() and imp.release_lock(). Note: this is a - reentrant lock, so releasing the lock only truly releases it when - this is the last release_lock() call. You can check with - imp.lock_held(). (SF bug #580952 and patch #683257.) - -- Change to cPickle to match pickle.py (see below and PEP 307). - -- Fix some bugs in the parser module. SF bug #678518. - -- Thanks to Scott David Daniels, a subtle bug in how the zlib - extension implemented flush() was fixed. Scott also rewrote the - zlib test suite using the unittest module. (SF bug #640230 and - patch #678531.) - -- Added an itertools module containing high speed, memory efficient - looping constructs inspired by tools from Haskell and SML. - -- The SSL module now handles sockets with a timeout set correctly (SF - patch #675750, fixing SF bug #675552). - -- os/posixmodule has grown the sysexits.h constants (EX_OK and friends). - -- Fixed broken threadstate swap in readline that could cause fatal - errors when a readline hook was being invoked while a background - thread was active. (SF bugs #660476 and #513033.) - -- fcntl now exposes the strops.h I_* constants. - -- Fix a crash on Solaris that occurred when calling close() on - an mmap'ed file which was already closed. (SF patch #665913) - -- Fixed several serious bugs in the zipimport implementation. - -- datetime changes: - - The date class is now properly subclassable. (SF bug #720908) - - The datetime and datetimetz classes have been collapsed into a single - datetime class, and likewise the time and timetz classes into a single - time class. Previously, a datetimetz object with tzinfo=None acted - exactly like a datetime object, and similarly for timetz. This wasn't - enough of a difference to justify distinct classes, and life is simpler - now. - - today() and now() now round system timestamps to the closest - microsecond . This repairs an - irritation most likely seen on Windows systems. - - In dt.astimezone(tz), if tz.utcoffset(dt) returns a duration, - ValueError is raised if tz.dst(dt) returns None (2.3a1 treated it - as 0 instead, but a tzinfo subclass wishing to participate in - time zone conversion has to take a stand on whether it supports - DST; if you don't care about DST, then code dst() to return 0 minutes, - meaning that DST is never in effect). - - The tzinfo methods utcoffset() and dst() must return a timedelta object - (or None) now. In 2.3a1 they could also return an int or long, but that - was an unhelpfully redundant leftover from an earlier version wherein - they couldn't return a timedelta. TOOWTDI. - - The example tzinfo class for local time had a bug. It was replaced - by a later example coded by Guido. - - datetime.astimezone(tz) no longer raises an exception when the - input datetime has no UTC equivalent in tz. For typical "hybrid" time - zones (a single tzinfo subclass modeling both standard and daylight - time), this case can arise one hour per year, at the hour daylight time - ends. See new docs for details. In short, the new behavior mimics - the local wall clock's behavior of repeating an hour in local time. - - dt.astimezone() can no longer be used to convert between naive and aware - datetime objects. If you merely want to attach, or remove, a tzinfo - object, without any conversion of date and time members, use - dt.replace(tzinfo=whatever) instead, where "whatever" is None or a - tzinfo subclass instance. - - A new method tzinfo.fromutc(dt) can be overridden in tzinfo subclasses - to give complete control over how a UTC time is to be converted to - a local time. The default astimezone() implementation calls fromutc() - as its last step, so a tzinfo subclass can affect that too by overriding - fromutc(). It's expected that the default fromutc() implementation will - be suitable as-is for "almost all" time zone subclasses, but the - creativity of political time zone fiddling appears unbounded -- fromutc() - allows the highly motivated to emulate any scheme expressible in Python. - - datetime.now(): The optional tzinfo argument was undocumented (that's - repaired), and its name was changed to tz ("tzinfo" is overloaded enough - already). With a tz argument, now(tz) used to return the local date - and time, and attach tz to it, without any conversion of date and time - members. This was less than useful. Now now(tz) returns the current - date and time as local time in tz's time zone, akin to :: - - tz.fromutc(datetime.utcnow().replace(tzinfo=utc)) - - where "utc" is an instance of a tzinfo subclass modeling UTC. Without - a tz argument, now() continues to return the current local date and time, - as a naive datetime object. - - datetime.fromtimestamp(): Like datetime.now() above, this had less than - useful behavior when the optional tinzo argument was specified. See - also SF bug report . - - date and datetime comparison: In order to prevent comparison from - falling back to the default compare-object-addresses strategy, these - raised TypeError whenever they didn't understand the other object type. - They still do, except when the other object has a "timetuple" attribute, - in which case they return NotImplemented now. This gives other - datetime objects (e.g., mxDateTime) a chance to intercept the - comparison. - - date, time, datetime and timedelta comparison: When the exception - for mixed-type comparisons in the last paragraph doesn't apply, if - the comparison is == then False is returned, and if the comparison is - != then True is returned. Because dict lookup and the "in" operator - only invoke __eq__, this allows, for example, :: - - if some_datetime in some_sequence: - - and :: - - some_dict[some_timedelta] = whatever - - to work as expected, without raising TypeError just because the - sequence is heterogeneous, or the dict has mixed-type keys. [This - seems like a good idea to implement for all mixed-type comparisons - that don't want to allow falling back to address comparison.] - - The constructors building a datetime from a timestamp could raise - ValueError if the platform C localtime()/gmtime() inserted "leap - seconds". Leap seconds are ignored now. On such platforms, it's - possible to have timestamps that differ by a second, yet where - datetimes constructed from them are equal. - - The pickle format of date, time and datetime objects has changed - completely. The undocumented pickler and unpickler functions no - longer exist. The undocumented __setstate__() and __getstate__() - methods no longer exist either. - -Library -------- - -- The logging module was updated slightly; the WARN level was renamed - to WARNING, and the matching function/method warn() to warning(). - -- The pickle and cPickle modules were updated with a new pickling - protocol (documented by pickletools.py, see below) and several - extensions to the pickle customization API (__reduce__, __setstate__ - etc.). The copy module now uses more of the pickle customization - API to copy objects that don't implement __copy__ or __deepcopy__. - See PEP 307 for details. - -- The distutils "register" command now uses http://www.python.org/pypi - as the default repository. (See PEP 301.) - -- the platform dependent path related variables sep, altsep, extsep, - pathsep, curdir, pardir and defpath are now defined in the platform - dependent path modules (e.g. ntpath.py) rather than os.py, so these - variables are now available via os.path. They continue to be - available from the os module. - (see ). - -- array.array was added to the types repr.py knows about (see - ). - -- The new pickletools.py contains lots of documentation about pickle - internals, and supplies some helpers for working with pickles, such as - a symbolic pickle disassembler. - -- Xmlrpclib.py now supports the builtin boolean type. - -- py_compile has a new 'doraise' flag and a new PyCompileError - exception. - -- SimpleXMLRPCServer now supports CGI through the CGIXMLRPCRequestHandler - class. - -- The sets module now raises TypeError in __cmp__, to clarify that - sets are not intended to be three-way-compared; the comparison - operators are overloaded as subset/superset tests. - -- Bastion.py and rexec.py are disabled. These modules are not safe in - Python 2.2. or 2.3. - -- realpath is now exported when doing ``from poxixpath import *``. - It is also exported for ntpath, macpath, and os2emxpath. - See SF bug #659228. - -- New module tarfile from Lars Gustäbel provides a comprehensive interface - to tar archive files with transparent gzip and bzip2 compression. - See SF patch #651082. - -- urlparse can now parse imap:// URLs. See SF feature request #618024. - -- Tkinter.Canvas.scan_dragto() provides an optional parameter to support - the gain value which is passed to Tk. SF bug# 602259. - -- Fix logging.handlers.SysLogHandler protocol when using UNIX domain sockets. - See SF patch #642974. - -- The dospath module was deleted. Use the ntpath module when manipulating - DOS paths from other platforms. - -Tools/Demos ------------ - -- Two new scripts (db2pickle.py and pickle2db.py) were added to the - Tools/scripts directory to facilitate conversion from the old bsddb module - to the new one. While the user-visible API of the new module is - compatible with the old one, it's likely that the version of the - underlying database library has changed. To convert from the old library, - run the db2pickle.py script using the old version of Python to convert it - to a pickle file. After upgrading Python, run the pickle2db.py script - using the new version of Python to reconstitute your database. For - example: - - % python2.2 db2pickle.py -h some.db > some.pickle - % python2.3 pickle2db.py -h some.db.new < some.pickle - - Run the scripts without any args to get a usage message. - - -Build ------ - -- The audio driver tests (test_ossaudiodev.py and - test_linuxaudiodev.py) are no longer run by default. This is - because they don't always work, depending on your hardware and - software. To run these tests, you must use an invocation like :: - - ./python Lib/test/regrtest.py -u audio test_ossaudiodev - -- On systems which build using the configure script, compiler flags which - used to be lumped together using the OPT flag have been split into two - groups, OPT and BASECFLAGS. OPT is meant to carry just optimization- and - debug-related flags like "-g" and "-O3". BASECFLAGS is meant to carry - compiler flags that are required to get a clean compile. On some - platforms (many Linux flavors in particular) BASECFLAGS will be empty by - default. On others, such as Mac OS X and SCO, it will contain required - flags. This change allows people building Python to override OPT without - fear of clobbering compiler flags which are required to get a clean build. - -- On Darwin/Mac OS X platforms, /sw/lib and /sw/include are added to the - relevant search lists in setup.py. This allows users building Python to - take advantage of the many packages available from the fink project - . - -- A new Makefile target, scriptsinstall, installs a number of useful scripts - from the Tools/scripts directory. - -C API ------ - -- PyEval_GetFrame() is now declared to return a ``PyFrameObject *`` - instead of a plain ``PyObject *``. (SF patch #686601.) - -- PyNumber_Check() now checks that the object has a nb_int or nb_float - slot, rather than simply checking whether it has a non-NULL - tp_as_number pointer. - -- A C type that inherits from a base type that defines tp_as_buffer - will now inherit the tp_as_buffer pointer if it doesn't define one. - (SF #681367) - -- The PyArg_Parse functions now issue a DeprecationWarning if a float - argument is provided when an integer is specified (this affects the 'b', - 'B', 'h', 'H', 'i', and 'l' codes). Future versions of Python will - raise a TypeError. - -Tests ------ - -- Several tests weren't being run from regrtest.py (test_timeout.py, - test_tarfile.py, test_netrc.py, test_multifile.py, - test_importhooks.py and test_imp.py). Now they are. (Note to - developers: please read Lib/test/README when creating a new test, to - make sure to do it right! All tests need to use either unittest or - pydoc.) - -- Added test_posix.py, a test suite for the posix module. - -- Added test_hexoct.py, a test suite for hex/oct constant folding. - -Windows -------- - -- The timeout code for socket connect() didn't work right; this has - now been fixed. test_timeout.py should pass (at least most of the - time). - -- distutils' msvccompiler class now passes the preprocessor options to - the resource compiler. See SF patch #669198. - -- The bsddb module now ships with Sleepycat's 4.1.25.NC, the latest - release without strong cryptography. - -- sys.path[0], if it contains a directory name, is now always an - absolute pathname. (SF patch #664376.) - -- The new logging package is now installed by the Windows installer. It - wasn't in 2.3a1 due to oversight. - -Mac ---- - -- There are new dialogs EasyDialogs.AskFileForOpen, AskFileForSave - and AskFolder. The old macfs.StandardGetFile and friends are deprecated. - -- Most of the standard library now uses pathnames or FSRefs in preference - of FSSpecs, and use the underlying Carbon.File and Carbon.Folder modules - in stead of macfs. macfs will probably be deprecated in the future. - -- Type Carbon.File.FSCatalogInfo and supporting methods have been implemented. - This also makes macfs.FSSpec.SetDates() work again. - -- There is a new module pimp, the package install manager for Python, and - accompanying applet PackageManager. These allow you to easily download - and install pretested extension packages either in source or binary - form. Only in MacPython-OSX. - -- Applets are now built with bundlebuilder in MacPython-OSX, which should make - them more robust and also provides a path towards BuildApplication. The - downside of this change is that applets can no longer be run from the - Terminal window, this will hopefully be fixed in the 2.3b1. - - -What's New in Python 2.3 alpha 1? -================================= - -*Release date: 31-Dec-2002* - -Type/class unification and new-style classes --------------------------------------------- - -- One can now assign to __bases__ and __name__ of new-style classes. - -- dict() now accepts keyword arguments so that dict(one=1, two=2) - is the equivalent of {"one": 1, "two": 2}. Accordingly, - the existing (but undocumented) 'items' keyword argument has - been eliminated. This means that dict(items=someMapping) now has - a different meaning than before. - -- int() now returns a long object if the argument is outside the - integer range, so int("4" * 1000), int(1e200) and int(1L<<1000) will - all return long objects instead of raising an OverflowError. - -- Assignment to __class__ is disallowed if either the old or the new - class is a statically allocated type object (such as defined by an - extension module). This prevents anomalies like 2.__class__ = bool. - -- New-style object creation and deallocation have been sped up - significantly; they are now faster than classic instance creation - and deallocation. - -- The __slots__ variable can now mention "private" names, and the - right thing will happen (e.g. __slots__ = ["__foo"]). - -- The built-ins slice() and buffer() are now callable types. The - types classobj (formerly class), code, function, instance, and - instancemethod (formerly instance-method), which have no built-in - names but are accessible through the types module, are now also - callable. The type dict-proxy is renamed to dictproxy. - -- Cycles going through the __class__ link of a new-style instance are - now detected by the garbage collector. - -- Classes using __slots__ are now properly garbage collected. - [SF bug 519621] - -- Tightened the __slots__ rules: a slot name must be a valid Python - identifier. - -- The constructor for the module type now requires a name argument and - takes an optional docstring argument. Previously, this constructor - ignored its arguments. As a consequence, deriving a class from a - module (not from the module type) is now illegal; previously this - created an unnamed module, just like invoking the module type did. - [SF bug 563060] - -- A new type object, 'basestring', is added. This is a common base type - for 'str' and 'unicode', and can be used instead of - types.StringTypes, e.g. to test whether something is "a string": - isinstance(x, basestring) is True for Unicode and 8-bit strings. This - is an abstract base class and cannot be instantiated directly. - -- Changed new-style class instantiation so that when C's __new__ - method returns something that's not a C instance, its __init__ is - not called. [SF bug #537450] - -- Fixed super() to work correctly with class methods. [SF bug #535444] - -- If you try to pickle an instance of a class that has __slots__ but - doesn't define or override __getstate__, a TypeError is now raised. - This is done by adding a bozo __getstate__ to the class that always - raises TypeError. (Before, this would appear to be pickled, but the - state of the slots would be lost.) - -Core and builtins ------------------ - -- Import from zipfiles is now supported. The name of a zipfile placed - on sys.path causes the import statement to look for importable Python - modules (with .py, pyc and .pyo extensions) and packages inside the - zipfile. The zipfile import follows the specification (though not - the sample implementation) of PEP 273. The semantics of __path__ are - compatible with those that have been implemented in Jython since - Jython 2.1. - -- PEP 302 has been accepted. Although it was initially developed to - support zipimport, it offers a new, general import hook mechanism. - Several new variables have been added to the sys module: - sys.meta_path, sys.path_hooks, and sys.path_importer_cache; these - make extending the import statement much more convenient than - overriding the __import__ built-in function. For a description of - these, see PEP 302. - -- A frame object's f_lineno attribute can now be written to from a - trace function to change which line will execute next. A command to - exploit this from pdb has been added. [SF patch #643835] - -- The _codecs support module for codecs.py was turned into a builtin - module to assure that at least the builtin codecs are available - to the Python parser for source code decoding according to PEP 263. - -- issubclass now supports a tuple as the second argument, just like - isinstance does. ``issubclass(X, (A, B))`` is equivalent to - ``issubclass(X, A) or issubclass(X, B)``. - -- Thanks to Armin Rigo, the last known way to provoke a system crash - by cleverly arranging for a comparison function to mutate a list - during a list.sort() operation has been fixed. The effect of - attempting to mutate a list, or even to inspect its contents or - length, while a sort is in progress, is not defined by the language. - The C implementation of Python 2.3 attempts to detect mutations, - and raise ValueError if one occurs, but there's no guarantee that - all mutations will be caught, or that any will be caught across - releases or implementations. - -- Unicode file name processing for Windows (PEP 277) is implemented. - All platforms now have an os.path.supports_unicode_filenames attribute, - which is set to True on Windows NT/2000/XP, and False elsewhere. - -- Codec error handling callbacks (PEP 293) are implemented. - Error handling in unicode.encode or str.decode can now be customized. - -- A subtle change to the semantics of the built-in function intern(): - interned strings are no longer immortal. You must keep a reference - to the return value intern() around to get the benefit. - -- Use of 'None' as a variable, argument or attribute name now - issues a SyntaxWarning. In the future, None may become a keyword. - -- SET_LINENO is gone. co_lnotab is now consulted to determine when to - call the trace function. C code that accessed f_lineno should call - PyCode_Addr2Line instead (f_lineno is still there, but only kept up - to date when there is a trace function set). - -- There's a new warning category, FutureWarning. This is used to warn - about a number of situations where the value or sign of an integer - result will change in Python 2.4 as a result of PEP 237 (integer - unification). The warnings implement stage B0 mentioned in that - PEP. The warnings are about the following situations: - - - Octal and hex literals without 'L' prefix in the inclusive range - [0x80000000..0xffffffff]; these are currently negative ints, but - in Python 2.4 they will be positive longs with the same bit - pattern. - - - Left shifts on integer values that cause the outcome to lose - bits or have a different sign than the left operand. To be - precise: x< -*-" in the first - or second line of a Python source file indicates the encoding. - -- list.sort() has a new implementation. While cross-platform results - may vary, and in data-dependent ways, this is much faster on many - kinds of partially ordered lists than the previous implementation, - and reported to be just as fast on randomly ordered lists on - several major platforms. This sort is also stable (if A==B and A - precedes B in the list at the start, A precedes B after the sort too), - although the language definition does not guarantee stability. A - potential drawback is that list.sort() may require temp space of - len(list)*2 bytes (``*4`` on a 64-bit machine). It's therefore possible - for list.sort() to raise MemoryError now, even if a comparison function - does not. See for full details. - -- All standard iterators now ensure that, once StopIteration has been - raised, all future calls to next() on the same iterator will also - raise StopIteration. There used to be various counterexamples to - this behavior, which could caused confusion or subtle program - breakage, without any benefits. (Note that this is still an - iterator's responsibility; the iterator framework does not enforce - this.) - -- Ctrl+C handling on Windows has been made more consistent with - other platforms. KeyboardInterrupt can now reliably be caught, - and Ctrl+C at an interactive prompt no longer terminates the - process under NT/2k/XP (it never did under Win9x). Ctrl+C will - interrupt time.sleep() in the main thread, and any child processes - created via the popen family (on win2k; we can't make win9x work - reliably) are also interrupted (as generally happens on for Linux/Unix.) - [SF bugs 231273, 439992 and 581232] - -- sys.getwindowsversion() has been added on Windows. This - returns a tuple with information about the version of Windows - currently running. - -- Slices and repetitions of buffer objects now consistently return - a string. Formerly, strings would be returned most of the time, - but a buffer object would be returned when the repetition count - was one or when the slice range was all inclusive. - -- Unicode objects in sys.path are no longer ignored but treated - as directory names. - -- Fixed string.startswith and string.endswith builtin methods - so they accept negative indices. [SF bug 493951] - -- Fixed a bug with a continue inside a try block and a yield in the - finally clause. [SF bug 567538] - -- Most builtin sequences now support "extended slices", i.e. slices - with a third "stride" parameter. For example, "hello world"[::-1] - gives "dlrow olleh". - -- A new warning PendingDeprecationWarning was added to provide - direction on features which are in the process of being deprecated. - The warning will not be printed by default. To see the pending - deprecations, use -Walways::PendingDeprecationWarning:: - as a command line option or warnings.filterwarnings() in code. - -- Deprecated features of xrange objects have been removed as - promised. The start, stop, and step attributes and the tolist() - method no longer exist. xrange repetition and slicing have been - removed. - -- New builtin function enumerate(x), from PEP 279. Example: - enumerate("abc") is an iterator returning (0,"a"), (1,"b"), (2,"c"). - The argument can be an arbitrary iterable object. - -- The assert statement no longer tests __debug__ at runtime. This means - that assert statements cannot be disabled by assigning a false value - to __debug__. - -- A method zfill() was added to str and unicode, that fills a numeric - string to the left with zeros. For example, - "+123".zfill(6) -> "+00123". - -- Complex numbers supported divmod() and the // and % operators, but - these make no sense. Since this was documented, they're being - deprecated now. - -- String and unicode methods lstrip(), rstrip() and strip() now take - an optional argument that specifies the characters to strip. For - example, "Foo!!!?!?!?".rstrip("?!") -> "Foo". - -- There's a new dictionary constructor (a class method of the dict - class), dict.fromkeys(iterable, value=None). It constructs a - dictionary with keys taken from the iterable and all values set to a - single value. It can be used for building sets and for removing - duplicates from sequences. - -- Added a new dict method pop(key). This removes and returns the - value corresponding to key. [SF patch #539949] - -- A new built-in type, bool, has been added, as well as built-in - names for its two values, True and False. Comparisons and sundry - other operations that return a truth value have been changed to - return a bool instead. Read PEP 285 for an explanation of why this - is backward compatible. - -- Fixed two bugs reported as SF #535905: under certain conditions, - deallocating a deeply nested structure could cause a segfault in the - garbage collector, due to interaction with the "trashcan" code; - access to the current frame during destruction of a local variable - could access a pointer to freed memory. - -- The optional object allocator ("pymalloc") has been enabled by - default. The recommended practice for memory allocation and - deallocation has been streamlined. A header file is included, - Misc/pymemcompat.h, which can be bundled with 3rd party extensions - and lets them use the same API with Python versions from 1.5.2 - onwards. - -- PyErr_Display will provide file and line information for all exceptions - that have an attribute print_file_and_line, not just SyntaxErrors. - -- The UTF-8 codec will now encode and decode Unicode surrogates - correctly and without raising exceptions for unpaired ones. - -- Universal newlines (PEP 278) is implemented. Briefly, using 'U' - instead of 'r' when opening a text file for reading changes the line - ending convention so that any of '\r', '\r\n', and '\n' is - recognized (even mixed in one file); all three are converted to - '\n', the standard Python line end character. - -- file.xreadlines() now raises a ValueError if the file is closed: - Previously, an xreadlines object was returned which would raise - a ValueError when the xreadlines.next() method was called. - -- sys.exit() inadvertently allowed more than one argument. - An exception will now be raised if more than one argument is used. - -- Changed evaluation order of dictionary literals to conform to the - general left to right evaluation order rule. Now {f1(): f2()} will - evaluate f1 first. - -- Fixed bug #521782: when a file was in non-blocking mode, file.read() - could silently lose data or wrongly throw an unknown error. - -- The sq_repeat, sq_inplace_repeat, sq_concat and sq_inplace_concat - slots are now always tried after trying the corresponding nb_* slots. - This fixes a number of minor bugs (see bug #624807). - -- Fix problem with dynamic loading on 64-bit AIX (see bug #639945). - -Extension modules ------------------ - -- Added three operators to the operator module: - operator.pow(a,b) which is equivalent to: a**b. - operator.is_(a,b) which is equivalent to: a is b. - operator.is_not(a,b) which is equivalent to: a is not b. - -- posix.openpty now works on all systems that have /dev/ptmx. - -- A module zipimport exists to support importing code from zip - archives. - -- The new datetime module supplies classes for manipulating dates and - times. The basic design came from the Zope "fishbowl process", and - favors practical commercial applications over calendar esoterica. See - - http://www.zope.org/Members/fdrake/DateTimeWiki/FrontPage - -- _tkinter now returns Tcl objects, instead of strings. Objects which - have Python equivalents are converted to Python objects, other objects - are wrapped. This can be configured through the wantobjects method, - or Tkinter.wantobjects. - -- The PyBSDDB wrapper around the Sleepycat Berkeley DB library has - been added as the package bsddb. The traditional bsddb module is - still available in source code, but not built automatically anymore, - and is now named bsddb185. This supports Berkeley DB versions from - 3.0 to 4.1. For help converting your databases from the old module (which - probably used an obsolete version of Berkeley DB) to the new module, see - the db2pickle.py and pickle2db.py scripts described in the Tools/Demos - section above. - -- unicodedata was updated to Unicode 3.2. It supports normalization - and names for Hangul syllables and CJK unified ideographs. - -- resource.getrlimit() now returns longs instead of ints. - -- readline now dynamically adjusts its input/output stream if - sys.stdin/stdout changes. - -- The _tkinter module (and hence Tkinter) has dropped support for - Tcl/Tk 8.0 and 8.1. Only Tcl/Tk versions 8.2, 8.3 and 8.4 are - supported. - -- cPickle.BadPickleGet is now a class. - -- The time stamps in os.stat_result are floating point numbers - after stat_float_times has been called. - -- If the size passed to mmap.mmap() is larger than the length of the - file on non-Windows platforms, a ValueError is raised. [SF bug 585792] - -- The xreadlines module is slated for obsolescence. - -- The strptime function in the time module is now always available (a - Python implementation is used when the C library doesn't define it). - -- The 'new' module is no longer an extension, but a Python module that - only exists for backwards compatibility. Its contents are no longer - functions but callable type objects. - -- The bsddb.*open functions can now take 'None' as a filename. - This will create a temporary in-memory bsddb that won't be - written to disk. - -- posix.getloadavg, posix.lchown, posix.killpg, posix.mknod, and - posix.getpgid have been added where available. - -- The locale module now exposes the C library's gettext interface. It - also has a new function getpreferredencoding. - -- A security hole ("double free") was found in zlib-1.1.3, a popular - third party compression library used by some Python modules. The - hole was quickly plugged in zlib-1.1.4, and the Windows build of - Python now ships with zlib-1.1.4. - -- pwd, grp, and resource return enhanced tuples now, with symbolic - field names. - -- array.array is now a type object. A new format character - 'u' indicates Py_UNICODE arrays. For those, .tounicode and - .fromunicode methods are available. Arrays now support __iadd__ - and __imul__. - -- dl now builds on every system that has dlfcn.h. Failure in case - of sizeof(int)!=sizeof(long)!=sizeof(void*) is delayed until dl.open - is called. - -- The sys module acquired a new attribute, api_version, which evaluates - to the value of the PYTHON_API_VERSION macro with which the - interpreter was compiled. - -- Fixed bug #470582: sre module would return a tuple (None, 'a', 'ab') - when applying the regular expression '^((a)c)?(ab)$' on 'ab'. It now - returns (None, None, 'ab'), as expected. Also fixed handling of - lastindex/lastgroup match attributes in similar cases. For example, - when running the expression r'(a)(b)?b' over 'ab', lastindex must be - 1, not 2. - -- Fixed bug #581080: sre scanner was not checking the buffer limit - before increasing the current pointer. This was creating an infinite - loop in the search function, once the pointer exceeded the buffer - limit. - -- The os.fdopen function now enforces a file mode starting with the - letter 'r', 'w' or 'a', otherwise a ValueError is raised. This fixes - bug #623464. - -- The linuxaudiodev module is now deprecated; it is being replaced by - ossaudiodev. The interface has been extended to cover a lot more of - OSS (see www.opensound.com), including most DSP ioctls and the - OSS mixer API. Documentation forthcoming in 2.3a2. - -Library -------- - -- imaplib.py now supports SSL (Tino Lange and Piers Lauder). - -- Freeze's modulefinder.py has been moved to the standard library; - slightly improved so it will issue less false missing submodule - reports (see sf path #643711 for details). Documentation will follow - with Python 2.3a2. - -- os.path exposes getctime. - -- unittest.py now has two additional methods called assertAlmostEqual() - and failIfAlmostEqual(). They implement an approximate comparison - by rounding the difference between the two arguments and comparing - the result to zero. Approximate comparison is essential for - unit tests of floating point results. - -- calendar.py now depends on the new datetime module rather than - the time module. As a result, the range of allowable dates - has been increased. - -- pdb has a new 'j(ump)' command to select the next line to be - executed. - -- The distutils created windows installers now can run a - postinstallation script. - -- doctest.testmod can now be called without argument, which means to - test the current module. - -- When canceling a server that implemented threading with a keyboard - interrupt, the server would shut down but not terminate (waiting on - client threads). A new member variable, daemon_threads, was added to - the ThreadingMixIn class in SocketServer.py to make it explicit that - this behavior needs to be controlled. - -- A new module, optparse, provides a fancy alternative to getopt for - command line parsing. It is a slightly modified version of Greg - Ward's Optik package. - -- UserDict.py now defines a DictMixin class which defines all dictionary - methods for classes that already have a minimum mapping interface. - This greatly simplifies writing classes that need to be substitutable - for dictionaries (such as the shelve module). - -- shelve.py now subclasses from UserDict.DictMixin. Now shelve supports - all dictionary methods. This eases the transition to persistent - storage for scripts originally written with dictionaries in mind. - -- shelve.open and the various classes in shelve.py now accept an optional - binary flag, which defaults to False. If True, the values stored in the - shelf are binary pickles. - -- A new package, logging, implements the logging API defined by PEP - 282. The code is written by Vinay Sajip. - -- StreamReader, StreamReaderWriter and StreamRecoder in the codecs - modules are iterators now. - -- gzip.py now handles files exceeding 2GB. Files over 4GB also work - now (provided the OS supports it, and Python is configured with large - file support), but in that case the underlying gzip file format can - record only the least-significant 32 bits of the file size, so that - some tools working with gzipped files may report an incorrect file - size. - -- xml.sax.saxutils.unescape has been added, to replace entity references - with their entity value. - -- Queue.Queue.{put,get} now support an optional timeout argument. - -- Various features of Tk 8.4 are exposed in Tkinter.py. The multiple - option of tkFileDialog is exposed as function askopenfile{,name}s. - -- Various configure methods of Tkinter have been stream-lined, so that - tag_configure, image_configure, window_configure now return a - dictionary when invoked with no argument. - -- Importing the readline module now no longer has the side effect of - calling setlocale(LC_CTYPE, ""). The initial "C" locale, or - whatever locale is explicitly set by the user, is preserved. If you - want repr() of 8-bit strings in your preferred encoding to preserve - all printable characters of that encoding, you have to add the - following code to your $PYTHONSTARTUP file or to your application's - main(): - - import locale - locale.setlocale(locale.LC_CTYPE, "") - -- shutil.move was added. shutil.copytree now reports errors as an - exception at the end, instead of printing error messages. - -- Encoding name normalization was generalized to not only - replace hyphens with underscores, but also all other non-alphanumeric - characters (with the exception of the dot which is used for Python - package names during lookup). The aliases.py mapping was updated - to the new standard. - -- mimetypes has two new functions: guess_all_extensions() which - returns a list of all known extensions for a mime type, and - add_type() which adds one mapping between a mime type and - an extension to the database. - -- New module: sets, defines the class Set that implements a mutable - set type using the keys of a dict to represent the set. There's - also a class ImmutableSet which is useful when you need sets of sets - or when you need to use sets as dict keys, and a class BaseSet which - is the base class of the two. - -- Added random.sample(population,k) for random sampling without replacement. - Returns a k length list of unique elements chosen from the population. - -- random.randrange(-sys.maxint-1, sys.maxint) no longer raises - OverflowError. That is, it now accepts any combination of 'start' - and 'stop' arguments so long as each is in the range of Python's - bounded integers. - -- Thanks to Raymond Hettinger, random.random() now uses a new core - generator. The Mersenne Twister algorithm is implemented in C, - threadsafe, faster than the previous generator, has an astronomically - large period (2**19937-1), creates random floats to full 53-bit - precision, and may be the most widely tested random number generator - in existence. - - The random.jumpahead(n) method has different semantics for the new - generator. Instead of jumping n steps ahead, it uses n and the - existing state to create a new state. This means that jumpahead() - continues to support multi-threaded code needing generators of - non-overlapping sequences. However, it will break code which relies - on jumpahead moving a specific number of steps forward. - - The attributes random.whseed and random.__whseed have no meaning for - the new generator. Code using these attributes should switch to a - new class, random.WichmannHill which is provided for backward - compatibility and to make an alternate generator available. - -- New "algorithms" module: heapq, implements a heap queue. Thanks to - Kevin O'Connor for the code and François Pinard for an entertaining - write-up explaining the theory and practical uses of heaps. - -- New encoding for the Palm OS character set: palmos. - -- binascii.crc32() and the zipfile module had problems on some 64-bit - platforms. These have been fixed. On a platform with 8-byte C longs, - crc32() now returns a signed-extended 4-byte result, so that its value - as a Python int is equal to the value computed a 32-bit platform. - -- xml.dom.minidom.toxml and toprettyxml now take an optional encoding - argument. - -- Some fixes in the copy module: when an object is copied through its - __reduce__ method, there was no check for a __setstate__ method on - the result [SF patch 565085]; deepcopy should treat instances of - custom metaclasses the same way it treats instances of type 'type' - [SF patch 560794]. - -- Sockets now support timeout mode. After s.settimeout(T), where T is - a float expressing seconds, subsequent operations raise an exception - if they cannot be completed within T seconds. To disable timeout - mode, use s.settimeout(None). There's also a module function, - socket.setdefaulttimeout(T), which sets the default for all sockets - created henceforth. - -- getopt.gnu_getopt was added. This supports GNU-style option - processing, where options can be mixed with non-option arguments. - -- Stop using strings for exceptions. String objects used for - exceptions are now classes deriving from Exception. The objects - changed were: Tkinter.TclError, bdb.BdbQuit, macpath.norm_error, - tabnanny.NannyNag, and xdrlib.Error. - -- Constants BOM_UTF8, BOM_UTF16, BOM_UTF16_LE, BOM_UTF16_BE, - BOM_UTF32, BOM_UTF32_LE and BOM_UTF32_BE that represent the Byte - Order Mark in UTF-8, UTF-16 and UTF-32 encodings for little and - big endian systems were added to the codecs module. The old names - BOM32_* and BOM64_* were off by a factor of 2. - -- Added conversion functions math.degrees() and math.radians(). - -- math.log() now takes an optional argument: math.log(x[, base]). - -- ftplib.retrlines() now tests for callback is None rather than testing - for False. Was causing an error when given a callback object which - was callable but also returned len() as zero. The change may - create new breakage if the caller relied on the undocumented behavior - and called with callback set to [] or some other False value not - identical to None. - -- random.gauss() uses a piece of hidden state used by nothing else, - and the .seed() and .whseed() methods failed to reset it. In other - words, setting the seed didn't completely determine the sequence of - results produced by random.gauss(). It does now. Programs repeatedly - mixing calls to a seed method with calls to gauss() may see different - results now. - -- The pickle.Pickler class grew a clear_memo() method to mimic that - provided by cPickle.Pickler. - -- difflib's SequenceMatcher class now does a dynamic analysis of - which elements are so frequent as to constitute noise. For - comparing files as sequences of lines, this generally works better - than the IS_LINE_JUNK function, and function ndiff's linejunk - argument defaults to None now as a result. A happy benefit is - that SequenceMatcher may run much faster now when applied - to large files with many duplicate lines (for example, C program - text with lots of repeated "}" and "return NULL;" lines). - -- New Text.dump() method in Tkinter module. - -- New distutils commands for building packagers were added to - support pkgtool on Solaris and swinstall on HP-UX. - -- distutils now has a new abstract binary packager base class - command/bdist_packager, which simplifies writing packagers. - This will hopefully provide the missing bits to encourage - people to submit more packagers, e.g. for Debian, FreeBSD - and other systems. - -- The UTF-16, -LE and -BE stream readers now raise a - NotImplementedError for all calls to .readline(). Previously, they - used to just produce garbage or fail with an encoding error -- - UTF-16 is a 2-byte encoding and the C lib's line reading APIs don't - work well with these. - -- compileall now supports quiet operation. - -- The BaseHTTPServer now implements optional HTTP/1.1 persistent - connections. - -- socket module: the SSL support was broken out of the main - _socket module C helper and placed into a new _ssl helper - which now gets imported by socket.py if available and working. - -- encodings package: added aliases for all supported IANA character - sets - -- ftplib: to safeguard the user's privacy, anonymous login will use - "anonymous@" as default password, rather than the real user and host - name. - -- webbrowser: tightened up the command passed to os.system() so that - arbitrary shell code can't be executed because a bogus URL was - passed in. - -- gettext.translation has an optional fallback argument, and - gettext.find an optional all argument. Translations will now fallback - on a per-message basis. The module supports plural forms, by means - of gettext.[d]ngettext and Translation.[u]ngettext. - -- distutils bdist commands now offer a --skip-build option. - -- warnings.warn now accepts a Warning instance as first argument. - -- The xml.sax.expatreader.ExpatParser class will no longer create - circular references by using itself as the locator that gets passed - to the content handler implementation. [SF bug #535474] - -- The email.Parser.Parser class now properly parses strings regardless - of their line endings, which can be any of \r, \n, or \r\n (CR, LF, - or CRLF). Also, the Header class's constructor default arguments - has changed slightly so that an explicit maxlinelen value is always - honored, and so unicode conversion error handling can be specified. - -- distutils' build_ext command now links C++ extensions with the C++ - compiler available in the Makefile or CXX environment variable, if - running under \*nix. - -- New module bz2: provides a comprehensive interface for the bz2 compression - library. It implements a complete file interface, one-shot (de)compression - functions, and types for sequential (de)compression. - -- New pdb command 'pp' which is like 'p' except that it pretty-prints - the value of its expression argument. - -- Now bdist_rpm distutils command understands a verify_script option in - the config file, including the contents of the referred filename in - the "%verifyscript" section of the rpm spec file. - -- Fixed bug #495695: webbrowser module would run graphic browsers in a - unix environment even if DISPLAY was not set. Also, support for - skipstone browser was included. - -- Fixed bug #636769: rexec would run unallowed code if subclasses of - strings were used as parameters for certain functions. - -Tools/Demos ------------ - -- pygettext.py now supports globbing on Windows, and accepts module - names in addition to accepting file names. - -- The SGI demos (Demo/sgi) have been removed. Nobody thought they - were interesting any more. (The SGI library modules and extensions - are still there; it is believed that at least some of these are - still used and useful.) - -- IDLE supports the new encoding declarations (PEP 263); it can also - deal with legacy 8-bit files if they use the locale's encoding. It - allows non-ASCII strings in the interactive shell and executes them - in the locale's encoding. - -- freeze.py now produces binaries which can import shared modules, - unlike before when this failed due to missing symbol exports in - the generated binary. - -Build ------ - -- On Unix, IDLE is now installed automatically. - -- The fpectl module is not built by default; it's dangerous or useless - except in the hands of experts. - -- The public Python C API will generally be declared using PyAPI_FUNC - and PyAPI_DATA macros, while Python extension module init functions - will be declared with PyMODINIT_FUNC. DL_EXPORT/DL_IMPORT macros - are deprecated. - -- A bug was fixed that could cause COUNT_ALLOCS builds to segfault, or - get into infinite loops, when a new-style class got garbage-collected. - Unfortunately, to avoid this, the way COUNT_ALLOCS works requires - that new-style classes be immortal in COUNT_ALLOCS builds. Note that - COUNT_ALLOCS is not enabled by default, in either release or debug - builds, and that new-style classes are immortal only in COUNT_ALLOCS - builds. - -- Compiling out the cyclic garbage collector is no longer an option. - The old symbol WITH_CYCLE_GC is now ignored, and Python.h arranges - that it's always defined (for the benefit of any extension modules - that may be conditionalizing on it). A bonus is that any extension - type participating in cyclic gc can choose to participate in the - Py_TRASHCAN mechanism now too; in the absence of cyclic gc, this used - to require editing the core to teach the trashcan mechanism about the - new type. - -- According to Annex F of the current C standard, - - The Standard C macro HUGE_VAL and its float and long double analogs, - HUGE_VALF and HUGE_VALL, expand to expressions whose values are - positive infinities. - - Python only uses the double HUGE_VAL, and only to #define its own symbol - Py_HUGE_VAL. Some platforms have incorrect definitions for HUGE_VAL. - pyport.h used to try to worm around that, but the workarounds triggered - other bugs on other platforms, so we gave up. If your platform defines - HUGE_VAL incorrectly, you'll need to #define Py_HUGE_VAL to something - that works on your platform. The only instance of this I'm sure about - is on an unknown subset of Cray systems, described here: - - http://www.cray.com/swpubs/manuals/SN-2194_2.0/html-SN-2194_2.0/x3138.htm - - Presumably 2.3a1 breaks such systems. If anyone uses such a system, help! - -- The configure option --without-doc-strings can be used to remove the - doc strings from the builtin functions and modules; this reduces the - size of the executable. - -- The universal newlines option (PEP 278) is on by default. On Unix - it can be disabled by passing --without-universal-newlines to the - configure script. On other platforms, remove - WITH_UNIVERSAL_NEWLINES from pyconfig.h. - -- On Unix, a shared libpython2.3.so can be created with --enable-shared. - -- All uses of the CACHE_HASH, INTERN_STRINGS, and DONT_SHARE_SHORT_STRINGS - preprocessor symbols were eliminated. The internal decisions they - controlled stopped being experimental long ago. - -- The tools used to build the documentation now work under Cygwin as - well as Unix. - -- The bsddb and dbm module builds have been changed to try and avoid version - skew problems and disable linkage with Berkeley DB 1.85 unless the - installer knows what s/he's doing. See the section on building these - modules in the README file for details. - -C API ------ - -- PyNumber_Check() now returns true for string and unicode objects. - This is a result of these types having a partially defined - tp_as_number slot. (This is not a feature, but an indication that - PyNumber_Check() is not very useful to determine numeric behavior. - It may be deprecated.) - -- The string object's layout has changed: the pointer member - ob_sinterned has been replaced by an int member ob_sstate. On some - platforms (e.g. most 64-bit systems) this may change the offset of - the ob_sval member, so as a precaution the API_VERSION has been - incremented. The apparently unused feature of "indirect interned - strings", supported by the ob_sinterned member, is gone. Interned - strings are now usually mortal; there is a new API, - PyString_InternImmortal() that creates immortal interned strings. - (The ob_sstate member can only take three values; however, while - making it a char saves a few bytes per string object on average, in - it also slowed things down a bit because ob_sval was no longer - aligned.) - -- The Py_InitModule*() functions now accept NULL for the 'methods' - argument. Modules without global functions are becoming more common - now that factories can be types rather than functions. - -- New C API PyUnicode_FromOrdinal() which exposes unichr() at C - level. - -- New functions PyErr_SetExcFromWindowsErr() and - PyErr_SetExcFromWindowsErrWithFilename(). Similar to - PyErr_SetFromWindowsErrWithFilename() and - PyErr_SetFromWindowsErr(), but they allow to specify - the exception type to raise. Available on Windows. - -- Py_FatalError() is now declared as taking a const char* argument. It - was previously declared without const. This should not affect working - code. - -- Added new macro PySequence_ITEM(o, i) that directly calls - sq_item without rechecking that o is a sequence and without - adjusting for negative indices. - -- PyRange_New() now raises ValueError if the fourth argument is not 1. - This is part of the removal of deprecated features of the xrange - object. - -- PyNumber_Coerce() and PyNumber_CoerceEx() now also invoke the type's - coercion if both arguments have the same type but this type has the - CHECKTYPES flag set. This is to better support proxies. - -- The type of tp_free has been changed from "``void (*)(PyObject *)``" to - "``void (*)(void *)``". - -- PyObject_Del, PyObject_GC_Del are now functions instead of macros. - -- A type can now inherit its metatype from its base type. Previously, - when PyType_Ready() was called, if ob_type was found to be NULL, it - was always set to &PyType_Type; now it is set to base->ob_type, - where base is tp_base, defaulting to &PyObject_Type. - -- PyType_Ready() accidentally did not inherit tp_is_gc; now it does. - -- The PyCore_* family of APIs have been removed. - -- The "u#" parser marker will now pass through Unicode objects as-is - without going through the buffer API. - -- The enumerators of cmp_op have been renamed to use the prefix ``PyCmp_``. - -- An old #define of ANY as void has been removed from pyport.h. This - hasn't been used since Python's pre-ANSI days, and the #define has - been marked as obsolete since then. SF bug 495548 says it created - conflicts with other packages, so keeping it around wasn't harmless. - -- Because Python's magic number scheme broke on January 1st, we decided - to stop Python development. Thanks for all the fish! - -- Some of us don't like fish, so we changed Python's magic number - scheme to a new one. See Python/import.c for details. - -New platforms -------------- - -- OpenVMS is now supported. - -- AtheOS is now supported. - -- the EMX runtime environment on OS/2 is now supported. - -- GNU/Hurd is now supported. - -Tests ------ - -- The regrtest.py script's -u option now provides a way to say "allow - all resources except this one." For example, to allow everything - except bsddb, give the option '-uall,-bsddb'. - -Windows -------- - -- The Windows distribution now ships with version 4.0.14 of the - Sleepycat Berkeley database library. This should be a huge - improvement over the previous Berkeley DB 1.85, which had many - bugs. - XXX What are the licensing issues here? - XXX If a user has a database created with a previous version of - XXX Python, what must they do to convert it? - XXX I'm still not sure how to link this thing (see PCbuild/readme.txt). - XXX The version # is likely to change before 2.3a1. - -- The Windows distribution now ships with a Secure Sockets Library (SLL) - module (_ssl.pyd) - -- The Windows distribution now ships with Tcl/Tk version 8.4.1 (it - previously shipped with Tcl/Tk 8.3.2). - -- When Python is built under a Microsoft compiler, sys.version now - includes the compiler version number (_MSC_VER). For example, under - MSVC 6, sys.version contains the substring "MSC v.1200 ". 1200 is - the value of _MSC_VER under MSVC 6. - -- Sometimes the uninstall executable (UNWISE.EXE) vanishes. One cause - of that has been fixed in the installer (disabled Wise's "delete in- - use files" uninstall option). - -- Fixed a bug in urllib's proxy handling in Windows. [SF bug #503031] - -- The installer now installs Start menu shortcuts under (the local - equivalent of) "All Users" when doing an Admin install. - -- file.truncate([newsize]) now works on Windows for all newsize values. - It used to fail if newsize didn't fit in 32 bits, reflecting a - limitation of MS _chsize (which is no longer used). - -- os.waitpid() is now implemented for Windows, and can be used to block - until a specified process exits. This is similar to, but not exactly - the same as, os.waitpid() on POSIX systems. If you're waiting for - a specific process whose pid was obtained from one of the spawn() - functions, the same Python os.waitpid() code works across platforms. - See the docs for details. The docs were changed to clarify that - spawn functions return, and waitpid requires, a process handle on - Windows (not the same thing as a Windows process id). - -- New tempfile.TemporaryFile implementation for Windows: this doesn't - need a TemporaryFileWrapper wrapper anymore, and should be immune - to a nasty problem: before 2.3, if you got a temp file on Windows, it - got wrapped in an object whose close() method first closed the - underlying file, then deleted the file. This usually worked fine. - However, the spawn family of functions on Windows create (at a low C - level) the same set of open files in the spawned process Q as were - open in the spawning process P. If a temp file f was among them, then - doing f.close() in P first closed P's C-level file handle on f, but Q's - C-level file handle on f remained open, so the attempt in P to delete f - blew up with a "Permission denied" error (Windows doesn't allow - deleting open files). This was surprising, subtle, and difficult to - work around. - -- The os module now exports all the symbolic constants usable with the - low-level os.open() on Windows: the new constants in 2.3 are - O_NOINHERIT, O_SHORT_LIVED, O_TEMPORARY, O_RANDOM and O_SEQUENTIAL. - The others were also available in 2.2: O_APPEND, O_BINARY, O_CREAT, - O_EXCL, O_RDONLY, O_RDWR, O_TEXT, O_TRUNC and O_WRONLY. Contrary - to Microsoft docs, O_SHORT_LIVED does not seem to imply O_TEMPORARY - (so specify both if you want both; note that neither is useful unless - specified with O_CREAT too). - -Mac ----- - -- Mac/Relnotes is gone, the release notes are now here. - -- Python (the OSX-only, unix-based version, not the OS9-compatible CFM - version) now fully supports unicode strings as arguments to various file - system calls, eg. open(), file(), os.stat() and os.listdir(). - -- The current naming convention for Python on the Macintosh is that MacPython - refers to the unix-based OSX-only version, and MacPython-OS9 refers to the - CFM-based version that runs on both OS9 and OSX. - -- All MacPython-OS9 functionality is now available in an OSX unix build, - including the Carbon modules, the IDE, OSA support, etc. A lot of this - will only work correctly in a framework build, though, because you cannot - talk to the window manager unless your application is run from a .app - bundle. There is a command line tool "pythonw" that runs your script - with an interpreter living in such a .app bundle, this interpreter should - be used to run any Python script using the window manager (including - Tkinter or wxPython scripts). - -- Most of Mac/Lib has moved to Lib/plat-mac, which is again used both in - MacPython-OSX and MacPython-OS9. The only modules remaining in Mac/Lib - are specifically for MacPython-OS9 (CFM support, preference resources, etc). - -- A new utility PythonLauncher will start a Python interpreter when a .py or - .pyw script is double-clicked in the Finder. By default .py scripts are - run with a normal Python interpreter in a Terminal window and .pyw - files are run with a window-aware pythonw interpreter without a Terminal - window, but all this can be customized. - -- MacPython-OS9 is now Carbon-only, so it runs on Mac OS 9 or Mac OS X and - possibly on Mac OS 8.6 with the right CarbonLib installed, but not on earlier - releases. - -- Many tools such as BuildApplet.py and gensuitemodule.py now support a command - line interface too. - -- All the Carbon classes are now PEP253 compliant, meaning that you can - subclass them from Python. Most of the attributes have gone, you should - now use the accessor function call API, which is also what Apple's - documentation uses. Some attributes such as grafport.visRgn are still - available for convenience. - -- New Carbon modules File (implementing the APIs in Files.h and Aliases.h) - and Folder (APIs from Folders.h). The old macfs builtin module is - gone, and replaced by a Python wrapper around the new modules. - -- Pathname handling should now be fully consistent: MacPython-OSX always uses - unix pathnames and MacPython-OS9 always uses colon-separated Mac pathnames - (also when running on Mac OS X). - -- New Carbon modules Help and AH give access to the Carbon Help Manager. - There are hooks in the IDE to allow accessing the Python documentation - (and Apple's Carbon and Cocoa documentation) through the Help Viewer. - See Mac/OSX/README for converting the Python documentation to a - Help Viewer compatible form and installing it. - -- OSA support has been redesigned and the generated Python classes now - mirror the inheritance defined by the underlying OSA classes. - -- MacPython no longer maps both \r and \n to \n on input for any text file. - This feature has been replaced by universal newline support (PEP278). - -- The default encoding for Python sourcefiles in MacPython-OS9 is no longer - mac-roman (or whatever your local Mac encoding was) but "ascii", like on - other platforms. If you really need sourcefiles with Mac characters in them - you can change this in site.py. - - -What's New in Python 2.2 final? -=============================== - -*Release date: 21-Dec-2001* - -Type/class unification and new-style classes --------------------------------------------- - -- pickle.py, cPickle: allow pickling instances of new-style classes - with a custom metaclass. - -Core and builtins ------------------ - -- weakref proxy object: when comparing, unwrap both arguments if both - are proxies. - -Extension modules ------------------ - -- binascii.b2a_base64(): fix a potential buffer overrun when encoding - very short strings. - -- cPickle: the obscure "fast" mode was suspected of causing stack - overflows on the Mac. Hopefully fixed this by setting the recursion - limit much smaller. If the limit is too low (it only affects - performance), you can change it by defining PY_CPICKLE_FAST_LIMIT - when compiling cPickle.c (or in pyconfig.h). - -Library -------- - -- dumbdbm.py: fixed a dumb old bug (the file didn't get synched at - close or delete time). - -- rfc822.py: fixed a bug where the address '<>' was converted to None - instead of an empty string (also fixes the email.Utils module). - -- xmlrpclib.py: version 1.0.0; uses precision for doubles. - -- test suite: the pickle and cPickle tests were not executing any code - when run from the standard regression test. - -Tools/Demos ------------ - -Build ------ - -C API ------ - -New platforms -------------- - -Tests ------ - -Windows -------- - -- distutils package: fixed broken Windows installers (bdist_wininst). - -- tempfile.py: prevent mysterious warnings when TemporaryFileWrapper - instances are deleted at process exit time. - -- socket.py: prevent mysterious warnings when socket instances are - deleted at process exit time. - -- posixmodule.c: fix a Windows crash with stat() of a filename ending - in backslash. - -Mac ----- - -- The Carbon toolbox modules have been upgraded to Universal Headers - 3.4, and experimental CoreGraphics and CarbonEvents modules have - been added. All only for framework-enabled MacOSX. - - -What's New in Python 2.2c1? -=========================== - -*Release date: 14-Dec-2001* - -Type/class unification and new-style classes --------------------------------------------- - -- Guido's tutorial introduction to the new type/class features has - been extensively updated. See - - http://www.python.org/2.2/descrintro.html - - That remains the primary documentation in this area. - -- Fixed a leak: instance variables declared with __slots__ were never - deleted! - -- The "delete attribute" method of descriptor objects is called - __delete__, not __del__. In previous releases, it was mistakenly - called __del__, which created an unfortunate overloading condition - with finalizers. (The "get attribute" and "set attribute" methods - are still called __get__ and __set__, respectively.) - -- Some subtle issues with the super built-in were fixed: - - (a) When super itself is subclassed, its __get__ method would still - return an instance of the base class (i.e., of super). - - (b) super(C, C()).__class__ would return C rather than super. This - is confusing. To fix this, I decided to change the semantics of - super so that it only applies to code attributes, not to data - attributes. After all, overriding data attributes is not - supported anyway. - - (c) The __get__ method didn't check whether the argument was an - instance of the type used in creation of the super instance. - -- Previously, hash() of an instance of a subclass of a mutable type - (list or dictionary) would return some value, rather than raising - TypeError. This has been fixed. Also, directly calling - dict.__hash__ and list.__hash__ now raises the same TypeError - (previously, these were the same as object.__hash__). - -- New-style objects now support deleting their __dict__. This is for - all intents and purposes equivalent to assigning a brand new empty - dictionary, but saves space if the object is not used further. - -Core and builtins ------------------ - -- -Qnew now works as documented in PEP 238: when -Qnew is passed on - the command line, all occurrences of "/" use true division instead - of classic division. See the PEP for details. Note that "all" - means all instances in library and 3rd-party modules, as well as in - your own code. As the PEP says, -Qnew is intended for use only in - educational environments with control over the libraries in use. - Note that test_coercion.py in the standard Python test suite fails - under -Qnew; this is expected, and won't be repaired until true - division becomes the default (in the meantime, test_coercion is - testing the current rules). - -- complex() now only allows the first argument to be a string - argument, and raises TypeError if either the second arg is a string - or if the second arg is specified when the first is a string. - -Extension modules ------------------ - -- gc.get_referents was renamed to gc.get_referrers. - -Library -------- - -- Functions in the os.spawn() family now release the global interpreter - lock around calling the platform spawn. They should always have done - this, but did not before 2.2c1. Multithreaded programs calling - an os.spawn function with P_WAIT will no longer block all Python threads - until the spawned program completes. It's possible that some programs - relies on blocking, although more likely by accident than by design. - -- webbrowser defaults to netscape.exe on OS/2 now. - -- Tix.ResizeHandle exposes detach_widget, hide, and show. - -- The charset alias windows_1252 has been added. - -- types.StringTypes is a tuple containing the defined string types; - usually this will be (str, unicode), but if Python was compiled - without Unicode support it will be just (str,). - -- The pulldom and minidom modules were synchronized to PyXML. - -Tools/Demos ------------ - -- A new script called Tools/scripts/google.py was added, which fires - off a search on Google. - -Build ------ - -- Note that release builds of Python should arrange to define the - preprocessor symbol NDEBUG on the command line (or equivalent). - In the 2.2 pre-release series we tried to define this by magic in - Python.h instead, but it proved to cause problems for extension - authors. The Unix, Windows and Mac builds now all define NDEBUG in - release builds via cmdline (or equivalent) instead. Ports to - other platforms should do likewise. - -- It is no longer necessary to use --with-suffix when building on a - case-insensitive file system (such as Mac OS X HFS+). In the build - directory an extension is used, but not in the installed python. - -C API ------ - -- New function PyDict_MergeFromSeq2() exposes the builtin dict - constructor's logic for updating a dictionary from an iterable object - producing key-value pairs. - -- PyArg_ParseTupleAndKeywords() requires that the number of entries in - the keyword list equal the number of argument specifiers. This - wasn't checked correctly, and PyArg_ParseTupleAndKeywords could even - dump core in some bad cases. This has been repaired. As a result, - PyArg_ParseTupleAndKeywords may raise RuntimeError in bad cases that - previously went unchallenged. - -New platforms -------------- - -Tests ------ - -Windows -------- - -Mac ----- - -- In unix-Python on Mac OS X (and darwin) sys.platform is now "darwin", - without any trailing digits. - -- Changed logic for finding python home in Mac OS X framework Pythons. - Now sys.executable points to the executable again, in stead of to - the shared library. The latter is used only for locating the python - home. - - -What's New in Python 2.2b2? -=========================== - -*Release date: 16-Nov-2001* - -Type/class unification and new-style classes --------------------------------------------- - -- Multiple inheritance mixing new-style and classic classes in the - list of base classes is now allowed, so this works now: - - class Classic: pass - class Mixed(Classic, object): pass - - The MRO (method resolution order) for each base class is respected - according to its kind, but the MRO for the derived class is computed - using new-style MRO rules if any base class is a new-style class. - This needs to be documented. - -- The new builtin dictionary() constructor, and dictionary type, have - been renamed to dict. This reflects a decade of common usage. - -- dict() now accepts an iterable object producing 2-sequences. For - example, dict(d.items()) == d for any dictionary d. The argument, - and the elements of the argument, can be any iterable objects. - -- New-style classes can now have a __del__ method, which is called - when the instance is deleted (just like for classic classes). - -- Assignment to object.__dict__ is now possible, for objects that are - instances of new-style classes that have a __dict__ (unless the base - class forbids it). - -- Methods of built-in types now properly check for keyword arguments - (formerly these were silently ignored). The only built-in methods - that take keyword arguments are __call__, __init__ and __new__. - -- The socket function has been converted to a type; see below. - -Core and builtins ------------------ - -- Assignment to __debug__ raises SyntaxError at compile-time. This - was promised when 2.1c1 was released as "What's New in Python 2.1c1" - (see below) says. - -- Clarified the error messages for unsupported operands to an operator - (like 1 + ''). - -Extension modules ------------------ - -- mmap has a new keyword argument, "access", allowing a uniform way for - both Windows and Unix users to create read-only, write-through and - copy-on-write memory mappings. This was previously possible only on - Unix. A new keyword argument was required to support this in a - uniform way because the mmap() signatures had diverged across - platforms. Thanks to Jay T Miller for repairing this! - -- By default, the gc.garbage list now contains only those instances in - unreachable cycles that have __del__ methods; in 2.1 it contained all - instances in unreachable cycles. "Instances" here has been generalized - to include instances of both new-style and old-style classes. - -- The socket module defines a new method for socket objects, - sendall(). This is like send() but may make multiple calls to - send() until all data has been sent. Also, the socket function has - been converted to a subclassable type, like list and tuple (etc.) - before it; socket and SocketType are now the same thing. - -- Various bugfixes to the curses module. There is now a test suite - for the curses module (you have to run it manually). - -- binascii.b2a_base64 no longer places an arbitrary restriction of 57 - bytes on its input. - -Library -------- - -- tkFileDialog exposes a Directory class and askdirectory - convenience function. - -- Symbolic group names in regular expressions must be unique. For - example, the regexp r'(?P)(?P)' is not allowed, because a - single name can't mean both "group 1" and "group 2" simultaneously. - Python 2.2 detects this error at regexp compilation time; - previously, the error went undetected, and results were - unpredictable. Also in sre, the pattern.split(), pattern.sub(), and - pattern.subn() methods have been rewritten in C. Also, an - experimental function/method finditer() has been added, which works - like findall() but returns an iterator. - -- Tix exposes more commands through the classes DirSelectBox, - DirSelectDialog, ListNoteBook, Meter, CheckList, and the - methods tix_addbitmapdir, tix_cget, tix_configure, tix_filedialog, - tix_getbitmap, tix_getimage, tix_option_get, and tix_resetoptions. - -- Traceback objects are now scanned by cyclic garbage collection, so - cycles created by casual use of sys.exc_info() no longer cause - permanent memory leaks (provided garbage collection is enabled). - -- os.extsep -- a new variable needed by the RISCOS support. It is the - separator used by extensions, and is '.' on all platforms except - RISCOS, where it is '/'. There is no need to use this variable - unless you have a masochistic desire to port your code to RISCOS. - -- mimetypes.py has optional support for non-standard, but commonly - found types. guess_type() and guess_extension() now accept an - optional 'strict' flag, defaulting to true, which controls whether - recognize non-standard types or not. A few non-standard types we - know about have been added. Also, when run as a script, there are - new -l and -e options. - -- statcache is now deprecated. - -- email.Utils.formatdate() now produces the preferred RFC 2822 style - dates with numeric timezones (it used to produce obsolete dates - hard coded to "GMT" timezone). An optional 'localtime' flag is - added to produce dates in the local timezone, with daylight savings - time properly taken into account. - -- In pickle and cPickle, instead of masking errors in load() by - transforming them into SystemError, we let the original exception - propagate out. Also, implement support for __safe_for_unpickling__ - in pickle, as it already was supported in cPickle. - -Tools/Demos ------------ - -Build ------ - -- The dbm module is built using libdb1 if available. The bsddb module - is built with libdb3 if available. - -- Misc/Makefile.pre.in has been removed by BDFL pronouncement. - -C API ------ - -- New function PySequence_Fast_GET_SIZE() returns the size of a non- - NULL result from PySequence_Fast(), more quickly than calling - PySequence_Size(). - -- New argument unpacking function PyArg_UnpackTuple() added. - -- New functions PyObject_CallFunctionObjArgs() and - PyObject_CallMethodObjArgs() have been added to make it more - convenient and efficient to call functions and methods from C. - -- PyArg_ParseTupleAndKeywords() no longer masks errors, so it's - possible that this will propagate errors it didn't before. - -- New function PyObject_CheckReadBuffer(), which returns true if its - argument supports the single-segment readable buffer interface. - -New platforms -------------- - -- We've finally confirmed that this release builds on HP-UX 11.00, - *with* threads, and passes the test suite. - -- Thanks to a series of patches from Michael Muller, Python may build - again under OS/2 Visual Age C++. - -- Updated RISCOS port by Dietmar Schwertberger. - -Tests ------ - -- Added a test script for the curses module. It isn't run automatically; - regrtest.py must be run with '-u curses' to enable it. - -Windows -------- - -Mac ----- - -- PythonScript has been moved to unsupported and is slated to be - removed completely in the next release. - -- It should now be possible to build applets that work on both OS9 and - OSX. - -- The core is now linked with CoreServices not Carbon; as a side - result, default 8bit encoding on OSX is now ASCII. - -- Python should now build on OSX 10.1.1 - - -What's New in Python 2.2b1? -=========================== - -*Release date: 19-Oct-2001* - -Type/class unification and new-style classes --------------------------------------------- - -- New-style classes are now always dynamic (except for built-in and - extension types). There is no longer a performance penalty, and I - no longer see another reason to keep this baggage around. One relic - remains: the __dict__ of a new-style class is a read-only proxy; you - must set the class's attribute to modify it. As a consequence, the - __defined__ attribute of new-style types no longer exists, for lack - of need: there is once again only one __dict__ (although in the - future a __cache__ may be resurrected with a similar function, if I - can prove that it actually speeds things up). - -- C.__doc__ now works as expected for new-style classes (in 2.2a4 it - always returned None, even when there was a class docstring). - -- doctest now finds and runs docstrings attached to new-style classes, - class methods, static methods, and properties. - -Core and builtins ------------------ - -- A very subtle syntactical pitfall in list comprehensions was fixed. - For example: [a+b for a in 'abc', for b in 'def']. The comma in - this example is a mistake. Previously, this would silently let 'a' - iterate over the singleton tuple ('abc',), yielding ['abcd', 'abce', - 'abcf'] rather than the intended ['ad', 'ae', 'af', 'bd', 'be', - 'bf', 'cd', 'ce', 'cf']. Now, this is flagged as a syntax error. - Note that [a for a in ] is a convoluted way to say - [] anyway, so it's not like any expressiveness is lost. - -- getattr(obj, name, default) now only catches AttributeError, as - documented, rather than returning the default value for all - exceptions (which could mask bugs in a __getattr__ hook, for - example). - -- Weak reference objects are now part of the core and offer a C API. - A bug which could allow a core dump when binary operations involved - proxy reference has been fixed. weakref.ReferenceError is now a - built-in exception. - -- unicode(obj) now behaves more like str(obj), accepting arbitrary - objects, and calling a __unicode__ method if it exists. - unicode(obj, encoding) and unicode(obj, encoding, errors) still - require an 8-bit string or character buffer argument. - -- isinstance() now allows any object as the first argument and a - class, a type or something with a __bases__ tuple attribute for the - second argument. The second argument may also be a tuple of a - class, type, or something with __bases__, in which case isinstance() - will return true if the first argument is an instance of any of the - things contained in the second argument tuple. E.g. - - isinstance(x, (A, B)) - - returns true if x is an instance of A or B. - -Extension modules ------------------ - -- thread.start_new_thread() now returns the thread ID (previously None). - -- binascii has now two quopri support functions, a2b_qp and b2a_qp. - -- readline now supports setting the startup_hook and the - pre_event_hook, and adds the add_history() function. - -- os and posix supports chroot(), setgroups() and unsetenv() where - available. The stat(), fstat(), statvfs() and fstatvfs() functions - now return "pseudo-sequences" -- the various fields can now be - accessed as attributes (e.g. os.stat("/").st_mtime) but for - backwards compatibility they also behave as a fixed-length sequence. - Some platform-specific fields (e.g. st_rdev) are only accessible as - attributes. - -- time: localtime(), gmtime() and strptime() now return a - pseudo-sequence similar to the os.stat() return value, with - attributes like tm_year etc. - -- Decompression objects in the zlib module now accept an optional - second parameter to decompress() that specifies the maximum amount - of memory to use for the uncompressed data. - -- optional SSL support in the socket module now exports OpenSSL - functions RAND_add(), RAND_egd(), and RAND_status(). These calls - are useful on platforms like Solaris where OpenSSL does not - automatically seed its PRNG. Also, the keyfile and certfile - arguments to socket.ssl() are now optional. - -- posixmodule (and by extension, the os module on POSIX platforms) now - exports O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW. - -Library -------- - -- doctest now excludes functions and classes not defined by the module - being tested, thanks to Tim Hochberg. - -- HotShot, a new profiler implemented using a C-based callback, has - been added. This substantially reduces the overhead of profiling, - but it is still quite preliminary. Support modules and - documentation will be added in upcoming releases (before 2.2 final). - -- profile now produces correct output in situations where an exception - raised in Python is cleared by C code (e.g. hasattr()). This used - to cause wrong output, including spurious claims of recursive - functions and attribution of time spent to the wrong function. - - The code and documentation for the derived OldProfile and HotProfile - profiling classes was removed. The code hasn't worked for years (if - you tried to use them, they raised exceptions). OldProfile - intended to reproduce the behavior of the profiler Python used more - than 7 years ago, and isn't interesting anymore. HotProfile intended - to provide a faster profiler (but producing less information), and - that's a worthy goal we intend to meet via a different approach (but - without losing information). - -- Profile.calibrate() has a new implementation that should deliver - a much better system-specific calibration constant. The constant can - now be specified in an instance constructor, or as a Profile class or - instance variable, instead of by editing profile.py's source code. - Calibration must still be done manually (see the docs for the profile - module). - - Note that Profile.calibrate() must be overridden by subclasses. - Improving the accuracy required exploiting detailed knowledge of - profiler internals; the earlier method abstracted away the details - and measured a simplified model instead, but consequently computed - a constant too small by a factor of 2 on some modern machines. - -- quopri's encode and decode methods take an optional header parameter, - which indicates whether output is intended for the header 'Q' - encoding. - -- The SocketServer.ThreadingMixIn class now closes the request after - finish_request() returns. (Not when it errors out though.) - -- The nntplib module's NNTP.body() method has grown a 'file' argument - to allow saving the message body to a file. - -- The email package has added a class email.Parser.HeaderParser which - only parses headers and does not recurse into the message's body. - Also, the module/class MIMEAudio has been added for representing - audio data (contributed by Anthony Baxter). - -- ftplib should be able to handle files > 2GB. - -- ConfigParser.getboolean() now also interprets TRUE, FALSE, YES, NO, - ON, and OFF. - -- xml.dom.minidom NodeList objects now support the length attribute - and item() method as required by the DOM specifications. - -Tools/Demos ------------ - -- Demo/dns was removed. It no longer serves any purpose; a package - derived from it is now maintained by Anthony Baxter, see - http://PyDNS.SourceForge.net. - -- The freeze tool has been made more robust, and two new options have - been added: -X and -E. - -Build ------ - -- configure will use CXX in LINKCC if CXX is used to build main() and - the system requires to link a C++ main using the C++ compiler. - -C API ------ - -- The documentation for the tp_compare slot is updated to require that - the return value must be -1, 0, 1; an arbitrary number <0 or >0 is - not correct. This is not yet enforced but will be enforced in - Python 2.3; even later, we may use -2 to indicate errors and +2 for - "NotImplemented". Right now, -1 should be used for an error return. - -- PyLong_AsLongLong() now accepts int (as well as long) arguments. - Consequently, PyArg_ParseTuple's 'L' code also accepts int (as well - as long) arguments. - -- PyThread_start_new_thread() now returns a long int giving the thread - ID, if one can be calculated; it returns -1 for error, 0 if no - thread ID is calculated (this is an incompatible change, but only - the thread module used this API). This code has only really been - tested on Linux and Windows; other platforms please beware (and - report any bugs or strange behavior). - -- PyUnicode_FromEncodedObject() no longer accepts Unicode objects as - input. - -New platforms -------------- - -Tests ------ - -Windows -------- - -- Installer: If you install IDLE, and don't disable file-extension - registration, a new "Edit with IDLE" context (right-click) menu entry - is created for .py and .pyw files. - -- The signal module now supports SIGBREAK on Windows, thanks to Steven - Scott. Note that SIGBREAK is unique to Windows. The default SIGBREAK - action remains to call Win32 ExitProcess(). This can be changed via - signal.signal(). For example:: - - # Make Ctrl+Break raise KeyboardInterrupt, like Python's default Ctrl+C - # (SIGINT) behavior. - import signal - signal.signal(signal.SIGBREAK, signal.default_int_handler) - - try: - while 1: - pass - except KeyboardInterrupt: - # We get here on Ctrl+C or Ctrl+Break now; if we had not changed - # SIGBREAK, only on Ctrl+C (and Ctrl+Break would terminate the - # program without the possibility for any Python-level cleanup). - print "Clean exit" - - -What's New in Python 2.2a4? -=========================== - -*Release date: 28-Sep-2001* - -Type/class unification and new-style classes --------------------------------------------- - -- pydoc and inspect are now aware of new-style classes; - e.g. help(list) at the interactive prompt now shows proper - documentation for all operations on list objects. - -- Applications using Jim Fulton's ExtensionClass module can now safely - be used with Python 2.2. In particular, Zope 2.4.1 now works with - Python 2.2 (as well as with Python 2.1.1). The Demo/metaclass - examples also work again. It is hoped that Gtk and Boost also work - with 2.2a4 and beyond. (If you can confirm this, please write - webmaster@python.org; if there are still problems, please open a bug - report on SourceForge.) - -- property() now takes 4 keyword arguments: fget, fset, fdel and doc. - These map to read-only attributes 'fget', 'fset', 'fdel', and '__doc__' - in the constructed property object. fget, fset and fdel weren't - discoverable from Python in 2.2a3. __doc__ is new, and allows to - associate a docstring with a property. - -- Comparison overloading is now more completely implemented. For - example, a str subclass instance can properly be compared to a str - instance, and it can properly overload comparison. Ditto for most - other built-in object types. - -- The repr() of new-style classes has changed; instead of a new-style class is now rendered as , - *except* for built-in types, which are still rendered as (to avoid upsetting existing code that might parse or - otherwise rely on repr() of certain type objects). - -- The repr() of new-style objects is now always ; - previously, it was sometimes . - -- For new-style classes, what was previously called __getattr__ is now - called __getattribute__. This method, if defined, is called for - *every* attribute access. A new __getattr__ hook more similar to the - one in classic classes is defined which is called only if regular - attribute access raises AttributeError; to catch *all* attribute - access, you can use __getattribute__ (for new-style classes). If - both are defined, __getattribute__ is called first, and if it raises - AttributeError, __getattr__ is called. - -- The __class__ attribute of new-style objects can be assigned to. - The new class must have the same C-level object layout as the old - class. - -- The builtin file type can be subclassed now. In the usual pattern, - "file" is the name of the builtin type, and file() is a new builtin - constructor, with the same signature as the builtin open() function. - file() is now the preferred way to open a file. - -- Previously, __new__ would only see sequential arguments passed to - the type in a constructor call; __init__ would see both sequential - and keyword arguments. This made no sense whatsoever any more, so - now both __new__ and __init__ see all arguments. - -- Previously, hash() applied to an instance of a subclass of str or - unicode always returned 0. This has been repaired. - -- Previously, an operation on an instance of a subclass of an - immutable type (int, long, float, complex, tuple, str, unicode), - where the subtype didn't override the operation (and so the - operation was handled by the builtin type), could return that - instance instead a value of the base type. For example, if s was of - a str subclass type, s[:] returned s as-is. Now it returns a str - with the same value as s. - -- Provisional support for pickling new-style objects has been added. - -Core ----- - -- file.writelines() now accepts any iterable object producing strings. - -- PyUnicode_FromEncodedObject() now works very much like - PyObject_Str(obj) in that it tries to use __str__/tp_str - on the object if the object is not a string or buffer. This - makes unicode() behave like str() when applied to non-string/buffer - objects. - -- PyFile_WriteObject now passes Unicode objects to the file's write - method. As a result, all file-like objects which may be the target - of a print statement must support Unicode objects, i.e. they must - at least convert them into ASCII strings. - -- Thread scheduling on Solaris should be improved; it is no longer - necessary to insert a small sleep at the start of a thread in order - to let other runnable threads be scheduled. - -Library -------- - -- StringIO.StringIO instances and cStringIO.StringIO instances support - read character buffer compatible objects for their .write() methods. - These objects are converted to strings and then handled as such - by the instances. - -- The "email" package has been added. This is basically a port of the - mimelib package with API changes - and some implementations updated to use iterators and generators. - -- difflib.ndiff() and difflib.Differ.compare() are generators now. This - restores the ability of Tools/scripts/ndiff.py to start producing output - before the entire comparison is complete. - -- StringIO.StringIO instances and cStringIO.StringIO instances support - iteration just like file objects (i.e. their .readline() method is - called for each iteration until it returns an empty string). - -- The codecs module has grown four new helper APIs to access - builtin codecs: getencoder(), getdecoder(), getreader(), - getwriter(). - -- SimpleXMLRPCServer: a new module (based upon SimpleHTMLServer) - simplifies writing XML RPC servers. - -- os.path.realpath(): a new function that returns the absolute pathname - after interpretation of symbolic links. On non-Unix systems, this - is an alias for os.path.abspath(). - -- operator.indexOf() (PySequence_Index() in the C API) now works with any - iterable object. - -- smtplib now supports various authentication and security features of - the SMTP protocol through the new login() and starttls() methods. - -- hmac: a new module implementing keyed hashing for message - authentication. - -- mimetypes now recognizes more extensions and file types. At the - same time, some mappings not sanctioned by IANA were removed. - -- The "compiler" package has been brought up to date to the state of - Python 2.2 bytecode generation. It has also been promoted from a - Tool to a standard library package. (Tools/compiler still exists as - a sample driver.) - -Build ------ - -- Large file support (LFS) is now automatic when the platform supports - it; no more manual configuration tweaks are needed. On Linux, at - least, it's possible to have a system whose C library supports large - files but whose kernel doesn't; in this case, large file support is - still enabled but doesn't do you any good unless you upgrade your - kernel or share your Python executable with another system whose - kernel has large file support. - -- The configure script now supplies plausible defaults in a - cross-compilation environment. This doesn't mean that the supplied - values are always correct, or that cross-compilation now works - flawlessly -- but it's a first step (and it shuts up most of - autoconf's warnings about AC_TRY_RUN). - -- The Unix build is now a bit less chatty, courtesy of the parser - generator. The build is completely silent (except for errors) when - using "make -s", thanks to a -q option to setup.py. - -C API ------ - -- The "structmember" API now supports some new flag bits to deny read - and/or write access to attributes in restricted execution mode. - -New platforms -------------- - -- Compaq's iPAQ handheld, running the "familiar" Linux distribution - (http://familiar.handhelds.org). - -Tests ------ - -- The "classic" standard tests, which work by comparing stdout to - an expected-output file under Lib/test/output/, no longer stop at - the first mismatch. Instead the test is run to completion, and a - variant of ndiff-style comparison is used to report all differences. - This is much easier to understand than the previous style of reporting. - -- The unittest-based standard tests now use regrtest's test_main() - convention, instead of running as a side-effect of merely being - imported. This allows these tests to be run in more natural and - flexible ways as unittests, outside the regrtest framework. - -- regrtest.py is much better integrated with unittest and doctest now, - especially in regard to reporting errors. - -Windows -------- - -- Large file support now also works for files > 4GB, on filesystems - that support it (NTFS under Windows 2000). See "What's New in - Python 2.2a3" for more detail. - - -What's New in Python 2.2a3? -=========================== - -*Release Date: 07-Sep-2001* - -Core ----- - -- Conversion of long to float now raises OverflowError if the long is too - big to represent as a C double. - -- The 3-argument builtin pow() no longer allows a third non-None argument - if either of the first two arguments is a float, or if both are of - integer types and the second argument is negative (in which latter case - the arguments are converted to float, so this is really the same - restriction). - -- The builtin dir() now returns more information, and sometimes much - more, generally naming all attributes of an object, and all attributes - reachable from the object via its class, and from its class's base - classes, and so on from them too. Example: in 2.2a2, dir([]) returned - an empty list. In 2.2a3, - - >>> dir([]) - ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', - '__eq__', '__ge__', '__getattr__', '__getitem__', '__getslice__', - '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__le__', - '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__repr__', - '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__', - 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', - 'reverse', 'sort'] - - dir(module) continues to return only the module's attributes, though. - -- Overflowing operations on plain ints now return a long int rather - than raising OverflowError. This is a partial implementation of PEP - 237. You can use -Wdefault::OverflowWarning to enable a warning for - this situation, and -Werror::OverflowWarning to revert to the old - OverflowError exception. - -- A new command line option, -Q, is added to control run-time - warnings for the use of classic division. (See PEP 238.) Possible - values are -Qold, -Qwarn, -Qwarnall, and -Qnew. The default is - -Qold, meaning the / operator has its classic meaning and no - warnings are issued. Using -Qwarn issues a run-time warning about - all uses of classic division for int and long arguments; -Qwarnall - also warns about classic division for float and complex arguments - (for use with fixdiv.py). - [Note: the remainder of this item (preserved below) became - obsolete in 2.2c1 -- -Qnew has global effect in 2.2] :: - - Using -Qnew is questionable; it turns on new division by default, but - only in the __main__ module. You can usefully combine -Qwarn or - -Qwarnall and -Qnew: this gives the __main__ module new division, and - warns about classic division everywhere else. - -- Many built-in types can now be subclassed. This applies to int, - long, float, str, unicode, and tuple. (The types complex, list and - dictionary can also be subclassed; this was introduced earlier.) - Note that restrictions apply when subclassing immutable built-in - types: you can only affect the value of the instance by overloading - __new__. You can add mutable attributes, and the subclass instances - will have a __dict__ attribute, but you cannot change the "value" - (as implemented by the base class) of an immutable subclass instance - once it is created. - -- The dictionary constructor now takes an optional argument, a - mapping-like object, and initializes the dictionary from its - (key, value) pairs. - -- A new built-in type, super, has been added. This facilitates making - "cooperative super calls" in a multiple inheritance setting. For an - explanation, see http://www.python.org/2.2/descrintro.html#cooperation - -- A new built-in type, property, has been added. This enables the - creation of "properties". These are attributes implemented by - getter and setter functions (or only one of these for read-only or - write-only attributes), without the need to override __getattr__. - See http://www.python.org/2.2/descrintro.html#property - -- The syntax of floating-point and imaginary literals has been - liberalized, to allow leading zeroes. Examples of literals now - legal that were SyntaxErrors before: - - 00.0 0e3 0100j 07.5 00000000000000000008. - -- An old tokenizer bug allowed floating point literals with an incomplete - exponent, such as 1e and 3.1e-. Such literals now raise SyntaxError. - -Library -------- - -- telnetlib includes symbolic names for the options, and support for - setting an option negotiation callback. It also supports processing - of suboptions. - -- The new C standard no longer requires that math libraries set errno to - ERANGE on overflow. For platform libraries that exploit this new - freedom, Python's overflow-checking was wholly broken. A new overflow- - checking scheme attempts to repair that, but may not be reliable on all - platforms (C doesn't seem to provide anything both useful and portable - in this area anymore). - -- Asynchronous timeout actions are available through the new class - threading.Timer. - -- math.log and math.log10 now return sensible results for even huge - long arguments. For example, math.log10(10 ** 10000) ~= 10000.0. - -- A new function, imp.lock_held(), returns 1 when the import lock is - currently held. See the docs for the imp module. - -- pickle, cPickle and marshal on 32-bit platforms can now correctly read - dumps containing ints written on platforms where Python ints are 8 bytes. - When read on a box where Python ints are 4 bytes, such values are - converted to Python longs. - -- In restricted execution mode (using the rexec module), unmarshalling - code objects is no longer allowed. This plugs a security hole. - -- unittest.TestResult instances no longer store references to tracebacks - generated by test failures. This prevents unexpected dangling references - to objects that should be garbage collected between tests. - -Tools ------ - -- Tools/scripts/fixdiv.py has been added which can be used to fix - division operators as per PEP 238. - -Build ------ - -- If you are an adventurous person using Mac OS X you may want to look at - Mac/OSX. There is a Makefile there that will build Python as a real Mac - application, which can be used for experimenting with Carbon or Cocoa. - Discussion of this on pythonmac-sig, please. - -C API ------ - -- New function PyObject_Dir(obj), like Python __builtin__.dir(obj). - -- Note that PyLong_AsDouble can fail! This has always been true, but no - callers checked for it. It's more likely to fail now, because overflow - errors are properly detected now. The proper way to check:: - - double x = PyLong_AsDouble(some_long_object); - if (x == -1.0 && PyErr_Occurred()) { - /* The conversion failed. */ - } - -- The GC API has been changed. Extensions that use the old API will still - compile but will not participate in GC. To upgrade an extension - module: - - - rename Py_TPFLAGS_GC to PyTPFLAGS_HAVE_GC - - - use PyObject_GC_New or PyObject_GC_NewVar to allocate objects and - PyObject_GC_Del to deallocate them - - - rename PyObject_GC_Init to PyObject_GC_Track and PyObject_GC_Fini - to PyObject_GC_UnTrack - - - remove PyGC_HEAD_SIZE from object size calculations - - - remove calls to PyObject_AS_GC and PyObject_FROM_GC - -- Two new functions: PyString_FromFormat() and PyString_FromFormatV(). - These can be used safely to construct string objects from a - sprintf-style format string (similar to the format string supported - by PyErr_Format()). - -New platforms -------------- - -- Stephen Hansen contributed patches sufficient to get a clean compile - under Borland C (Windows), but he reports problems running it and ran - out of time to complete the port. Volunteers? Expect a MemoryError - when importing the types module; this is probably shallow, and - causing later failures too. - -Tests ------ - -Windows -------- - -- Large file support is now enabled on Win32 platforms as well as on - Win64. This means that, for example, you can use f.tell() and f.seek() - to manipulate files larger than 2 gigabytes (provided you have enough - disk space, and are using a Windows filesystem that supports large - partitions). Windows filesystem limits: FAT has a 2GB (gigabyte) - filesize limit, and large file support makes no difference there. - FAT32's limit is 4GB, and files >= 2GB are easier to use from Python now. - NTFS has no practical limit on file size, and files of any size can be - used from Python now. - -- The w9xpopen hack is now used on Windows NT and 2000 too when COMPSPEC - points to command.com (patch from Brian Quinlan). - - -What's New in Python 2.2a2? -=========================== - -*Release Date: 22-Aug-2001* - -Build ------ - -- Tim Peters developed a brand new Windows installer using Wise 8.1, - generously donated to us by Wise Solutions. - -- configure supports a new option --enable-unicode, with the values - ucs2 and ucs4 (new in 2.2a1). With --disable-unicode, the Unicode - type and supporting code is completely removed from the interpreter. - -- A new configure option --enable-framework builds a Mac OS X framework, - which "make frameworkinstall" will install. This provides a starting - point for more mac-like functionality, join pythonmac-sig@python.org - if you are interested in helping. - -- The NeXT platform is no longer supported. - -- The 'new' module is now statically linked. - -Tools ------ - -- The new Tools/scripts/cleanfuture.py can be used to automatically - edit out obsolete future statements from Python source code. See - the module docstring for details. - -Tests ------ - -- regrtest.py now knows which tests are expected to be skipped on some - platforms, allowing to give clearer test result output. regrtest - also has optional --use/-u switch to run normally disabled tests - which require network access or consume significant disk resources. - -- Several new tests in the standard test suite, with special thanks to - Nick Mathewson. - -Core ----- - -- The floor division operator // has been added as outlined in PEP - 238. The / operator still provides classic division (and will until - Python 3.0) unless "from __future__ import division" is included, in - which case the / operator will provide true division. The operator - module provides truediv() and floordiv() functions. Augmented - assignment variants are included, as are the equivalent overloadable - methods and C API methods. See the PEP for a full discussion: - - -- Future statements are now effective in simulated interactive shells - (like IDLE). This should "just work" by magic, but read Michael - Hudson's "Future statements in simulated shells" PEP 264 for full - details: . - -- The type/class unification (PEP 252-253) was integrated into the - trunk and is not so tentative any more (the exact specification of - some features is still tentative). A lot of work has done on fixing - bugs and adding robustness and features (performance still has to - come a long way). - -- Warnings about a mismatch in the Python API during extension import - now use the Python warning framework (which makes it possible to - write filters for these warnings). - -- A function's __dict__ (aka func_dict) will now always be a - dictionary. It used to be possible to delete it or set it to None, - but now both actions raise TypeErrors. It is still legal to set it - to a dictionary object. Getting func.__dict__ before any attributes - have been assigned now returns an empty dictionary instead of None. - -- A new command line option, -E, was added which disables the use of - all environment variables, or at least those that are specifically - significant to Python. Usually those have a name starting with - "PYTHON". This was used to fix a problem where the tests fail if - the user happens to have PYTHONHOME or PYTHONPATH pointing to an - older distribution. - -Library -------- - -- New class Differ and new functions ndiff() and restore() in difflib.py. - These package the algorithms used by the popular Tools/scripts/ndiff.py, - for programmatic reuse. - -- New function xml.sax.saxutils.quoteattr(): Quote an XML attribute - value using the minimal quoting required for the value; more - reliable than using xml.sax.saxutils.escape() for attribute values. - -- Readline completion support for cmd.Cmd was added. - -- Calling os.tempnam() or os.tmpnam() generate RuntimeWarnings. - -- Added function threading.BoundedSemaphore() - -- Added Ka-Ping Yee's cgitb.py module. - -- The 'new' module now exposes the CO_xxx flags. - -- The gc module offers the get_referents function. - -New platforms -------------- - -C API ------ - -- Two new APIs PyOS_snprintf() and PyOS_vsnprintf() were added - which provide a cross-platform implementations for the - relatively new snprintf()/vsnprintf() C lib APIs. In contrast to - the standard sprintf() and vsprintf() C lib APIs, these versions - apply bounds checking on the used buffer which enhances protection - against buffer overruns. - -- Unicode APIs now use name mangling to assure that mixing interpreters - and extensions using different Unicode widths is rendered next to - impossible. Trying to import an incompatible Unicode-aware extension - will result in an ImportError. Unicode extensions writers must make - sure to check the Unicode width compatibility in their extensions by - using at least one of the mangled Unicode APIs in the extension. - -- Two new flags METH_NOARGS and METH_O are available in method definition - tables to simplify implementation of methods with no arguments and a - single untyped argument. Calling such methods is more efficient than - calling corresponding METH_VARARGS methods. METH_OLDARGS is now - deprecated. - -Windows -------- - -- "import module" now compiles module.pyw if it exists and nothing else - relevant is found. - - -What's New in Python 2.2a1? -=========================== - -*Release date: 18-Jul-2001* - -Core ----- - -- TENTATIVELY, a large amount of code implementing much of what's - described in PEP 252 (Making Types Look More Like Classes) and PEP - 253 (Subtyping Built-in Types) was added. This will be released - with Python 2.2a1. Documentation will be provided separately - through http://www.python.org/2.2/. The purpose of releasing this - with Python 2.2a1 is to test backwards compatibility. It is - possible, though not likely, that a decision is made not to release - this code as part of 2.2 final, if any serious backwards - incompatibilities are found during alpha testing that cannot be - repaired. - -- Generators were added; this is a new way to create an iterator (see - below) using what looks like a simple function containing one or - more 'yield' statements. See PEP 255. Since this adds a new - keyword to the language, this feature must be enabled by including a - future statement: "from __future__ import generators" (see PEP 236). - Generators will become a standard feature in a future release - (probably 2.3). Without this future statement, 'yield' remains an - ordinary identifier, but a warning is issued each time it is used. - (These warnings currently don't conform to the warnings framework of - PEP 230; we intend to fix this in 2.2a2.) - -- The UTF-16 codec was modified to be more RFC compliant. It will now - only remove BOM characters at the start of the string and then - only if running in native mode (UTF-16-LE and -BE won't remove a - leading BMO character). - -- Strings now have a new method .decode() to complement the already - existing .encode() method. These two methods provide direct access - to the corresponding decoders and encoders of the registered codecs. - - To enhance the usability of the .encode() method, the special - casing of Unicode object return values was dropped (Unicode objects - were auto-magically converted to string using the default encoding). - - Both methods will now return whatever the codec in charge of the - requested encoding returns as object, e.g. Unicode codecs will - return Unicode objects when decoding is requested ("äöü".decode("latin-1") - will return u"äöü"). This enables codec writer to create codecs - for various simple to use conversions. - - New codecs were added to demonstrate these new features (the .encode() - and .decode() columns indicate the type of the returned objects): - - +---------+-----------+-----------+-----------------------------+ - |Name | .encode() | .decode() | Description | - +=========+===========+===========+=============================+ - |uu | string | string | UU codec (e.g. for email) | - +---------+-----------+-----------+-----------------------------+ - |base64 | string | string | base64 codec | - +---------+-----------+-----------+-----------------------------+ - |quopri | string | string | quoted-printable codec | - +---------+-----------+-----------+-----------------------------+ - |zlib | string | string | zlib compression | - +---------+-----------+-----------+-----------------------------+ - |hex | string | string | 2-byte hex codec | - +---------+-----------+-----------+-----------------------------+ - |rot-13 | string | Unicode | ROT-13 Unicode charmap codec| - +---------+-----------+-----------+-----------------------------+ - -- Some operating systems now support the concept of a default Unicode - encoding for file system operations. Notably, Windows supports 'mbcs' - as the default. The Macintosh will also adopt this concept in the medium - term, although the default encoding for that platform will be other than - 'mbcs'. - - On operating system that support non-ASCII filenames, it is common for - functions that return filenames (such as os.listdir()) to return Python - string objects pre-encoded using the default file system encoding for - the platform. As this encoding is likely to be different from Python's - default encoding, converting this name to a Unicode object before passing - it back to the Operating System would result in a Unicode error, as Python - would attempt to use its default encoding (generally ASCII) rather than - the default encoding for the file system. - - In general, this change simply removes surprises when working with - Unicode and the file system, making these operations work as you expect, - increasing the transparency of Unicode objects in this context. - See [????] for more details, including examples. - -- Float (and complex) literals in source code were evaluated to full - precision only when running from a .py file; the same code loaded from a - .pyc (or .pyo) file could suffer numeric differences starting at about the - 12th significant decimal digit. For example, on a machine with IEEE-754 - floating arithmetic, - - x = 9007199254740992.0 - print long(x) - - printed 9007199254740992 if run directly from .py, but 9007199254740000 - if from a compiled (.pyc or .pyo) file. This was due to marshal using - str(float) instead of repr(float) when building code objects. marshal - now uses repr(float) instead, which should reproduce floats to full - machine precision (assuming the platform C float<->string I/O conversion - functions are of good quality). - - This may cause floating-point results to change in some cases, and - usually for the better, but may also cause numerically unstable - algorithms to break. - -- The implementation of dicts suffers fewer collisions, which has speed - benefits. However, the order in which dict entries appear in dict.keys(), - dict.values() and dict.items() may differ from previous releases for a - given dict. Nothing is defined about this order, so no program should - rely on it. Nevertheless, it's easy to write test cases that rely on the - order by accident, typically because of printing the str() or repr() of a - dict to an "expected results" file. See Lib/test/test_support.py's new - sortdict(dict) function for a simple way to display a dict in sorted - order. - -- Many other small changes to dicts were made, resulting in faster - operation along the most common code paths. - -- Dictionary objects now support the "in" operator: "x in dict" means - the same as dict.has_key(x). - -- The update() method of dictionaries now accepts generic mapping - objects. Specifically the argument object must support the .keys() - and __getitem__() methods. This allows you to say, for example, - {}.update(UserDict()) - -- Iterators were added; this is a generalized way of providing values - to a for loop. See PEP 234. There's a new built-in function iter() - to return an iterator. There's a new protocol to get the next value - from an iterator using the next() method (in Python) or the - tp_iternext slot (in C). There's a new protocol to get iterators - using the __iter__() method (in Python) or the tp_iter slot (in C). - Iterating (i.e. a for loop) over a dictionary generates its keys. - Iterating over a file generates its lines. - -- The following functions were generalized to work nicely with iterator - arguments:: - - map(), filter(), reduce(), zip() - list(), tuple() (PySequence_Tuple() and PySequence_Fast() in C API) - max(), min() - join() method of strings - extend() method of lists - 'x in y' and 'x not in y' (PySequence_Contains() in C API) - operator.countOf() (PySequence_Count() in C API) - right-hand side of assignment statements with multiple targets, such as :: - x, y, z = some_iterable_object_returning_exactly_3_values - -- Accessing module attributes is significantly faster (for example, - random.random or os.path or yourPythonModule.yourAttribute). - -- Comparing dictionary objects via == and != is faster, and now works even - if the keys and values don't support comparisons other than ==. - -- Comparing dictionaries in ways other than == and != is slower: there were - insecurities in the dict comparison implementation that could cause Python - to crash if the element comparison routines for the dict keys and/or - values mutated the dicts. Making the code bulletproof slowed it down. - -- Collisions in dicts are resolved via a new approach, which can help - dramatically in bad cases. For example, looking up every key in a dict - d with d.keys() == [i << 16 for i in range(20000)] is approximately 500x - faster now. Thanks to Christian Tismer for pointing out the cause and - the nature of an effective cure (last December! better late than never). - -- repr() is much faster for large containers (dict, list, tuple). - - -Library -------- - -- The constants ascii_letters, ascii_lowercase. and ascii_uppercase - were added to the string module. These a locale-independent - constants, unlike letters, lowercase, and uppercase. These are now - use in appropriate locations in the standard library. - -- The flags used in dlopen calls can now be configured using - sys.setdlopenflags and queried using sys.getdlopenflags. - -- Fredrik Lundh's xmlrpclib is now a standard library module. This - provides full client-side XML-RPC support. In addition, - Demo/xmlrpc/ contains two server frameworks (one SocketServer-based, - one asyncore-based). Thanks to Eric Raymond for the documentation. - -- The xrange() object is simplified: it no longer supports slicing, - repetition, comparisons, efficient 'in' checking, the tolist() - method, or the start, stop and step attributes. See PEP 260. - -- A new function fnmatch.filter to filter lists of file names was added. - -- calendar.py uses month and day names based on the current locale. - -- strop is now *really* obsolete (this was announced before with 1.6), - and issues DeprecationWarning when used (except for the four items - that are still imported into string.py). - -- Cookie.py now sorts key+value pairs by key in output strings. - -- pprint.isrecursive(object) didn't correctly identify recursive objects. - Now it does. - -- pprint functions now much faster for large containers (tuple, list, dict). - -- New 'q' and 'Q' format codes in the struct module, corresponding to C - types "long long" and "unsigned long long" (on Windows, __int64). In - native mode, these can be used only when the platform C compiler supports - these types (when HAVE_LONG_LONG is #define'd by the Python config - process), and then they inherit the sizes and alignments of the C types. - In standard mode, 'q' and 'Q' are supported on all platforms, and are - 8-byte integral types. - -- The site module installs a new built-in function 'help' that invokes - pydoc.help. It must be invoked as 'help()'; when invoked as 'help', - it displays a message reminding the user to use 'help()' or - 'help(object)'. - -Tests ------ - -- New test_mutants.py runs dict comparisons where the key and value - comparison operators mutate the dicts randomly during comparison. This - rapidly causes Python to crash under earlier releases (not for the faint - of heart: it can also cause Win9x to freeze or reboot!). - -- New test_pprint.py verifies that pprint.isrecursive() and - pprint.isreadable() return sensible results. Also verifies that simple - cases produce correct output. - -C API ------ - -- Removed the unused last_is_sticky argument from the internal - _PyTuple_Resize(). If this affects you, you were cheating. - -What's New in Python 2.1 (final)? -================================= - -We only changed a few things since the last release candidate, all in -Python library code: - -- A bug in the locale module was fixed that affected locales which - define no grouping for numeric formatting. - -- A few bugs in the weakref module's implementations of weak - dictionaries (WeakValueDictionary and WeakKeyDictionary) were fixed, - and the test suite was updated to check for these bugs. - -- An old bug in the os.path.walk() function (introduced in Python - 2.0!) was fixed: a non-existent file would cause an exception - instead of being ignored. - -- Fixed a few bugs in the new symtable module found by Neil Norwitz's - PyChecker. - - -What's New in Python 2.1c2? -=========================== - -A flurry of small changes, and one showstopper fixed in the nick of -time made it necessary to release another release candidate. The list -here is the *complete* list of patches (except version updates): - -Core - -- Tim discovered a nasty bug in the dictionary code, caused by - PyDict_Next() calling dict_resize(), and the GC code's use of - PyDict_Next() violating an assumption in dict_items(). This was - fixed with considerable amounts of band-aid, but the net effect is a - saner and more robust implementation. - -- Made a bunch of symbols static that were accidentally global. - -Build and Ports - -- The setup.py script didn't check for a new enough version of zlib - (1.1.3 is needed). Now it does. - -- Changed "make clean" target to also remove shared libraries. - -- Added a more general warning about the SGI Irix optimizer to README. - -Library - -- Fix a bug in urllib.basejoin("http://host", "../file.html") which - omitted the slash between host and file.html. - -- The mailbox module's _Mailbox class contained a completely broken - and undocumented seek() method. Ripped it out. - -- Fixed a bunch of typos in various library modules (urllib2, smtpd, - sgmllib, netrc, chunk) found by Neil Norwitz's PyChecker. - -- Fixed a few last-minute bugs in unittest. - -Extensions - -- Reverted the patch to the OpenSSL code in socketmodule.c to support - RAND_status() and the EGD, and the subsequent patch that tried to - fix it for pre-0.9.5 versions; the problem with the patch is that on - some systems it issues a warning whenever socket is imported, and - that's unacceptable. - -Tests - -- Fixed the pickle tests to work with "import test.test_pickle". - -- Tweaked test_locale.py to actually run the test Windows. - -- In distutils/archive_util.py, call zipfile.ZipFile() with mode "w", - not "wb" (which is not a valid mode at all). - -- Fix pstats browser crashes. Import readline if it exists to make - the user interface nicer. - -- Add "import thread" to the top of test modules that import the - threading module (test_asynchat and test_threadedtempfile). This - prevents test failures caused by a broken threading module resulting - from a previously caught failed import. - -- Changed test_asynchat.py to set the SO_REUSEADDR option; this was - needed on some platforms (e.g. Solaris 8) when the tests are run - twice in succession. - -- Skip rather than fail test_sunaudiodev if no audio device is found. - - -What's New in Python 2.1c1? -=========================== - -This list was significantly updated when 2.1c2 was released; the 2.1c1 -release didn't mention most changes that were actually part of 2.1c1: - -Legal - -- Copyright was assigned to the Python Software Foundation (PSF) and a - PSF license (very similar to the CNRI license) was added. - -- The CNRI copyright notice was updated to include 2001. - -Core - -- After a public outcry, assignment to __debug__ is no longer illegal; - instead, a warning is issued. It will become illegal in 2.2. - -- Fixed a core dump with "%#x" % 0, and changed the semantics so that - "%#x" now always prepends "0x", even if the value is zero. - -- Fixed some nits in the bytecode compiler. - -- Fixed core dumps when calling certain kinds of non-functions. - -- Fixed various core dumps caused by reference count bugs. - -Build and Ports - -- Use INSTALL_SCRIPT to install script files. - -- New port: SCO Unixware 7, by Billy G. Allie. - -- Updated RISCOS port. - -- Updated BeOS port and notes. - -- Various other porting problems resolved. - -Library - -- The TERMIOS and SOCKET modules are now truly obsolete and - unnecessary. Their symbols are incorporated in the termios and - socket modules. - -- Fixed some 64-bit bugs in pickle, cPickle, and struct, and added - better tests for pickling. - -- threading: make Condition.wait() robust against KeyboardInterrupt. - -- zipfile: add support to zipfile to support opening an archive - represented by an open file rather than a file name. Fix bug where - the archive was not properly closed. Fixed a bug in this bugfix - where flush() was called for a read-only file. - -- imputil: added an uninstall() method to the ImportManager. - -- Canvas: fixed bugs in lower() and tkraise() methods. - -- SocketServer: API change (added overridable close_request() method) - so that the TCP server can explicitly close the request. - -- pstats: Eric Raymond added a simple interactive statistics browser, - invoked when the module is run as a script. - -- locale: fixed a problem in format(). - -- webbrowser: made it work when the BROWSER environment variable has a - value like "/usr/bin/netscape". Made it auto-detect Konqueror for - KDE 2. Fixed some other nits. - -- unittest: changes to allow using a different exception than - AssertionError, and added a few more function aliases. Some other - small changes. - -- urllib, urllib2: fixed redirect problems and a coupleof other nits. - -- asynchat: fixed a critical bug in asynchat that slipped through the - 2.1b2 release. Fixed another rare bug. - -- Fix some unqualified except: clauses (always a bad code example). - -XML - -- pyexpat: new API get_version_string(). - -- Fixed some minidom bugs. - -Extensions - -- Fixed a core dump in _weakref. Removed the weakref.mapping() - function (it adds nothing to the API). - -- Rationalized the use of header files in the readline module, to make - it compile (albeit with some warnings) with the very recent readline - 4.2, without breaking for earlier versions. - -- Hopefully fixed a buffering problem in linuxaudiodev. - -- Attempted a fix to make the OpenSSL support in the socket module - work again with pre-0.9.5 versions of OpenSSL. - -Tests - -- Added a test case for asynchat and asyncore. - -- Removed coupling between tests where one test failing could break - another. - -Tools - -- Ping added an interactive help browser to pydoc, fixed some nits - in the rest of the pydoc code, and added some features to his - inspect module. - -- An updated python-mode.el version 4.1 which integrates Ken - Manheimer's pdbtrack.el. This makes debugging Python code via pdb - much nicer in XEmacs and Emacs. When stepping through your program - with pdb, in either the shell window or the *Python* window, the - source file and line will be tracked by an arrow. Very cool! - -- IDLE: syntax warnings in interactive mode are changed into errors. - -- Some improvements to Tools/webchecker (ignore some more URL types, - follow some more links). - -- Brought the Tools/compiler package up to date. - - -What's New in Python 2.1 beta 2? -================================ - -(Unlisted are many fixed bugs, more documentation, etc.) - -Core language, builtins, and interpreter - -- The nested scopes work (enabled by "from __future__ import - nested_scopes") is completed; in particular, the future now extends - into code executed through exec, eval() and execfile(), and into the - interactive interpreter. - -- When calling a base class method (e.g. BaseClass.__init__(self)), - this is now allowed even if self is not strictly spoken a class - instance (e.g. when using metaclasses or the Don Beaudry hook). - -- Slice objects are now comparable but not hashable; this prevents - dict[:] from being accepted but meaningless. - -- Complex division is now calculated using less braindead algorithms. - This doesn't change semantics except it's more likely to give useful - results in extreme cases. Complex repr() now uses full precision - like float repr(). - -- sgmllib.py now calls handle_decl() for simple declarations. - -- It is illegal to assign to the name __debug__, which is set when the - interpreter starts. It is effectively a compile-time constant. - -- A warning will be issued if a global statement for a variable - follows a use or assignment of that variable. - -Standard library - -- unittest.py, a unit testing framework by Steve Purcell (PyUNIT, - inspired by JUnit), is now part of the standard library. You now - have a choice of two testing frameworks: unittest requires you to - write testcases as separate code, doctest gathers them from - docstrings. Both approaches have their advantages and - disadvantages. - -- A new module Tix was added, which wraps the Tix extension library - for Tk. With that module, it is not necessary to statically link - Tix with _tkinter, since Tix will be loaded with Tcl's "package - require" command. See Demo/tix/. - -- tzparse.py is now obsolete. - -- In gzip.py, the seek() and tell() methods are removed -- they were - non-functional anyway, and it's better if callers can test for their - existence with hasattr(). - -Python/C API - -- PyDict_Next(): it is now safe to call PyDict_SetItem() with a key - that's already in the dictionary during a PyDict_Next() iteration. - This used to fail occasionally when a dictionary resize operation - could be triggered that would rehash all the keys. All other - modifications to the dictionary are still off-limits during a - PyDict_Next() iteration! - -- New extended APIs related to passing compiler variables around. - -- New abstract APIs PyObject_IsInstance(), PyObject_IsSubclass() - implement isinstance() and issubclass(). - -- Py_BuildValue() now has a "D" conversion to create a Python complex - number from a Py_complex C value. - -- Extensions types which support weak references must now set the - field allocated for the weak reference machinery to NULL themselves; - this is done to avoid the cost of checking each object for having a - weakly referencable type in PyObject_INIT(), since most types are - not weakly referencable. - -- PyFrame_FastToLocals() and PyFrame_LocalsToFast() copy bindings for - free variables and cell variables to and from the frame's f_locals. - -- Variants of several functions defined in pythonrun.h have been added - to support the nested_scopes future statement. The variants all end - in Flags and take an extra argument, a PyCompilerFlags *; examples: - PyRun_AnyFileExFlags(), PyRun_InteractiveLoopFlags(). These - variants may be removed in Python 2.2, when nested scopes are - mandatory. - -Distutils - -- the sdist command now writes a PKG-INFO file, as described in PEP 241, - into the release tree. - -- several enhancements to the bdist_wininst command from Thomas Heller - (an uninstaller, more customization of the installer's display) - -- from Jack Jansen: added Mac-specific code to generate a dialog for - users to specify the command-line (because providing a command-line with - MacPython is awkward). Jack also made various fixes for the Mac - and the Metrowerks compiler. - -- added 'platforms' and 'keywords' to the set of metadata that can be - specified for a distribution. - -- applied patches from Jason Tishler to make the compiler class work with - Cygwin. - - -What's New in Python 2.1 beta 1? -================================ - -Core language, builtins, and interpreter - -- Following an outcry from the community about the amount of code - broken by the nested scopes feature introduced in 2.1a2, we decided - to make this feature optional, and to wait until Python 2.2 (or at - least 6 months) to make it standard. The option can be enabled on a - per-module basis by adding "from __future__ import nested_scopes" at - the beginning of a module (before any other statements, but after - comments and an optional docstring). See PEP 236 (Back to the - __future__) for a description of the __future__ statement. PEP 227 - (Statically Nested Scopes) has been updated to reflect this change, - and to clarify the semantics in a number of endcases. - -- The nested scopes code, when enabled, has been hardened, and most - bugs and memory leaks in it have been fixed. - -- Compile-time warnings are now generated for a number of conditions - that will break or change in meaning when nested scopes are enabled: - - - Using "from...import *" or "exec" without in-clause in a function - scope that also defines a lambda or nested function with one or - more free (non-local) variables. The presence of the import* or - bare exec makes it impossible for the compiler to determine the - exact set of local variables in the outer scope, which makes it - impossible to determine the bindings for free variables in the - inner scope. To avoid the warning about import *, change it into - an import of explicitly name object, or move the import* statement - to the global scope; to avoid the warning about bare exec, use - exec...in... (a good idea anyway -- there's a possibility that - bare exec will be deprecated in the future). - - - Use of a global variable in a nested scope with the same name as a - local variable in a surrounding scope. This will change in - meaning with nested scopes: the name in the inner scope will - reference the variable in the outer scope rather than the global - of the same name. To avoid the warning, either rename the outer - variable, or use a global statement in the inner function. - -- An optional object allocator has been included. This allocator is - optimized for Python objects and should be faster and use less memory - than the standard system allocator. It is not enabled by default - because of possible thread safety problems. The allocator is only - protected by the Python interpreter lock and it is possible that some - extension modules require a thread safe allocator. The object - allocator can be enabled by providing the "--with-pymalloc" option to - configure. - -Standard library - -- pyexpat now detects the expat version if expat.h defines it. A - number of additional handlers are provided, which are only available - since expat 1.95. In addition, the methods SetParamEntityParsing and - GetInputContext of Parser objects are available with 1.95.x - only. Parser objects now provide the ordered_attributes and - specified_attributes attributes. A new module expat.model was added, - which offers a number of additional constants if 1.95.x is used. - -- xml.dom offers the new functions registerDOMImplementation and - getDOMImplementation. - -- xml.dom.minidom offers a toprettyxml method. A number of DOM - conformance issues have been resolved. In particular, Element now - has an hasAttributes method, and the handling of namespaces was - improved. - -- Ka-Ping Yee contributed two new modules: inspect.py, a module for - getting information about live Python code, and pydoc.py, a module - for interactively converting docstrings to HTML or text. - Tools/scripts/pydoc, which is now automatically installed into - /bin, uses pydoc.py to display documentation; try running - "pydoc -h" for instructions. "pydoc -g" pops up a small GUI that - lets you browse the module docstrings using a web browser. - -- New library module difflib.py, primarily packaging the SequenceMatcher - class at the heart of the popular ndiff.py file-comparison tool. - -- doctest.py (a framework for verifying Python code examples in docstrings) - is now part of the std library. - -Windows changes - -- A new entry in the Start menu, "Module Docs", runs "pydoc -g" -- a - small GUI that lets you browse the module docstrings using your - default web browser. - -- Import is now case-sensitive. PEP 235 (Import on Case-Insensitive - Platforms) is implemented. See - - http://python.sourceforge.net/peps/pep-0235.html - - for full details, especially the "Current Lower-Left Semantics" section. - The new Windows import rules are simpler than before: - - A. If the PYTHONCASEOK environment variable exists, same as - before: silently accept the first case-insensitive match of any - kind; raise ImportError if none found. - - B. Else search sys.path for the first case-sensitive match; raise - ImportError if none found. - - The same rules have been implemented on other platforms with case- - insensitive but case-preserving filesystems too (including Cygwin, and - several flavors of Macintosh operating systems). - -- winsound module: Under Win9x, winsound.Beep() now attempts to simulate - what it's supposed to do (and does do under NT and 2000) via direct - port manipulation. It's unknown whether this will work on all systems, - but it does work on my Win98SE systems now and was known to be useless on - all Win9x systems before. - -- Build: Subproject _test (effectively) renamed to _testcapi. - -New platforms - -- 2.1 should compile and run out of the box under MacOS X, even using HFS+. - Thanks to Steven Majewski! - -- 2.1 should compile and run out of the box on Cygwin. Thanks to Jason - Tishler! - -- 2.1 contains new files and patches for RISCOS, thanks to Dietmar - Schwertberger! See RISCOS/README for more information -- it seems - that because of the bizarre filename conventions on RISCOS, no port - to that platform is easy. - - -What's New in Python 2.1 alpha 2? -================================= - -Core language, builtins, and interpreter - -- Scopes nest. If a name is used in a function or class, but is not - local, the definition in the nearest enclosing function scope will - be used. One consequence of this change is that lambda statements - could reference variables in the namespaces where the lambda is - defined. In some unusual cases, this change will break code. - - In all previous version of Python, names were resolved in exactly - three namespaces -- the local namespace, the global namespace, and - the builtin namespace. According to this old definition, if a - function A is defined within a function B, the names bound in B are - not visible in A. The new rules make names bound in B visible in A, - unless A contains a name binding that hides the binding in B. - - Section 4.1 of the reference manual describes the new scoping rules - in detail. The test script in Lib/test/test_scope.py demonstrates - some of the effects of the change. - - The new rules will cause existing code to break if it defines nested - functions where an outer function has local variables with the same - name as globals or builtins used by the inner function. Example: - - def munge(str): - def helper(x): - return str(x) - if type(str) != type(''): - str = helper(str) - return str.strip() - - Under the old rules, the name str in helper() is bound to the - builtin function str(). Under the new rules, it will be bound to - the argument named str and an error will occur when helper() is - called. - -- The compiler will report a SyntaxError if "from ... import *" occurs - in a function or class scope. The language reference has documented - that this case is illegal, but the compiler never checked for it. - The recent introduction of nested scope makes the meaning of this - form of name binding ambiguous. In a future release, the compiler - may allow this form when there is no possibility of ambiguity. - -- repr(string) is easier to read, now using hex escapes instead of octal, - and using \t, \n and \r instead of \011, \012 and \015 (respectively): - - >>> "\texample \r\n" + chr(0) + chr(255) - '\texample \r\n\x00\xff' # in 2.1 - '\011example \015\012\000\377' # in 2.0 - -- Functions are now compared and hashed by identity, not by value, since - the func_code attribute is writable. - -- Weak references (PEP 205) have been added. This involves a few - changes in the core, an extension module (_weakref), and a Python - module (weakref). The weakref module is the public interface. It - includes support for "explicit" weak references, proxy objects, and - mappings with weakly held values. - -- A 'continue' statement can now appear in a try block within the body - of a loop. It is still not possible to use continue in a finally - clause. - -Standard library - -- mailbox.py now has a new class, PortableUnixMailbox which is - identical to UnixMailbox but uses a more portable scheme for - determining From_ separators. Also, the constructors for all the - classes in this module have a new optional `factory' argument, which - is a callable used when new message classes must be instantiated by - the next() method. - -- random.py is now self-contained, and offers all the functionality of - the now-deprecated whrandom.py. See the docs for details. random.py - also supports new functions getstate() and setstate(), for saving - and restoring the internal state of the generator; and jumpahead(n), - for quickly forcing the internal state to be the same as if n calls to - random() had been made. The latter is particularly useful for multi- - threaded programs, creating one instance of the random.Random() class for - each thread, then using .jumpahead() to force each instance to use a - non-overlapping segment of the full period. - -- random.py's seed() function is new. For bit-for-bit compatibility with - prior releases, use the whseed function instead. The new seed function - addresses two problems: (1) The old function couldn't produce more than - about 2**24 distinct internal states; the new one about 2**45 (the best - that can be done in the Wichmann-Hill generator). (2) The old function - sometimes produced identical internal states when passed distinct - integers, and there was no simple way to predict when that would happen; - the new one guarantees to produce distinct internal states for all - arguments in [0, 27814431486576L). - -- The socket module now supports raw packets on Linux. The socket - family is AF_PACKET. - -- test_capi.py is a start at running tests of the Python C API. The tests - are implemented by the new Modules/_testmodule.c. - -- A new extension module, _symtable, provides provisional access to the - internal symbol table used by the Python compiler. A higher-level - interface will be added on top of _symtable in a future release. - -- Removed the obsolete soundex module. - -- xml.dom.minidom now uses the standard DOM exceptions. Node supports - the isSameNode method; NamedNodeMap the get method. - -- xml.sax.expatreader supports the lexical handler property; it - generates comment, startCDATA, and endCDATA events. - -Windows changes - -- Build procedure: the zlib project is built in a different way that - ensures the zlib header files used can no longer get out of synch with - the zlib binary used. See PCbuild\readme.txt for details. Your old - zlib-related directories can be deleted; you'll need to download fresh - source for zlib and unpack it into a new directory. - -- Build: New subproject _test for the benefit of test_capi.py (see above). - -- Build: New subproject _symtable, for new DLL _symtable.pyd (a nascent - interface to some Python compiler internals). - -- Build: Subproject ucnhash is gone, since the code was folded into the - unicodedata subproject. - -What's New in Python 2.1 alpha 1? -================================= - -Core language, builtins, and interpreter - -- There is a new Unicode companion to the PyObject_Str() API - called PyObject_Unicode(). It behaves in the same way as the - former, but assures that the returned value is an Unicode object - (applying the usual coercion if necessary). - -- The comparison operators support "rich comparison overloading" (PEP - 207). C extension types can provide a rich comparison function in - the new tp_richcompare slot in the type object. The cmp() function - and the C function PyObject_Compare() first try the new rich - comparison operators before trying the old 3-way comparison. There - is also a new C API PyObject_RichCompare() (which also falls back on - the old 3-way comparison, but does not constrain the outcome of the - rich comparison to a Boolean result). - - The rich comparison function takes two objects (at least one of - which is guaranteed to have the type that provided the function) and - an integer indicating the opcode, which can be Py_LT, Py_LE, Py_EQ, - Py_NE, Py_GT, Py_GE (for <, <=, ==, !=, >, >=), and returns a Python - object, which may be NotImplemented (in which case the tp_compare - slot function is used as a fallback, if defined). - - Classes can overload individual comparison operators by defining one - or more of the methods__lt__, __le__, __eq__, __ne__, __gt__, - __ge__. There are no explicit "reflected argument" versions of - these; instead, __lt__ and __gt__ are each other's reflection, - likewise for__le__ and __ge__; __eq__ and __ne__ are their own - reflection (similar at the C level). No other implications are - made; in particular, Python does not assume that == is the Boolean - inverse of !=, or that < is the Boolean inverse of >=. This makes - it possible to define types with partial orderings. - - Classes or types that want to implement (in)equality tests but not - the ordering operators (i.e. unordered types) should implement == - and !=, and raise an error for the ordering operators. - - It is possible to define types whose rich comparison results are not - Boolean; e.g. a matrix type might want to return a matrix of bits - for A < B, giving elementwise comparisons. Such types should ensure - that any interpretation of their value in a Boolean context raises - an exception, e.g. by defining __nonzero__ (or the tp_nonzero slot - at the C level) to always raise an exception. - -- Complex numbers use rich comparisons to define == and != but raise - an exception for <, <=, > and >=. Unfortunately, this also means - that cmp() of two complex numbers raises an exception when the two - numbers differ. Since it is not mathematically meaningful to compare - complex numbers except for equality, I hope that this doesn't break - too much code. - -- The outcome of comparing non-numeric objects of different types is - not defined by the language, other than that it's arbitrary but - consistent (see the Reference Manual). An implementation detail changed - in 2.1a1 such that None now compares less than any other object. Code - relying on this new behavior (like code that relied on the previous - behavior) does so at its own risk. - -- Functions and methods now support getting and setting arbitrarily - named attributes (PEP 232). Functions have a new __dict__ - (a.k.a. func_dict) which hold the function attributes. Methods get - and set attributes on their underlying im_func. It is a TypeError - to set an attribute on a bound method. - -- The xrange() object implementation has been improved so that - xrange(sys.maxint) can be used on 64-bit platforms. There's still a - limitation that in this case len(xrange(sys.maxint)) can't be - calculated, but the common idiom "for i in xrange(sys.maxint)" will - work fine as long as the index i doesn't actually reach 2**31. - (Python uses regular ints for sequence and string indices; fixing - that is much more work.) - -- Two changes to from...import: - - 1) "from M import X" now works even if (after loading module M) - sys.modules['M'] is not a real module; it's basically a getattr() - operation with AttributeError exceptions changed into ImportError. - - 2) "from M import *" now looks for M.__all__ to decide which names to - import; if M.__all__ doesn't exist, it uses M.__dict__.keys() but - filters out names starting with '_' as before. Whether or not - __all__ exists, there's no restriction on the type of M. - -- File objects have a new method, xreadlines(). This is the fastest - way to iterate over all lines in a file: - - for line in file.xreadlines(): - ...do something to line... - - See the xreadlines module (mentioned below) for how to do this for - other file-like objects. - -- Even if you don't use file.xreadlines(), you may expect a speedup on - line-by-line input. The file.readline() method has been optimized - quite a bit in platform-specific ways: on systems (like Linux) that - support flockfile(), getc_unlocked(), and funlockfile(), those are - used by default. On systems (like Windows) without getc_unlocked(), - a complicated (but still thread-safe) method using fgets() is used by - default. - - You can force use of the fgets() method by #define'ing - USE_FGETS_IN_GETLINE at build time (it may be faster than - getc_unlocked()). - - You can force fgets() not to be used by #define'ing - DONT_USE_FGETS_IN_GETLINE (this is the first thing to try if std test - test_bufio.py fails -- and let us know if it does!). - -- In addition, the fileinput module, while still slower than the other - methods on most platforms, has been sped up too, by using - file.readlines(sizehint). - -- Support for run-time warnings has been added, including a new - command line option (-W) to specify the disposition of warnings. - See the description of the warnings module below. - -- Extensive changes have been made to the coercion code. This mostly - affects extension modules (which can now implement mixed-type - numerical operators without having to use coercion), but - occasionally, in boundary cases the coercion semantics have changed - subtly. Since this was a terrible gray area of the language, this - is considered an improvement. Also note that __rcmp__ is no longer - supported -- instead of calling __rcmp__, __cmp__ is called with - reflected arguments. - -- In connection with the coercion changes, a new built-in singleton - object, NotImplemented is defined. This can be returned for - operations that wish to indicate they are not implemented for a - particular combination of arguments. From C, this is - Py_NotImplemented. - -- The interpreter accepts now bytecode files on the command line even - if they do not have a .pyc or .pyo extension. On Linux, after executing - -import imp,sys,string -magic = string.join(["\\x%.2x" % ord(c) for c in imp.get_magic()],"") -reg = ':pyc:M::%s::%s:' % (magic, sys.executable) -open("/proc/sys/fs/binfmt_misc/register","wb").write(reg) - - any byte code file can be used as an executable (i.e. as an argument - to execve(2)). - -- %[xXo] formats of negative Python longs now produce a sign - character. In 1.6 and earlier, they never produced a sign, - and raised an error if the value of the long was too large - to fit in a Python int. In 2.0, they produced a sign if and - only if too large to fit in an int. This was inconsistent - across platforms (because the size of an int varies across - platforms), and inconsistent with hex() and oct(). Example: - - >>> "%x" % -0x42L - '-42' # in 2.1 - 'ffffffbe' # in 2.0 and before, on 32-bit machines - >>> hex(-0x42L) - '-0x42L' # in all versions of Python - - The behavior of %d formats for negative Python longs remains - the same as in 2.0 (although in 1.6 and before, they raised - an error if the long didn't fit in a Python int). - - %u formats don't make sense for Python longs, but are allowed - and treated the same as %d in 2.1. In 2.0, a negative long - formatted via %u produced a sign if and only if too large to - fit in an int. In 1.6 and earlier, a negative long formatted - via %u raised an error if it was too big to fit in an int. - -- Dictionary objects have an odd new method, popitem(). This removes - an arbitrary item from the dictionary and returns it (in the form of - a (key, value) pair). This can be useful for algorithms that use a - dictionary as a bag of "to do" items and repeatedly need to pick one - item. Such algorithms normally end up running in quadratic time; - using popitem() they can usually be made to run in linear time. - -Standard library - -- In the time module, the time argument to the functions strftime, - localtime, gmtime, asctime and ctime is now optional, defaulting to - the current time (in the local timezone). - -- The ftplib module now defaults to passive mode, which is deemed a - more useful default given that clients are often inside firewalls - these days. Note that this could break if ftplib is used to connect - to a *server* that is inside a firewall, from outside; this is - expected to be a very rare situation. To fix that, you can call - ftp.set_pasv(0). - -- The module site now treats .pth files not only for path configuration, - but also supports extensions to the initialization code: Lines starting - with import are executed. - -- There's a new module, warnings, which implements a mechanism for - issuing and filtering warnings. There are some new built-in - exceptions that serve as warning categories, and a new command line - option, -W, to control warnings (e.g. -Wi ignores all warnings, -We - turns warnings into errors). warnings.warn(message[, category]) - issues a warning message; this can also be called from C as - PyErr_Warn(category, message). - -- A new module xreadlines was added. This exports a single factory - function, xreadlines(). The intention is that this code is the - absolutely fastest way to iterate over all lines in an open - file(-like) object: - - import xreadlines - for line in xreadlines.xreadlines(file): - ...do something to line... - - This is equivalent to the previous the speed record holder using - file.readlines(sizehint). Note that if file is a real file object - (as opposed to a file-like object), this is equivalent: - - for line in file.xreadlines(): - ...do something to line... - -- The bisect module has new functions bisect_left, insort_left, - bisect_right and insort_right. The old names bisect and insort - are now aliases for bisect_right and insort_right. XXX_right - and XXX_left methods differ in what happens when the new element - compares equal to one or more elements already in the list: the - XXX_left methods insert to the left, the XXX_right methods to the - right. Code that doesn't care where equal elements end up should - continue to use the old, short names ("bisect" and "insort"). - -- The new curses.panel module wraps the panel library that forms part - of SYSV curses and ncurses. Contributed by Thomas Gellekum. - -- The SocketServer module now sets the allow_reuse_address flag by - default in the TCPServer class. - -- A new function, sys._getframe(), returns the stack frame pointer of - the caller. This is intended only as a building block for - higher-level mechanisms such as string interpolation. - -- The pyexpat module supports a number of new handlers, which are - available only in expat 1.2. If invocation of a callback fails, it - will report an additional frame in the traceback. Parser objects - participate now in garbage collection. If expat reports an unknown - encoding, pyexpat will try to use a Python codec; that works only - for single-byte charsets. The parser type objects is exposed as - XMLParserObject. - -- xml.dom now offers standard definitions for symbolic node type and - exception code constants, and a hierarchy of DOM exceptions. minidom - was adjusted to use them. - -- The conformance of xml.dom.minidom to the DOM specification was - improved. It detects a number of additional error cases; the - previous/next relationship works even when the tree is modified; - Node supports the normalize() method; NamedNodeMap, DocumentType and - DOMImplementation classes were added; Element supports the - hasAttribute and hasAttributeNS methods; and Text supports the splitText - method. - -Build issues - -- For Unix (and Unix-compatible) builds, configuration and building of - extension modules is now greatly automated. Rather than having to - edit the Modules/Setup file to indicate which modules should be - built and where their include files and libraries are, a - distutils-based setup.py script now takes care of building most - extension modules. All extension modules built this way are built - as shared libraries. Only a few modules that must be linked - statically are still listed in the Setup file; you won't need to - edit their configuration. - -- Python should now build out of the box on Cygwin. If it doesn't, - mail to Jason Tishler (jlt63 at users.sourceforge.net). - -- Python now always uses its own (renamed) implementation of getopt() - -- there's too much variation among C library getopt() - implementations. - -- C++ compilers are better supported; the CXX macro is always set to a - C++ compiler if one is found. - -Windows changes - -- select module: By default under Windows, a select() call - can specify no more than 64 sockets. Python now boosts - this Microsoft default to 512. If you need even more than - that, see the MS docs (you'll need to #define FD_SETSIZE - and recompile Python from source). - -- Support for Windows 3.1, DOS and OS/2 is gone. The Lib/dos-8x3 - subdirectory is no more! - - -What's New in Python 2.0? -========================= - -Below is a list of all relevant changes since release 1.6. Older -changes are in the file HISTORY. If you are making the jump directly -from Python 1.5.2 to 2.0, make sure to read the section for 1.6 in the -HISTORY file! Many important changes listed there. - -Alternatively, a good overview of the changes between 1.5.2 and 2.0 is -the document "What's New in Python 2.0" by Kuchling and Moshe Zadka: -http://www.amk.ca/python/2.0/. - ---Guido van Rossum (home page: http://www.pythonlabs.com/~guido/) - -====================================================================== - -What's new in 2.0 (since release candidate 1)? -============================================== - -Standard library - -- The copy_reg module was modified to clarify its intended use: to - register pickle support for extension types, not for classes. - pickle() will raise a TypeError if it is passed a class. - -- Fixed a bug in gettext's "normalize and expand" code that prevented - it from finding an existing .mo file. - -- Restored support for HTTP/0.9 servers in httplib. - -- The math module was changed to stop raising OverflowError in case of - underflow, and return 0 instead in underflow cases. Whether Python - used to raise OverflowError in case of underflow was platform- - dependent (it did when the platform math library set errno to ERANGE - on underflow). - -- Fixed a bug in StringIO that occurred when the file position was not - at the end of the file and write() was called with enough data to - extend past the end of the file. - -- Fixed a bug that caused Tkinter error messages to get lost on - Windows. The bug was fixed by replacing direct use of - interp->result with Tcl_GetStringResult(interp). - -- Fixed bug in urllib2 that caused it to fail when it received an HTTP - redirect response. - -- Several changes were made to distutils: Some debugging code was - removed from util. Fixed the installer used when an external zip - program (like WinZip) is not found; the source code for this - installer is in Misc/distutils. check_lib() was modified to behave - more like AC_CHECK_LIB by add other_libraries() as a parameter. The - test for whether installed modules are on sys.path was changed to - use both normcase() and normpath(). - -- Several minor bugs were fixed in the xml package (the minidom, - pulldom, expatreader, and saxutils modules). - -- The regression test driver (regrtest.py) behavior when invoked with - -l changed: It now reports a count of objects that are recognized as - garbage but not freed by the garbage collector. - -- The regression test for the math module was changed to test - exceptional behavior when the test is run in verbose mode. Python - cannot yet guarantee consistent exception behavior across platforms, - so the exception part of test_math is run only in verbose mode, and - may fail on your platform. - -Internals - -- PyOS_CheckStack() has been disabled on Win64, where it caused - test_sre to fail. - -Build issues - -- Changed compiler flags, so that gcc is always invoked with -Wall and - -Wstrict-prototypes. Users compiling Python with GCC should see - exactly one warning, except if they have passed configure the - --with-pydebug flag. The expected warning is for getopt() in - Modules/main.c. This warning will be fixed for Python 2.1. - -- Fixed configure to add -threads argument during linking on OSF1. - -Tools and other miscellany - -- The compiler in Tools/compiler was updated to support the new - language features introduced in 2.0: extended print statement, list - comprehensions, and augmented assignments. The new compiler should - also be backwards compatible with Python 1.5.2; the compiler will - always generate code for the version of the interpreter it runs - under. - -What's new in 2.0 release candidate 1 (since beta 2)? -===================================================== - -What is release candidate 1? - -We believe that release candidate 1 will fix all known bugs that we -intend to fix for the 2.0 final release. This release should be a bit -more stable than the previous betas. We would like to see even more -widespread testing before the final release, so we are producing this -release candidate. The final release will be exactly the same unless -any show-stopping (or brown bag) bugs are found by testers of the -release candidate. - -All the changes since the last beta release are bug fixes or changes -to support building Python for specific platforms. - -Core language, builtins, and interpreter - -- A bug that caused crashes when __coerce__ was used with augmented - assignment, e.g. +=, was fixed. - -- Raise ZeroDivisionError when raising zero to a negative number, - e.g. 0.0 ** -2.0. Note that math.pow is unrelated to the builtin - power operator and the result of math.pow(0.0, -2.0) will vary by - platform. On Linux, it raises a ValueError. - -- A bug in Unicode string interpolation was fixed that occasionally - caused errors with formats including "%%". For example, the - following expression "%% %s" % u"abc" no longer raises a TypeError. - -- Compilation of deeply nested expressions raises MemoryError instead - of SyntaxError, e.g. eval("[" * 50 + "]" * 50). - -- In 2.0b2 on Windows, the interpreter wrote .pyc files in text mode, - rendering them useless. They are now written in binary mode again. - -Standard library - -- Keyword arguments are now accepted for most pattern and match object - methods in SRE, the standard regular expression engine. - -- In SRE, fixed error with negative lookahead and lookbehind that - manifested itself as a runtime error in patterns like "(? is now included by Python.h (if it - exists). INT_MAX and LONG_MAX will always be defined, even if - is not available. - -- PyFloat_FromString takes a second argument, pend, that was - effectively useless. It is now officially useless but preserved for - backwards compatibility. If the pend argument is not NULL, *pend is - set to NULL. - -- PyObject_GetAttr() and PyObject_SetAttr() now accept Unicode objects - for the attribute name. See note on getattr() above. - -- A few bug fixes to argument processing for Unicode. - PyArg_ParseTupleAndKeywords() now accepts "es#" and "es". - PyArg_Parse() special cases "s#" for Unicode objects; it returns a - pointer to the default encoded string data instead of to the raw - UTF-16. - -- Py_BuildValue accepts B format (for bgen-generated code). - - -Internals - -- On Unix, fix code for finding Python installation directory so that - it works when argv[0] is a relative path. - -- Added a true unicode_internal_encode() function and fixed the - unicode_internal_decode function() to support Unicode objects directly - rather than by generating a copy of the object. - -- Several of the internal Unicode tables are much smaller now, and - the source code should be much friendlier to weaker compilers. - -- In the garbage collector: Fixed bug in collection of tuples. Fixed - bug that caused some instances to be removed from the container set - while they were still live. Fixed parsing in gc.set_debug() for - platforms where sizeof(long) > sizeof(int). - -- Fixed refcount problem in instance deallocation that only occurred - when Py_REF_DEBUG was defined and Py_TRACE_REFS was not. - -- On Windows, getpythonregpath is now protected against null data in - registry key. - -- On Unix, create .pyc/.pyo files with O_EXCL flag to avoid a race - condition. - - -Build and platform-specific issues - -- Better support of GNU Pth via --with-pth configure option. - -- Python/C API now properly exposed to dynamically-loaded extension - modules on Reliant UNIX. - -- Changes for the benefit of SunOS 4.1.4 (really!). mmapmodule.c: - Don't define MS_SYNC to be zero when it is undefined. Added missing - prototypes in posixmodule.c. - -- Improved support for HP-UX build. Threads should now be correctly - configured (on HP-UX 10.20 and 11.00). - -- Fix largefile support on older NetBSD systems and OpenBSD by adding - define for TELL64. - - -Tools and other miscellany - -- ftpmirror: Call to main() is wrapped in if __name__ == "__main__". - -- freeze: The modulefinder now works with 2.0 opcodes. - -- IDLE: - Move hackery of sys.argv until after the Tk instance has been - created, which allows the application-specific Tkinter - initialization to be executed if present; also pass an explicit - className parameter to the Tk() constructor. - - -What's new in 2.0 beta 1? -========================= - -Source Incompatibilities ------------------------- - -None. Note that 1.6 introduced several incompatibilities with 1.5.2, -such as single-argument append(), connect() and bind(), and changes to -str(long) and repr(float). - - -Binary Incompatibilities ------------------------- - -- Third party extensions built for Python 1.5.x or 1.6 cannot be used -with Python 2.0; these extensions will have to be rebuilt for Python -2.0. - -- On Windows, attempting to import a third party extension built for -Python 1.5.x or 1.6 results in an immediate crash; there's not much we -can do about this. Check your PYTHONPATH environment variable! - -- Python bytecode files (*.pyc and *.pyo) are not compatible between -releases. - - -Overview of Changes Since 1.6 ------------------------------ - -There are many new modules (including brand new XML support through -the xml package, and i18n support through the gettext module); a list -of all new modules is included below. Lots of bugs have been fixed. - -The process for making major new changes to the language has changed -since Python 1.6. Enhancements must now be documented by a Python -Enhancement Proposal (PEP) before they can be accepted. - -There are several important syntax enhancements, described in more -detail below: - - - Augmented assignment, e.g. x += 1 - - - List comprehensions, e.g. [x**2 for x in range(10)] - - - Extended import statement, e.g. import Module as Name - - - Extended print statement, e.g. print >> file, "Hello" - -Other important changes: - - - Optional collection of cyclical garbage - -Python Enhancement Proposal (PEP) ---------------------------------- - -PEP stands for Python Enhancement Proposal. A PEP is a design -document providing information to the Python community, or describing -a new feature for Python. The PEP should provide a concise technical -specification of the feature and a rationale for the feature. - -We intend PEPs to be the primary mechanisms for proposing new -features, for collecting community input on an issue, and for -documenting the design decisions that have gone into Python. The PEP -author is responsible for building consensus within the community and -documenting dissenting opinions. - -The PEPs are available at http://python.sourceforge.net/peps/. - -Augmented Assignment --------------------- - -This must have been the most-requested feature of the past years! -Eleven new assignment operators were added: - - += -= *= /= %= **= <<= >>= &= ^= |= - -For example, - - A += B - -is similar to - - A = A + B - -except that A is evaluated only once (relevant when A is something -like dict[index].attr). - -However, if A is a mutable object, A may be modified in place. Thus, -if A is a number or a string, A += B has the same effect as A = A+B -(except A is only evaluated once); but if a is a list, A += B has the -same effect as A.extend(B)! - -Classes and built-in object types can override the new operators in -order to implement the in-place behavior; the not-in-place behavior is -used automatically as a fallback when an object doesn't implement the -in-place behavior. For classes, the method name is derived from the -method name for the corresponding not-in-place operator by inserting -an 'i' in front of the name, e.g. __iadd__ implements in-place -__add__. - -Augmented assignment was implemented by Thomas Wouters. - - -List Comprehensions -------------------- - -This is a flexible new notation for lists whose elements are computed -from another list (or lists). The simplest form is: - - [ for in ] - -For example, [i**2 for i in range(4)] yields the list [0, 1, 4, 9]. -This is more efficient than a for loop with a list.append() call. - -You can also add a condition: - - [ for in if ] - -For example, [w for w in words if w == w.lower()] would yield the list -of words that contain no uppercase characters. This is more efficient -than a for loop with an if statement and a list.append() call. - -You can also have nested for loops and more than one 'if' clause. For -example, here's a function that flattens a sequence of sequences:: - - def flatten(seq): - return [x for subseq in seq for x in subseq] - - flatten([[0], [1,2,3], [4,5], [6,7,8,9], []]) - -This prints - - [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - -List comprehensions originated as a patch set from Greg Ewing; Skip -Montanaro and Thomas Wouters also contributed. Described by PEP 202. - - -Extended Import Statement -------------------------- - -Many people have asked for a way to import a module under a different -name. This can be accomplished like this: - - import foo - bar = foo - del foo - -but this common idiom gets old quickly. A simple extension of the -import statement now allows this to be written as follows: - - import foo as bar - -There's also a variant for 'from ... import': - - from foo import bar as spam - -This also works with packages; e.g. you can write this: - - import test.regrtest as regrtest - -Note that 'as' is not a new keyword -- it is recognized only in this -context (this is only possible because the syntax for the import -statement doesn't involve expressions). - -Implemented by Thomas Wouters. Described by PEP 221. - - -Extended Print Statement ------------------------- - -Easily the most controversial new feature, this extension to the print -statement adds an option to make the output go to a different file -than the default sys.stdout. - -For example, to write an error message to sys.stderr, you can now -write: - - print >> sys.stderr, "Error: bad dog!" - -As a special feature, if the expression used to indicate the file -evaluates to None, the current value of sys.stdout is used. Thus: - - print >> None, "Hello world" - -is equivalent to - - print "Hello world" - -Design and implementation by Barry Warsaw. Described by PEP 214. - - -Optional Collection of Cyclical Garbage ---------------------------------------- - -Python is now equipped with a garbage collector that can hunt down -cyclical references between Python objects. It's no replacement for -reference counting; in fact, it depends on the reference counts being -correct, and decides that a set of objects belong to a cycle if all -their reference counts can be accounted for from their references to -each other. This devious scheme was first proposed by Eric Tiedemann, -and brought to implementation by Neil Schemenauer. - -There's a module "gc" that lets you control some parameters of the -garbage collection. There's also an option to the configure script -that lets you enable or disable the garbage collection. In 2.0b1, -it's on by default, so that we (hopefully) can collect decent user -experience with this new feature. There are some questions about its -performance. If it proves to be too much of a problem, we'll turn it -off by default in the final 2.0 release. - - -Smaller Changes ---------------- - -A new function zip() was added. zip(seq1, seq2, ...) is equivalent to -map(None, seq1, seq2, ...) when the sequences have the same length; -i.e. zip([1,2,3], [10,20,30]) returns [(1,10), (2,20), (3,30)]. When -the lists are not all the same length, the shortest list wins: -zip([1,2,3], [10,20]) returns [(1,10), (2,20)]. See PEP 201. - -sys.version_info is a tuple (major, minor, micro, level, serial). - -Dictionaries have an odd new method, setdefault(key, default). -dict.setdefault(key, default) returns dict[key] if it exists; if not, -it sets dict[key] to default and returns that value. Thus: - - dict.setdefault(key, []).append(item) - -does the same work as this common idiom: - - if not dict.has_key(key): - dict[key] = [] - dict[key].append(item) - -There are two new variants of SyntaxError that are raised for -indentation-related errors: IndentationError and TabError. - -Changed \x to consume exactly two hex digits; see PEP 223. Added \U -escape that consumes exactly eight hex digits. - -The limits on the size of expressions and file in Python source code -have been raised from 2**16 to 2**32. Previous versions of Python -were limited because the maximum argument size the Python VM accepted -was 2**16. This limited the size of object constructor expressions, -e.g. [1,2,3] or {'a':1, 'b':2}, and the size of source files. This -limit was raised thanks to a patch by Charles Waldman that effectively -fixes the problem. It is now much more likely that you will be -limited by available memory than by an arbitrary limit in Python. - -The interpreter's maximum recursion depth can be modified by Python -programs using sys.getrecursionlimit and sys.setrecursionlimit. This -limit is the maximum number of recursive calls that can be made by -Python code. The limit exists to prevent infinite recursion from -overflowing the C stack and causing a core dump. The default value is -1000. The maximum safe value for a particular platform can be found -by running Misc/find_recursionlimit.py. - -New Modules and Packages ------------------------- - -atexit - for registering functions to be called when Python exits. - -imputil - Greg Stein's alternative API for writing custom import -hooks. - -pyexpat - an interface to the Expat XML parser, contributed by Paul -Prescod. - -xml - a new package with XML support code organized (so far) in three -subpackages: xml.dom, xml.sax, and xml.parsers. Describing these -would fill a volume. There's a special feature whereby a -user-installed package named _xmlplus overrides the standard -xmlpackage; this is intended to give the XML SIG a hook to distribute -backwards-compatible updates to the standard xml package. - -webbrowser - a platform-independent API to launch a web browser. - - -Changed Modules ---------------- - -array -- new methods for array objects: count, extend, index, pop, and -remove - -binascii -- new functions b2a_hex and a2b_hex that convert between -binary data and its hex representation - -calendar -- Many new functions that support features including control -over which day of the week is the first day, returning strings instead -of printing them. Also new symbolic constants for days of week, -e.g. MONDAY, ..., SUNDAY. - -cgi -- FieldStorage objects have a getvalue method that works like a -dictionary's get method and returns the value attribute of the object. - -ConfigParser -- The parser object has new methods has_option, -remove_section, remove_option, set, and write. They allow the module -to be used for writing config files as well as reading them. - -ftplib -- ntransfercmd(), transfercmd(), and retrbinary() all now -optionally support the RFC 959 REST command. - -gzip -- readline and readlines now accept optional size arguments - -httplib -- New interfaces and support for HTTP/1.1 by Greg Stein. See -the module doc strings for details. - -locale -- implement getdefaultlocale for Win32 and Macintosh - -marshal -- no longer dumps core when marshaling deeply nested or -recursive data structures - -os -- new functions isatty, seteuid, setegid, setreuid, setregid - -os/popen2 -- popen2/popen3/popen4 support under Windows. popen2/popen3 -support under Unix. - -os/pty -- support for openpty and forkpty - -os.path -- fix semantics of os.path.commonprefix - -smtplib -- support for sending very long messages - -socket -- new function getfqdn() - -readline -- new functions to read, write and truncate history files. -The readline section of the library reference manual contains an -example. - -select -- add interface to poll system call - -shutil -- new copyfileobj function - -SimpleHTTPServer, CGIHTTPServer -- Fix problems with buffering in the -HTTP server. - -Tkinter -- optimization of function flatten - -urllib -- scans environment variables for proxy configuration, -e.g. http_proxy. - -whichdb -- recognizes dumbdbm format - - -Obsolete Modules ----------------- - -None. However note that 1.6 made a whole slew of modules obsolete: -stdwin, soundex, cml, cmpcache, dircache, dump, find, grep, packmail, -poly, zmod, strop, util, whatsound. - - -Changed, New, Obsolete Tools ----------------------------- - -None. - - -C-level Changes ---------------- - -Several cleanup jobs were carried out throughout the source code. - -All C code was converted to ANSI C; we got rid of all uses of the -Py_PROTO() macro, which makes the header files a lot more readable. - -Most of the portability hacks were moved to a new header file, -pyport.h; several other new header files were added and some old -header files were removed, in an attempt to create a more rational set -of header files. (Few of these ever need to be included explicitly; -they are all included by Python.h.) - -Trent Mick ensured portability to 64-bit platforms, under both Linux -and Win64, especially for the new Intel Itanium processor. Mick also -added large file support for Linux64 and Win64. - -The C APIs to return an object's size have been update to consistently -use the form PyXXX_Size, e.g. PySequence_Size and PyDict_Size. In -previous versions, the abstract interfaces used PyXXX_Length and the -concrete interfaces used PyXXX_Size. The old names, -e.g. PyObject_Length, are still available for backwards compatibility -at the API level, but are deprecated. - -The PyOS_CheckStack function has been implemented on Windows by -Fredrik Lundh. It prevents Python from failing with a stack overflow -on Windows. - -The GC changes resulted in creation of two new slots on object, -tp_traverse and tp_clear. The augmented assignment changes result in -the creation of a new slot for each in-place operator. - -The GC API creates new requirements for container types implemented in -C extension modules. See Include/objimpl.h for details. - -PyErr_Format has been updated to automatically calculate the size of -the buffer needed to hold the formatted result string. This change -prevents crashes caused by programmer error. - -New C API calls: PyObject_AsFileDescriptor, PyErr_WriteUnraisable. - -PyRun_AnyFileEx, PyRun_SimpleFileEx, PyRun_FileEx -- New functions -that are the same as their non-Ex counterparts except they take an -extra flag argument that tells them to close the file when done. - -XXX There were other API changes that should be fleshed out here. - - -Windows Changes ---------------- - -New popen2/popen3/peopen4 in os module (see Changed Modules above). - -os.popen is much more usable on Windows 95 and 98. See Microsoft -Knowledge Base article Q150956. The Win9x workaround described there -is implemented by the new w9xpopen.exe helper in the root of your -Python installation. Note that Python uses this internally; it is not -a standalone program. - -Administrator privileges are no longer required to install Python -on Windows NT or Windows 2000. If you have administrator privileges, -Python's registry info will be written under HKEY_LOCAL_MACHINE. -Otherwise the installer backs off to writing Python's registry info -under HKEY_CURRENT_USER. The latter is sufficient for all "normal" -uses of Python, but will prevent some advanced uses from working -(for example, running a Python script as an NT service, or possibly -from CGI). - -[This was new in 1.6] The installer no longer runs a separate Tcl/Tk -installer; instead, it installs the needed Tcl/Tk files directly in the -Python directory. If you already have a Tcl/Tk installation, this -wastes some disk space (about 4 Megs) but avoids problems with -conflicting Tcl/Tk installations, and makes it much easier for Python -to ensure that Tcl/Tk can find all its files. - -[This was new in 1.6] The Windows installer now installs by default in -\Python20\ on the default volume, instead of \Program Files\Python-2.0\. - - -Updates to the changes between 1.5.2 and 1.6 --------------------------------------------- - -The 1.6 NEWS file can't be changed after the release is done, so here -is some late-breaking news: - -New APIs in locale.py: normalize(), getdefaultlocale(), resetlocale(), -and changes to getlocale() and setlocale(). - -The new module is now enabled per default. - -It is not true that the encodings codecs cannot be used for normal -strings: the string.encode() (which is also present on 8-bit strings -!) allows using them for 8-bit strings too, e.g. to convert files from -cp1252 (Windows) to latin-1 or vice-versa. - -Japanese codecs are available from Tamito KAJIYAMA: -http://pseudo.grad.sccs.chukyo-u.ac.jp/~kajiyama/python/ - - -====================================================================== - - -======================================= -==> Release 1.6 (September 5, 2000) <== -======================================= - -What's new in release 1.6? -========================== - -Below is a list of all relevant changes since release 1.5.2. - - -Source Incompatibilities ------------------------- - -Several small incompatible library changes may trip you up: - - - The append() method for lists can no longer be invoked with more - than one argument. This used to append a single tuple made out of - all arguments, but was undocumented. To append a tuple, use - e.g. l.append((a, b, c)). - - - The connect(), connect_ex() and bind() methods for sockets require - exactly one argument. Previously, you could call s.connect(host, - port), but this was undocumented. You must now write - s.connect((host, port)). - - - The str() and repr() functions are now different more often. For - long integers, str() no longer appends a 'L'. Thus, str(1L) == '1', - which used to be '1L'; repr(1L) is unchanged and still returns '1L'. - For floats, repr() now gives 17 digits of precision, to ensure no - precision is lost (on all current hardware). - - - The -X option is gone. Built-in exceptions are now always - classes. Many more library modules also have been converted to - class-based exceptions. - - -Binary Incompatibilities ------------------------- - -- Third party extensions built for Python 1.5.x cannot be used with -Python 1.6; these extensions will have to be rebuilt for Python 1.6. - -- On Windows, attempting to import a third party extension built for -Python 1.5.x results in an immediate crash; there's not much we can do -about this. Check your PYTHONPATH environment variable! - - -Overview of Changes since 1.5.2 -------------------------------- - -For this overview, I have borrowed from the document "What's New in -Python 2.0" by Andrew Kuchling and Moshe Zadka: -http://www.amk.ca/python/2.0/ . - -There are lots of new modules and lots of bugs have been fixed. A -list of all new modules is included below. - -Probably the most pervasive change is the addition of Unicode support. -We've added a new fundamental datatype, the Unicode string, a new -build-in function unicode(), an numerous C APIs to deal with Unicode -and encodings. See the file Misc/unicode.txt for details, or -http://starship.python.net/crew/lemburg/unicode-proposal.txt. - -Two other big changes, related to the Unicode support, are the -addition of string methods and (yet another) new regular expression -engine. - - - String methods mean that you can now say s.lower() etc. instead of - importing the string module and saying string.lower(s) etc. One - peculiarity is that the equivalent of string.join(sequence, - delimiter) is delimiter.join(sequence). Use " ".join(sequence) for - the effect of string.join(sequence); to make this more readable, try - space=" " first. Note that the maxsplit argument defaults in - split() and replace() have changed from 0 to -1. - - - The new regular expression engine, SRE by Fredrik Lundh, is fully - backwards compatible with the old engine, and is in fact invoked - using the same interface (the "re" module). You can explicitly - invoke the old engine by import pre, or the SRE engine by importing - sre. SRE is faster than pre, and supports Unicode (which was the - main reason to put effort in yet another new regular expression - engine -- this is at least the fourth!). - - -Other Changes -------------- - -Other changes that won't break code but are nice to know about: - -Deleting objects is now safe even for deeply nested data structures. - -Long/int unifications: long integers can be used in seek() calls, as -slice indexes. - -String formatting (s % args) has a new formatting option, '%r', which -acts like '%s' but inserts repr(arg) instead of str(arg). (Not yet in -alpha 1.) - -Greg Ward's "distutils" package is included: this will make -installing, building and distributing third party packages much -simpler. - -There's now special syntax that you can use instead of the apply() -function. f(*args, **kwds) is equivalent to apply(f, args, kwds). -You can also use variations f(a1, a2, *args, **kwds) and you can leave -one or the other out: f(*args), f(**kwds). - -The built-ins int() and long() take an optional second argument to -indicate the conversion base -- of course only if the first argument -is a string. This makes string.atoi() and string.atol() obsolete. -(string.atof() was already obsolete). - -When a local variable is known to the compiler but undefined when -used, a new exception UnboundLocalError is raised. This is a class -derived from NameError so code catching NameError should still work. -The purpose is to provide better diagnostics in the following example: - x = 1 - def f(): - print x - x = x+1 -This used to raise a NameError on the print statement, which confused -even experienced Python programmers (especially if there are several -hundreds of lines of code between the reference and the assignment to -x :-). - -You can now override the 'in' operator by defining a __contains__ -method. Note that it has its arguments backwards: x in a causes -a.__contains__(x) to be called. That's why the name isn't __in__. - -The exception AttributeError will have a more friendly error message, -e.g.: 'Spam' instance has no attribute 'eggs'. This may -break code that expects the message to be exactly the attribute -name. - - -New Modules in 1.6 ------------------- - -UserString - base class for deriving from the string type. - -distutils - tools for distributing Python modules. - -robotparser - parse a robots.txt file, for writing web spiders. -(Moved from Tools/webchecker/.) - -linuxaudiodev - audio for Linux. - -mmap - treat a file as a memory buffer. (Windows and Unix.) - -sre - regular expressions (fast, supports unicode). Currently, this -code is very rough. Eventually, the re module will be reimplemented -using sre (without changes to the re API). - -filecmp - supersedes the old cmp.py and dircmp.py modules. - -tabnanny - check Python sources for tab-width dependance. (Moved from -Tools/scripts/.) - -urllib2 - new and improved but incompatible version of urllib (still -experimental). - -zipfile - read and write zip archives. - -codecs - support for Unicode encoders/decoders. - -unicodedata - provides access to the Unicode 3.0 database. - -_winreg - Windows registry access. - -encodings - package which provides a large set of standard codecs -- -currently only for the new Unicode support. It has a drop-in extension -mechanism which allows you to add new codecs by simply copying them -into the encodings package directory. Asian codec support will -probably be made available as separate distribution package built upon -this technique and the new distutils package. - - -Changed Modules ---------------- - -readline, ConfigParser, cgi, calendar, posix, readline, xmllib, aifc, -chunk, wave, random, shelve, nntplib - minor enhancements. - -socket, httplib, urllib - optional OpenSSL support (Unix only). - -_tkinter - support for 8.0 up to 8.3. Support for versions older than -8.0 has been dropped. - -string - most of this module is deprecated now that strings have -methods. This no longer uses the built-in strop module, but takes -advantage of the new string methods to provide transparent support for -both Unicode and ordinary strings. - - -Changes on Windows ------------------- - -The installer no longer runs a separate Tcl/Tk installer; instead, it -installs the needed Tcl/Tk files directly in the Python directory. If -you already have a Tcl/Tk installation, this wastes some disk space -(about 4 Megs) but avoids problems with conflincting Tcl/Tk -installations, and makes it much easier for Python to ensure that -Tcl/Tk can find all its files. Note: the alpha installers don't -include the documentation. - -The Windows installer now installs by default in \Python16\ on the -default volume, instead of \Program Files\Python-1.6\. - - -Changed Tools -------------- - -IDLE - complete overhaul. See the IDLE home -page for more information. (Python 1.6 alpha 1 will come with -IDLE 0.6.) - -Tools/i18n/pygettext.py - Python equivalent of xgettext(1). A message -text extraction tool used for internationalizing applications written -in Python. - - -Obsolete Modules ----------------- - -stdwin and everything that uses it. (Get Python 1.5.2 if you need -it. :-) - -soundex. (Skip Montanaro has a version in Python but it won't be -included in the Python release.) - -cmp, cmpcache, dircmp. (Replaced by filecmp.) - -dump. (Use pickle.) - -find. (Easily coded using os.walk().) - -grep. (Not very useful as a library module.) - -packmail. (No longer has any use.) - -poly, zmod. (These were poor examples at best.) - -strop. (No longer needed by the string module.) - -util. (This functionality was long ago built in elsewhere). - -whatsound. (Use sndhdr.) - - -Detailed Changes from 1.6b1 to 1.6 ----------------------------------- - -- Slight changes to the CNRI license. A copyright notice has been -added; the requirement to indicate the nature of modifications now -applies when making a derivative work available "to others" instead of -just "to the public"; the version and date are updated. The new -license has a new handle. - -- Added the Tools/compiler package. This is a project led by Jeremy -Hylton to write the Python bytecode generator in Python. - -- The function math.rint() is removed. - -- In Python.h, "#define _GNU_SOURCE 1" was added. - -- Version 0.9.1 of Greg Ward's distutils is included (instead of -version 0.9). - -- A new version of SRE is included. It is more stable, and more -compatible with the old RE module. Non-matching ranges are indicated -by -1, not None. (The documentation said None, but the PRE -implementation used -1; changing to None would break existing code.) - -- The winreg module has been renamed to _winreg. (There are plans for -a higher-level API called winreg, but this has not yet materialized in -a form that is acceptable to the experts.) - -- The _locale module is enabled by default. - -- Fixed the configuration line for the _curses module. - -- A few crashes have been fixed, notably .writelines() with a -list containing non-string objects would crash, and there were -situations where a lost SyntaxError could dump core. - -- The .extend() method now accepts an arbitrary sequence -argument. - -- If __str__() or __repr__() returns a Unicode object, this is -converted to an 8-bit string. - -- Unicode string comparisons is no longer aware of UTF-16 -encoding peculiarities; it's a straight 16-bit compare. - -- The Windows installer now installs the LICENSE file and no longer -registers the Python DLL version in the registry (this is no longer -needed). It now uses Tcl/Tk 8.3.2. - -- A few portability problems have been fixed, in particular a -compilation error involving socklen_t. - -- The PC configuration is slightly friendlier to non-Microsoft -compilers. - - -====================================================================== - - -====================================== -==> Release 1.5.2 (April 13, 1999) <== -====================================== - -From 1.5.2c1 to 1.5.2 (final) -============================= - -Tue Apr 13 15:44:49 1999 Guido van Rossum - - * PCbuild/python15.wse: Bump version to 1.5.2 (final) - - * PCbuild/python15.dsp: Added shamodule.c - - * PC/config.c: Added sha module! - - * README, Include/patchlevel.h: Prepare for final release. - - * Misc/ACKS: - More (Cameron Laird is honorary; the others are 1.5.2c1 testers). - - * Python/thread_solaris.h: - While I can't really test this thoroughly, Pat Knight and the Solaris - man pages suggest that the proper thing to do is to add THR_NEW_LWP to - the flags on thr_create(), and that there really isn't a downside, so - I'll do that. - - * Misc/ACKS: - Bunch of new names who helped iron out the last wrinkles of 1.5.2. - - * PC/python_nt.rc: - Bump the myusterious M$ version number from 1,5,2,1 to 1,5,2,3. - (I can't even display this on NT, maybe Win/98 can?) - - * Lib/pstats.py: - Fix mysterious references to jprofile that were in the source since - its creation. I'm assuming these were once valid references to "Jim - Roskind's profile"... - - * Lib/Attic/threading_api.py: - Removed; since long subsumed in Doc/lib/libthreading.tex - - * Modules/socketmodule.c: - Put back __osf__ support for gethostbyname_r(); the real bug was that - it was being used even without threads. This of course might be an - all-platform problem so now we only use the _r variant when we are - using threads. - -Mon Apr 12 22:51:20 1999 Guido van Rossum - - * Modules/cPickle.c: - Fix accidentally reversed NULL test in load_mark(). Suggested by - Tamito Kajiyama. (This caused a bug only on platforms where malloc(0) - returns NULL.) - - * README: - Add note about popen2 problem on Linux noticed by Pablo Bleyer. - - * README: Add note about -D_REENTRANT for HP-UX 10.20. - - * Modules/Makefile.pre.in: 'clean' target should remove hassignal. - - * PC/Attic/vc40.mak, PC/readme.txt: - Remove all VC++ info (except VC 1.5) from readme.txt; - remove the VC++ 4.0 project file; remove the unused _tkinter extern defs. - - * README: Clarify PC build instructions (point to PCbuild). - - * Modules/zlibmodule.c: Cast added by Jack Jansen (for Mac port). - - * Lib/plat-sunos5/CDIO.py, Lib/plat-linux2/CDROM.py: - Forgot to add this file. CDROM device parameters. - - * Lib/gzip.py: Two different changes. - - 1. Jack Jansen reports that on the Mac, the time may be negative, and - solves this by adding a write32u() function that writes an unsigned - long. - - 2. On 64-bit platforms the CRC comparison fails; I've fixed this by - casting both values to be compared to "unsigned long" i.e. modulo - 0x100000000L. - -Sat Apr 10 18:42:02 1999 Guido van Rossum - - * PC/Attic/_tkinter.def: No longer needed. - - * Misc/ACKS: Correct missed character in Andrew Dalke's name. - - * README: Add DEC Ultrix notes (from Donn Cave's email). - - * configure: The usual - - * configure.in: - Quote a bunch of shell variables used in test, related to long-long. - - * Objects/fileobject.c, Modules/shamodule.c, Modules/regexpr.c: - casts for picky compilers. - - * Modules/socketmodule.c: - 3-arg gethostbyname_r doesn't really work on OSF/1. - - * PC/vc15_w31/_.c, PC/vc15_lib/_.c, Tools/pynche/__init__.py: - Avoid totally empty files. - -Fri Apr 9 14:56:35 1999 Guido van Rossum - - * Tools/scripts/fixps.py: Use re instead of regex. - Don't rewrite the file in place. - (Reported by Andy Dustman.) - - * Lib/netrc.py, Lib/shlex.py: Get rid of #! line - -Thu Apr 8 23:13:37 1999 Guido van Rossum - - * PCbuild/python15.wse: Use the Tcl 8.0.5 installer. - Add a variable %_TCL_% that makes it easier to switch to a different version. - - -====================================================================== - - -From 1.5.2b2 to 1.5.2c1 -======================= - -Thu Apr 8 23:13:37 1999 Guido van Rossum - - * PCbuild/python15.wse: - Release 1.5.2c1. Add IDLE and Uninstall to program group. - Don't distribute zlib.dll. Tweak some comments. - - * PCbuild/zlib.dsp: Now using static zlib 1.1.3 - - * Lib/dos-8x3/userdict.py, Lib/dos-8x3/userlist.py, Lib/dos-8x3/test_zli.py, Lib/dos-8x3/test_use.py, Lib/dos-8x3/test_pop.py, Lib/dos-8x3/test_pic.py, Lib/dos-8x3/test_ntp.py, Lib/dos-8x3/test_gzi.py, Lib/dos-8x3/test_fcn.py, Lib/dos-8x3/test_cpi.py, Lib/dos-8x3/test_bsd.py, Lib/dos-8x3/posixfil.py, Lib/dos-8x3/mimetype.py, Lib/dos-8x3/nturl2pa.py, Lib/dos-8x3/compilea.py, Lib/dos-8x3/exceptio.py, Lib/dos-8x3/basehttp.py: - The usual - - * Include/patchlevel.h: Release 1.5.2c1 - - * README: Release 1.5.2c1. - - * Misc/NEWS: News for the 1.5.2c1 release. - - * Lib/test/test_strftime.py: - On Windows, we suddenly find, strftime() may return "" for an - unsupported format string. (I guess this is because the logic for - deciding whether to reallocate the buffer or not has been improved.) - This caused the test code to crash on result[0]. Fix this by assuming - an empty result also means the format is not supported. - - * Demo/tkinter/matt/window-creation-w-location.py: - This demo imported some private code from Matt. Make it cripple along. - - * Lib/lib-tk/Tkinter.py: - Delete an accidentally checked-in feature that actually broke more - than was worth it: when deleting a canvas item, it would try to - automatically delete the bindings for that item. Since there's - nothing that says you can't reuse the tag and still have the bindings, - this is not correct. Also, it broke at least one demo - (Demo/tkinter/matt/rubber-band-box-demo-1.py). - - * Python/thread_wince.h: Win/CE thread support by Mark Hammond. - -Wed Apr 7 20:23:17 1999 Guido van Rossum - - * Modules/zlibmodule.c: - Patch by Andrew Kuchling to unflush() (flush() for deflating). - Without this, if inflate() returned Z_BUF_ERROR asking for more output - space, we would report the error; now, we increase the buffer size and - try again, just as for Z_OK. - - * Lib/test/test_gzip.py: Use binary mode for all gzip files we open. - - * Tools/idle/ChangeLog: New change log. - - * Tools/idle/README.txt, Tools/idle/NEWS.txt: New version. - - * Python/pythonrun.c: - Alas, get rid of the Win specific hack to ask the user to press Return - before exiting when an error happened. This didn't work right when - Python is invoked from a daemon. - - * Tools/idle/idlever.py: Version bump awaiting impending new release. - (Not much has changed :-( ) - - * Lib/lib-tk/Tkinter.py: - lower, tkraise/lift hide Misc.lower, Misc.tkraise/lift, - so the preferred name for them is tag_lower, tag_raise - (similar to tag_bind, and similar to the Text widget); - unfortunately can't delete the old ones yet (maybe in 1.6) - - * Python/thread.c, Python/strtod.c, Python/mystrtoul.c, Python/import.c, Python/ceval.c: - Changes by Mark Hammond for Windows CE. Mostly of the form - #ifdef DONT_HAVE_header_H ... #endif around #include . - - * Python/bltinmodule.c: - Remove unused variable from complex_from_string() code. - - * Include/patchlevel.h: - Add the possibility of a gamma release (release candidate). - Add '+' to string version number to indicate we're beyond b2 now. - - * Modules/posixmodule.c: Add extern decl for fsync() for SunOS 4.x. - - * Lib/smtplib.py: Changes by Per Cederquist and The Dragon. - - Per writes: - - """ - The application where Signum Support uses smtplib needs to be able to - report good error messages to the user when sending email fails. To - help in diagnosing problems it is useful to be able to report the - entire message sent by the server, not only the SMTP error code of the - offending command. - - A lot of the functions in sendmail.py unfortunately discards the - message, leaving only the code. The enclosed patch fixes that - problem. - - The enclosed patch also introduces a base class for exceptions that - include an SMTP error code and error message, and make the code and - message available on separate attributes, so that surrounding code can - deal with them in whatever way it sees fit. I've also added some - documentation to the exception classes. - - The constructor will now raise an exception if it cannot connect to - the SMTP server. - - The data() method will raise an SMTPDataError if it doesn't receive - the expected 354 code in the middle of the exchange. - - According to section 5.2.10 of RFC 1123 a smtp client must accept "any - text, including no text at all" after the error code. If the response - of a HELO command contains no text self.helo_resp will be set to the - empty string (""). The patch fixes the test in the sendmail() method - so that helo_resp is tested against None; if it has the empty string - as value the sendmail() method would invoke the helo() method again. - - The code no longer accepts a -1 reply from the ehlo() method in - sendmail(). - - [Text about removing SMTPRecipientsRefused deleted --GvR] - """ - - and also: - - """ - smtplib.py appends an extra blank line to the outgoing mail if the - `msg' argument to the sendmail method already contains a trailing - newline. This patch should fix the problem. - """ - - The Dragon writes: - - """ - Mostly I just re-added the SMTPRecipientsRefused exception - (the exeption object now has the appropriate info in it ) [Per had - removed this in his patch --GvR] and tweaked the behavior of the - sendmail method whence it throws the newly added SMTPHeloException (it - was closing the connection, which it shouldn't. whatever catches the - exception should do that. ) - - I pondered the change of the return values to tuples all around, - and after some thinking I decided that regularizing the return values was - too much of the Right Thing (tm) to not do. - - My one concern is that code expecting an integer & getting a tuple - may fail silently. - - (i.e. if it's doing : - - x.somemethod() >= 400: - expecting an integer, the expression will always be true if it gets a - tuple instead. ) - - However, most smtplib code I've seen only really uses the - sendmail() method, so this wouldn't bother it. Usually code I've seen - that calls the other methods usually only calls helo() and ehlo() for - doing ESMTP, a feature which was not in the smtplib included with 1.5.1, - and thus I would think not much code uses it yet. - """ - -Tue Apr 6 19:38:18 1999 Guido van Rossum - - * Lib/test/test_ntpath.py: - Fix the tests now that splitdrive() no longer treats UNC paths special. - (Some tests converted to splitunc() tests.) - - * Lib/ntpath.py: - Withdraw the UNC support from splitdrive(). Instead, a new function - splitunc() parses UNC paths. The contributor of the UNC parsing in - splitdrive() doesn't like it, but I haven't heard a good reason to - keep it, and it causes some problems. (I think there's a - philosophical problem -- to me, the split*() functions are purely - syntactical, and the fact that \\foo is not a valid path doesn't mean - that it shouldn't be considered an absolute path.) - - Also (quite separately, but strangely related to the philosophical - issue above) fix abspath() so that if win32api exists, it doesn't fail - when the path doesn't actually exist -- if GetFullPathName() fails, - fall back on the old strategy (join with getcwd() if neccessary, and - then use normpath()). - - * configure.in, configure, config.h.in, acconfig.h: - For BeOS PowerPC. Chris Herborth. - -Mon Apr 5 21:54:14 1999 Guido van Rossum - - * Modules/timemodule.c: - Jonathan Giddy notes, and Chris Lawrence agrees, that some comments on - #else/#endif are wrong, and that #if HAVE_TM_ZONE should be #ifdef. - - * Misc/ACKS: - Bunch of new contributors, including 9 who contributed to the Docs, - reported by Fred. - -Mon Apr 5 18:37:59 1999 Fred Drake - - * Lib/gzip.py: - Oops, missed mode parameter to open(). - - * Lib/gzip.py: - Made the default mode 'rb' instead of 'r', for better cross-platform - support. (Based on comment on the documentation by Bernhard Reiter - ). - -Fri Apr 2 22:18:25 1999 Guido van Rossum - - * Tools/scripts/dutree.py: - For reasons I dare not explain, this script should always execute - main() when imported (in other words, it is not usable as a module). - -Thu Apr 1 15:32:30 1999 Guido van Rossum - - * Lib/test/test_cpickle.py: Jonathan Giddy write: - - In test_cpickle.py, the module os got imported, but the line to remove - the temp file has gone missing. - -Tue Mar 30 20:17:31 1999 Guido van Rossum - - * Lib/BaseHTTPServer.py: Per Cederqvist writes: - - If you send something like "PUT / HTTP/1.0" to something derived from - BaseHTTPServer that doesn't define do_PUT, you will get a response - that begins like this: - - HTTP/1.0 501 Unsupported method ('do_PUT') - Server: SimpleHTTP/0.3 Python/1.5 - Date: Tue, 30 Mar 1999 18:53:53 GMT - - The server should complain about 'PUT' instead of 'do_PUT'. This - patch should fix the problem. - -Mon Mar 29 20:33:21 1999 Guido van Rossum - - * Lib/smtplib.py: Patch by Per Cederqvist, who writes: - - """ - - It needlessly used the makefile() method for each response that is - read from the SMTP server. - - - If the remote SMTP server closes the connection unexpectedly the - code raised an IndexError. It now raises an SMTPServerDisconnected - exception instead. - - - The code now checks that all lines in a multiline response actually - contains an error code. - """ - - The Dragon approves. - -Mon Mar 29 20:25:40 1999 Fred Drake - - * Lib/compileall.py: - When run as a script, report failures in the exit code as well. - Patch largely based on changes by Andrew Dalke, as discussed in the - distutils-sig. - -Mon Mar 29 20:23:41 1999 Guido van Rossum - - * Lib/urllib.py: - Hack so that if a 302 or 301 redirect contains a relative URL, the - right thing "just happens" (basejoin() with old URL). - - * Modules/cPickle.c: - Protection against picling to/from closed (real) file. - The problem was reported by Moshe Zadka. - - * Lib/test/test_cpickle.py: - Test protection against picling to/from closed (real) file. - - * Modules/timemodule.c: Chris Lawrence writes: - - """ - The GNU folks, in their infinite wisdom, have decided not to implement - altzone in libc6; this would not be horrible, except that timezone - (which is implemented) includes the current DST setting (i.e. timezone - for Central is 18000 in summer and 21600 in winter). So Python's - timezone and altzone variables aren't set correctly during DST. - - Here's a patch relative to 1.5.2b2 that (a) makes timezone and altzone - show the "right" thing on Linux (by using the tm_gmtoff stuff - available in BSD, which is how the GLIBC manual claims things should - be done) and (b) should cope with the southern hemisphere. In pursuit - of (b), I also took the liberty of renaming the "summer" and "winter" - variables to "july" and "jan". This patch should also make certain - time calculations on Linux actually work right (like the tz-aware - functions in the rfc822 module). - - (It's hard to find DST that's currently being used in the southern - hemisphere; I tested using Africa/Windhoek.) - """ - - * Lib/test/output/test_gzip: - Jonathan Giddy discovered this file was missing. - - * Modules/shamodule.c: - Avoid warnings from AIX compiler. Reported by Vladimir (AIX is my - middlename) Marangozov, patch coded by Greg Stein. - - * Tools/idle/ScriptBinding.py, Tools/idle/PyShell.py: - At Tim Peters' recommendation, add a dummy flush() method to PseudoFile. - -Sun Mar 28 17:55:32 1999 Guido van Rossum - - * Tools/scripts/ndiff.py: Tim Peters writes: - - I should have waited overnight . Nothing wrong with the one I - sent, but I couldn't resist going on to add new -r1 / -r2 cmdline options - for recreating the original files from ndiff's output. That's attached, if - you're game! Us Windows guys don't usually have a sed sitting around - . - -Sat Mar 27 13:34:01 1999 Guido van Rossum - - * Tools/scripts/ndiff.py: Tim Peters writes: - - Attached is a cleaned-up version of ndiff (added useful module - docstring, now echo'ed in case of cmd line mistake); added -q option - to suppress initial file identification lines; + other minor cleanups, - & a slightly faster match engine. - -Fri Mar 26 22:36:00 1999 Fred Drake - - * Tools/scripts/dutree.py: - During display, if EPIPE is raised, it's probably because a pager was - killed. Discard the error in that case, but propogate it otherwise. - -Fri Mar 26 16:20:45 1999 Guido van Rossum - - * Lib/test/output/test_userlist, Lib/test/test_userlist.py: - Test suite for UserList. - - * Lib/UserList.py: Use isinstance() where appropriate. - Reformatted with 4-space indent. - -Fri Mar 26 16:11:40 1999 Barry Warsaw - - * Tools/pynche/PyncheWidget.py: - Helpwin.__init__(): The text widget should get focus. - - * Tools/pynche/pyColorChooser.py: - Removed unnecessary import `from PyncheWidget import PyncheWidget' - -Fri Mar 26 15:32:05 1999 Guido van Rossum - - * Lib/test/output/test_userdict, Lib/test/test_userdict.py: - Test suite for UserDict - - * Lib/UserDict.py: Improved a bunch of things. - The constructor now takes an optional dictionary. - Use isinstance() where appropriate. - -Thu Mar 25 22:38:49 1999 Guido van Rossum - - * Lib/test/output/test_pickle, Lib/test/output/test_cpickle, Lib/test/test_pickle.py, Lib/test/test_cpickle.py: - Basic regr tests for pickle/cPickle - - * Lib/pickle.py: - Don't use "exec" in find_class(). It's slow, unnecessary, and (as AMK - points out) it doesn't work in JPython Applets. - -Thu Mar 25 21:50:27 1999 Andrew Kuchling - - * Lib/test/test_gzip.py: - Added a simple test suite for gzip. It simply opens a temp file, - writes a chunk of compressed data, closes it, writes another chunk, and - reads the contents back to verify that they are the same. - - * Lib/gzip.py: - Based on a suggestion from bruce@hams.com, make a trivial change to - allow using the 'a' flag as a mode for opening a GzipFile. gzip - files, surprisingly enough, can be concatenated and then decompressed; - the effect is to concatenate the two chunks of data. - - If we support it on writing, it should also be supported on reading. - This *wasn't* trivial, and required rearranging the code in the - reading path, particularly the _read() method. - - Raise IOError instead of RuntimeError in two cases, 'Not a gzipped file' - and 'Unknown compression method' - -Thu Mar 25 21:25:01 1999 Guido van Rossum - - * Lib/test/test_b1.py: - Add tests for float() and complex() with string args (Nick/Stephanie - Lockwood). - -Thu Mar 25 21:21:08 1999 Andrew Kuchling - - * Modules/zlibmodule.c: - Add an .unused_data attribute to decompressor objects. If .unused_data - is not an empty string, this means that you have arrived at the - end of the stream of compressed data, and the contents of .unused_data are - whatever follows the compressed stream. - -Thu Mar 25 21:16:07 1999 Guido van Rossum - - * Python/bltinmodule.c: - Patch by Nick and Stephanie Lockwood to implement complex() with a string - argument. This closes TODO item 2.19. - -Wed Mar 24 19:09:00 1999 Guido van Rossum - - * Tools/webchecker/wcnew.py: Added Samuel Bayer's new webchecker. - Unfortunately his code breaks wcgui.py in a way that's not easy - to fix. I expect that this is a temporary situation -- - eventually Sam's changes will be merged back in. - (The changes add a -t option to specify exceptions to the -x - option, and explicit checking for #foo style fragment ids.) - - * Objects/dictobject.c: - Vladimir Marangozov contributed updated comments. - - * Objects/bufferobject.c: Folded long lines. - - * Lib/test/output/test_sha, Lib/test/test_sha.py: - Added Jeremy's test code for the sha module. - - * Modules/shamodule.c, Modules/Setup.in: - Added Greg Stein and Andrew Kuchling's sha module. - Fix comments about zlib version and URL. - - * Lib/test/test_bsddb.py: Remove the temp file when we're done. - - * Include/pythread.h: Conform to standard boilerplate. - - * configure.in, configure, BeOS/linkmodule, BeOS/ar-fake: - Chris Herborth: the new compiler in R4.1 needs some new options to work... - - * Modules/socketmodule.c: - Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the - data struct before calling gethostby{name,addr}_r(); (2) ignore the - 3/5/6 args determinations made by the configure script and switch on - platform identifiers instead: - - AIX, OSF have 3 args - Sun, SGI have 5 args - Linux has 6 args - - On all other platforms, undef HAVE_GETHOSTBYNAME_R altogether. - - * Modules/socketmodule.c: - Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code. - - * Lib/mailbox.py: - Add readlines() to _Subfile class. Not clear who would need it, but - Chris Lawrence sent me a broken version; this one is a tad simpler and - more conforming to the standard. - -Tue Mar 23 23:05:34 1999 Jeremy Hylton - - * Lib/gzip.py: use struct instead of bit-manipulate in Python - -Tue Mar 23 19:00:55 1999 Guido van Rossum - - * Modules/Makefile.pre.in: - Add $(EXE) to various occurrences of python so it will work on Cygwin - with egcs (after setting EXE=.exe). Patch by Norman Vine. - - * configure, configure.in: - Ack! It never defined HAVE_GETHOSTBYNAME_R so that code was never tested! - -Mon Mar 22 22:25:39 1999 Guido van Rossum - - * Include/thread.h: - Adding thread.h -- unused but for b/w compatibility. - As requested by Bill Janssen. - - * configure.in, configure: - Add code to test for all sorts of gethostbyname_r variants, - donated by David Arnold. - - * config.h.in, acconfig.h: - Add symbols for gethostbyname_r variants (sigh). - - * Modules/socketmodule.c: Clean up pass for the previous patches. - - - Use HAVE_GETHOSTBYNAME_R_6_ARG instead of testing for Linux and - glibc2. - - - If gethostbyname takes 3 args, undefine HAVE_GETHOSTBYNAME_R -- - don't know what code should be used. - - - New symbol USE_GETHOSTBYNAME_LOCK defined iff the lock should be used. - - - Modify the gethostbyaddr() code to also hold on to the lock until - after it is safe to release, overlapping with the Python lock. - - (Note: I think that it could in theory be possible that Python code - executed while gethostbyname_lock is held could attempt to reacquire - the lock -- e.g. in a signal handler or destructor. I will simply say - "don't do that then.") - - * Modules/socketmodule.c: Jonathan Giddy writes: - - Here's a patch to fix the race condition, which wasn't fixed by Rob's - patch. It holds the gethostbyname lock until the results are copied out, - which means that this lock and the Python global lock are held at the same - time. This shouldn't be a problem as long as the gethostbyname lock is - always acquired when the global lock is not held. - -Mon Mar 22 19:25:30 1999 Andrew Kuchling - - * Modules/zlibmodule.c: - Fixed the flush() method of compression objects; the test for - the end of loop was incorrect, and failed when the flushmode != Z_FINISH. - Logic cleaned up and commented. - - * Lib/test/test_zlib.py: - Added simple test for the flush() method of compression objects, trying the - different flush values Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH. - -Mon Mar 22 15:28:08 1999 Guido van Rossum - - * Lib/shlex.py: - Bug reported by Tobias Thelen: missing "self." in assignment target. - -Fri Mar 19 21:50:11 1999 Guido van Rossum - - * Modules/arraymodule.c: - Use an unsigned cast to avoid a warning in VC++. - - * Lib/dospath.py, Lib/ntpath.py: - New code for split() by Tim Peters, behaves more like posixpath.split(). - - * Objects/floatobject.c: - Fix a problem with Vladimir's PyFloat_Fini code: clear the free list; if - a block cannot be freed, add its free items back to the free list. - This is necessary to avoid leaking when Python is reinitialized later. - - * Objects/intobject.c: - Fix a problem with Vladimir's PyInt_Fini code: clear the free list; if - a block cannot be freed, add its free items back to the free list, and - add its valid ints back to the small_ints array if they are in range. - This is necessary to avoid leaking when Python is reinitialized later. - - * Lib/types.py: - Added BufferType, the type returned by the new builtin buffer(). Greg Stein. - - * Python/bltinmodule.c: - New builtin buffer() creates a derived read-only buffer from any - object that supports the buffer interface (e.g. strings, arrays). - - * Objects/bufferobject.c: - Added check for negative offset for PyBuffer_FromObject and check for - negative size for PyBuffer_FromMemory. Greg Stein. - -Thu Mar 18 15:10:44 1999 Guido van Rossum - - * Lib/urlparse.py: Sjoerd Mullender writes: - - If a filename on Windows starts with \\, it is converted to a URL - which starts with ////. If this URL is passed to urlparse.urlparse - you get a path that starts with // (and an empty netloc). If you pass - the result back to urlparse.urlunparse, you get a URL that starts with - //, which is parsed differently by urlparse.urlparse. The fix is to - add the (empty) netloc with accompanying slashes if the path in - urlunparse starts with //. Do this for all schemes that use a netloc. - - * Lib/nturl2path.py: Sjoerd Mullender writes: - - Pathnames of files on other hosts in the same domain - (\\host\path\to\file) are not translated correctly to URLs and back. - The URL should be something like file:////host/path/to/file. - Note that a combination of drive letter and remote host is not - possible. - -Wed Mar 17 22:30:10 1999 Guido van Rossum - - * Lib/urlparse.py: - Delete non-standard-conforming code in urljoin() that would use the - netloc from the base url as the default netloc for the resulting url - even if the schemes differ. - - Once upon a time, when the web was wild, this was a valuable hack - because some people had a URL referencing an ftp server colocated with - an http server without having the host in the ftp URL (so they could - replicate it or change the hostname easily). - - More recently, after the file: scheme got added back to the list of - schemes that accept a netloc, it turns out that this caused weirdness - when joining an http: URL with a file: URL -- the resulting file: URL - would always inherit the host from the http: URL because the file: - scheme supports a netloc but in practice never has one. - - There are two reasons to get rid of the old, once-valuable hack, - instead of removing the file: scheme from the uses_netloc list. One, - the RFC says that file: uses the netloc syntax, and does not endorse - the old hack. Two, neither netscape 4.5 nor IE 4.0 support the old - hack. - - * Include/ceval.h, Include/abstract.h: - Add DLL level b/w compat for PySequence_In and PyEval_CallObject - -Tue Mar 16 21:54:50 1999 Guido van Rossum - - * Lib/lib-tk/Tkinter.py: Bug reported by Jim Robinson: - - An attempt to execute grid_slaves with arguments (0,0) results in - *all* of the slaves being returned, not just the slave associated with - row 0, column 0. This is because the test for arguments in the method - does not test to see if row (and column) does not equal None, but - rather just whether is evaluates to non-false. A value of 0 fails - this test. - -Tue Mar 16 14:17:48 1999 Fred Drake - - * Modules/cmathmodule.c: - Docstring fix: acosh() returns the hyperbolic arccosine, not the - hyperbolic cosine. Problem report via David Ascher by one of his - students. - -Mon Mar 15 21:40:59 1999 Guido van Rossum - - * configure.in: - Should test for gethost*by*name_r, not for gethostname_r (which - doesn't exist and doesn't make sense). - - * Modules/socketmodule.c: - Patch by Rob Riggs for Linux -- glibc2 has a different argument - converntion for gethostbyname_r() etc. than Solaris! - - * Python/thread_pthread.h: Rob Riggs wrote: - - """ - Spec says that on success pthread_create returns 0. It does not say - that an error code will be < 0. Linux glibc2 pthread_create() returns - ENOMEM (12) when one exceed process limits. (It looks like it should - return EAGAIN, but that's another story.) - - For reference, see: - http://www.opengroup.org/onlinepubs/7908799/xsh/pthread_create.html - """ - - [I have a feeling that similar bugs were fixed before; perhaps someone - could check that all error checks no check for != 0?] - - * Tools/bgen/bgen/bgenObjectDefinition.py: - New mixin class that defines cmp and hash that use - the ob_itself pointer. This allows (when using the mixin) - different Python objects pointing to the same C object and - behaving well as dictionary keys. - - Or so sez Jack Jansen... - - * Lib/urllib.py: Yet another patch by Sjoerd Mullender: - - Don't convert URLs to URLs using pathname2url. - -Fri Mar 12 22:15:43 1999 Guido van Rossum - - * Lib/cmd.py: Patch by Michael Scharf. He writes: - - The module cmd requires for each do_xxx command a help_xxx - function. I think this is a little old fashioned. - - Here is a patch: use the docstring as help if no help_xxx - function can be found. - - [I'm tempted to rip out all the help_* functions from pdb, but I'll - resist it. Any takers? --Guido] - - * Tools/freeze/freeze.py: Bug submitted by Wayne Knowles, who writes: - - Under Windows, python freeze.py -o hello hello.py - creates all the correct files in the hello subdirectory, but the - Makefile has the directory prefix in it for frozen_extensions.c - nmake fails because it tries to locate hello/frozen_extensions.c - - (His fix adds a call to os.path.basename() in the appropriate place.) - - * Objects/floatobject.c, Objects/intobject.c: - Vladimir has restructured his code somewhat so that the blocks are now - represented by an explicit structure. (There are still too many casts - in the code, but that may be unavoidable.) - - Also added code so that with -vv it is very chatty about what it does. - - * Demo/zlib/zlibdemo.py, Demo/zlib/minigzip.py: - Change #! line to modern usage; also chmod +x - - * Demo/pdist/rrcs, Demo/pdist/rcvs, Demo/pdist/rcsbump: - Change #! line to modern usage - - * Lib/nturl2path.py, Lib/urllib.py: From: Sjoerd Mullender - - The filename to URL conversion didn't properly quote special - characters. - The URL to filename didn't properly unquote special chatacters. - - * Objects/floatobject.c: - OK, try again. Vladimir gave me a fix for the alignment bus error, - so here's his patch again. This time it works (at least on Solaris, - Linux and Irix). - -Thu Mar 11 23:21:23 1999 Guido van Rossum - - * Tools/idle/PathBrowser.py: - Don't crash when sys.path contains an empty string. - - * Tools/idle/PathBrowser.py: - - Don't crash in the case where a superclass is a string instead of a - pyclbr.Class object; this can happen when the superclass is - unrecognizable (to pyclbr), e.g. when module renaming is used. - - - Show a watch cursor when calling pyclbr (since it may take a while - recursively parsing imported modules!). - -Thu Mar 11 16:04:04 1999 Fred Drake - - * Lib/mimetypes.py: - Added .rdf and .xsl as application/xml types. (.rdf is for the - Resource Description Framework, a metadata encoding, and .xsl is for - the Extensible Stylesheet Language.) - -Thu Mar 11 13:26:23 1999 Guido van Rossum - - * Lib/test/output/test_popen2, Lib/test/test_popen2.py: - Test for popen2 module, by Chris Tismer. - - * Objects/floatobject.c: - Alas, Vladimir's patch caused a bus error (probably double - alignment?), and I didn't test it. Withdrawing it for now. - -Wed Mar 10 22:55:47 1999 Guido van Rossum - - * Objects/floatobject.c: - Patch by Vladimir Marangoz to allow freeing of the allocated blocks of - floats on finalization. - - * Objects/intobject.c: - Patch by Vladimir Marangoz to allow freeing of the allocated blocks of - integers on finalization. - - * Tools/idle/EditorWindow.py, Tools/idle/Bindings.py: - Add PathBrowser to File module - - * Tools/idle/PathBrowser.py: - "Path browser" - 4 scrolled lists displaying: - directories on sys.path - modules in selected directory - classes in selected module - methods of selected class - - Sinlge clicking in a directory, module or class item updates the next - column with info about the selected item. Double clicking in a - module, class or method item opens the file (and selects the clicked - item if it is a class or method). - - I guess eventually I should be using a tree widget for this, but the - ones I've seen don't work well enough, so for now I use the old - Smalltalk or NeXT style multi-column hierarchical browser. - - * Tools/idle/MultiScrolledLists.py: - New utility: multiple scrolled lists in parallel - - * Tools/idle/ScrolledList.py: - White background. - - Display "(None)" (or text of your choosing) when empty. - - Don't set the focus. - -Tue Mar 9 19:31:21 1999 Guido van Rossum - - * Lib/urllib.py: - open_http also had the 'data is None' test backwards. don't call with the - extra argument if data is None. - - * Demo/embed/demo.c: - Call Py_SetProgramName() instead of redefining getprogramname(), - reflecting changes in the runtime around 1.5 or earlier. - - * Python/ceval.c: - Always test for an error return (usually NULL or -1) without setting - an exception. - - * Modules/timemodule.c: Patch by Chris Herborth for BeOS code. - He writes: - - I had an off-by-1000 error in floatsleep(), - and the problem with time.clock() is that it's not implemented properly - on QNX... ANSI says it's supposed to return _CPU_ time used by the - process, but on QNX it returns the amount of real time used... so I was - confused. - - * Tools/bgen/bgen/macsupport.py: Small change by Jack Jansen. - Test for self.returntype behaving like OSErr rather than being it. - -Thu Feb 25 16:14:58 1999 Jeremy Hylton - - * Lib/urllib.py: - http_error had the 'data is None' test backwards. don't call with the - extra argument if data is None. - - * Lib/urllib.py: change indentation from 8 spaces to 4 spaces - - * Lib/urllib.py: pleasing the tabnanny - -Thu Feb 25 14:26:02 1999 Fred Drake - - * Lib/colorsys.py: - Oops, one more "x, y, z" to convert... - - * Lib/colorsys.py: - Adjusted comment at the top to be less confusing, following Fredrik - Lundh's example. - - Converted comment to docstring. - -Wed Feb 24 18:49:15 1999 Fred Drake - - * Lib/toaiff.py: - Use sndhdr instead of the obsolete whatsound module. - -Wed Feb 24 18:42:38 1999 Jeremy Hylton - - * Lib/urllib.py: - When performing a POST request, i.e. when the second argument to - urlopen is used to specify form data, make sure the second argument is - threaded through all of the http_error_NNN calls. This allows error - handlers like the redirect and authorization handlers to properly - re-start the connection. - -Wed Feb 24 16:25:17 1999 Guido van Rossum - - * Lib/mhlib.py: Patch by Lars Wirzenius: - - o the initial comment is wrong: creating messages is already - implemented - - o Message.getbodytext: if the mail or it's part contains an - empty content-transfer-encoding header, the code used to - break; the change below treats an empty encoding value the same - as the other types that do not need decoding - - o SubMessage.getbodytext was missing the decode argument; the - change below adds it; I also made it unconditionally return - the raw text if decoding was not desired, because my own - routines needed that (and it was easier than rewriting my - own routines ;-) - -Wed Feb 24 00:35:43 1999 Barry Warsaw - - * Python/bltinmodule.c (initerrors): - Make sure that the exception tuples ("base-classes" when - string-based exceptions are used) reflect the real class hierarchy, - i.e. that SystemExit derives from Exception not StandardError. - - * Lib/exceptions.py: - Document the correct class hierarchy for SystemExit. It is not an - error and so it derives from Exception and not SystemError. The - docstring was incorrect but the implementation was fine. - -Tue Feb 23 23:07:51 1999 Guido van Rossum - - * Lib/shutil.py: - Add import sys, needed by reference to sys.exc_info() in rmtree(). - Discovered by Mitch Chapman. - - * config.h.in: - Now that we don't have AC_CHECK_LIB(m, pow), the HAVE_LIBM symbol - disappears. It wasn't used anywhere anyway... - - * Modules/arraymodule.c: - Carefully check for overflow when allocating the memory for fromfile - -- someone tried to pass in sys.maxint and got bitten by the bogus - calculations. - - * configure.in: - Get rid of AC_CHECK_LIB(m, pow) since this is taken care of later with - LIBM (from --with-libm=...); this actually broke the customizability - offered by the latter option. Thanks go to Clay Spence for reporting - this. - - * Lib/test/test_dl.py: - 1. Print the error message (carefully) when a dl.open() fails in verbose mode. - 2. When no test case worked, raise ImportError instead of failing. - - * Python/bltinmodule.c: - Patch by Tim Peters to improve the range checks for range() and - xrange(), especially for platforms where int and long are different - sizes (so sys.maxint isn't actually the theoretical limit for the - length of a list, but the largest C int is -- sys.maxint is the - largest Python int, which is actually a C long). - - * Makefile.in: - 1. Augment the DG/UX rule so it doesn't break the BeOS build. - 2. Add $(EXE) to various occurrences of python so it will work on - Cygwin with egcs (after setting EXE=.exe). These patches by - Norman Vine. - - * Lib/posixfile.py: - According to Jeffrey Honig, bsd/os 2.0 - 4.0 should be added to the - list (of bsd variants that have a different lock structure). - - * Lib/test/test_fcntl.py: - According to Jeffrey Honig, bsd/os 4.0 should be added to the list. - - * Modules/timemodule.c: - Patch by Tadayoshi Funaba (with some changes) to be smarter about - guessing what happened when strftime() returns 0. Is it buffer - overflow or was the result simply 0 bytes long? (This happens for an - empty format string, or when the format string is a single %Z and the - timezone is unknown.) if the buffer is at least 256 times as long as - the format, assume the latter. - -Mon Feb 22 19:01:42 1999 Guido van Rossum - - * Lib/urllib.py: - As Des Barry points out, we need to call pathname2url(file) in two - calls to addinfourl() in open_file(). - - * Modules/Setup.in: Document *static* -- in two places! - - * Modules/timemodule.c: - We don't support leap seconds, so the seconds field of a time 9-tuple - should be in the range [0-59]. Noted by Tadayoshi Funaba. - - * Modules/stropmodule.c: - In atoi(), don't use isxdigit() to test whether the last character - converted was a "digit" -- use isalnum(). This test is there only to - guard against "+" or "-" being interpreted as a valid int literal. - Reported by Takahiro Nakayama. - - * Lib/os.py: - As Finn Bock points out, _P_WAIT etc. don't have a leading underscore - so they don't need to be treated specially here. - -Mon Feb 22 15:38:58 1999 Fred Drake - - * Misc/NEWS: - Typo: "apparentlt" --> "apparently" - -Mon Feb 22 15:38:46 1999 Guido van Rossum - - * Lib/urlparse.py: Steve Clift pointed out that 'file' allows a netloc. - - * Modules/posixmodule.c: - The docstring for ttyname(..) claims a second "mode" argument. The - actual code does not allow such an argument. (Finn Bock.) - - * Lib/lib-old/poly.py: - Dang. Even though this is obsolete code, somebody found a bug, and I - fix it. Oh well. - -Thu Feb 18 20:51:50 1999 Fred Drake - - * Lib/pyclbr.py: - Bow to font-lock at the end of the docstring, since it throws stuff - off. - - Make sure the path paramter to readmodule() is a list before adding it - with sys.path, or the addition could fail. - - -====================================================================== - - -From 1.5.2b1 to 1.5.2b2 -======================= - -General -------- - -- Many memory leaks fixed. - -- Many small bugs fixed. - -- Command line option -OO (or -O -O) suppresses inclusion of doc -strings in resulting bytecode. - -Windows-specific changes ------------------------- - -- New built-in module winsound provides an interface to the Win32 -PlaySound() call. - -- Re-enable the audioop module in the config.c file. - -- On Windows, support spawnv() and associated P_* symbols. - -- Fixed the conversion of times() return values on Windows. - -- Removed freeze from the installer -- it doesn't work without the -source tree. (See FAQ 8.11.) - -- On Windows 95/98, the Tkinter module now is smart enough to find -Tcl/Tk even when the PATH environment variable hasn't been set -- when -the import of _tkinter fails, it searches in a standard locations, -patches os.environ["PATH"], and tries again. When it still fails, a -clearer error message is produced. This should avoid most -installation problems with Tkinter use (e.g. in IDLE). - -- The -i option doesn't make any calls to set[v]buf() for stdin -- -this apparently screwed up _kbhit() and the _tkinter main loop. - -- The ntpath module (and hence, os.path on Windows) now parses out UNC -paths (e.g. \\host\mountpoint\dir\file) as "drive letters", so that -splitdrive() will \\host\mountpoint as the drive and \dir\file as the -path. ** EXPERIMENTAL ** - -- Added a hack to the exit code so that if (1) the exit status is -nonzero and (2) we think we have our own DOS box (i.e. we're not -started from a command line shell), we print a message and wait for -the user to hit a key before the DOS box is closed. - -- Updated the installer to WISE 5.0g. Added a dialog warning about -the imminent Tcl installation. Added a dialog to specify the program -group name in the start menu. Upgraded the Tcl installer to Tcl -8.0.4. - -Changes to intrinsics ---------------------- - -- The repr() or str() of a module object now shows the __file__ -attribute (i.e., the file which it was loaded), or the string -"(built-in)" if there is no __file__ attribute. - -- The range() function now avoids overflow during its calculations (if -at all possible). - -- New info string sys.hexversion, which is an integer encoding the -version in hexadecimal. In other words, hex(sys.hexversion) == -0x010502b2 for Python 1.5.2b2. - -New or improved ports ---------------------- - -- Support for Nextstep descendants (future Mac systems). - -- Improved BeOS support. - -- Support dynamic loading of shared libraries on NetBSD platforms that -use ELF (i.e., MIPS and Alpha systems). - -Configuration/build changes ---------------------------- - -- The Lib/test directory is no longer included in the default module -search path (sys.path) -- "test" has been a package ever since 1.5. - -- Now using autoconf 2.13. - -New library modules -------------------- - -- New library modules asyncore and asynchat: these form Sam Rushing's -famous asynchronous socket library. Sam has gracefully allowed me to -incorporate these in the standard Python library. - -- New module statvfs contains indexing constants for [f]statvfs() -return tuple. - -Changes to the library ----------------------- - -- The wave module (platform-independent support for Windows sound -files) has been fixed to actually make it work. - -- The sunau module (platform-independent support for Sun/NeXT sound -files) has been fixed to work across platforms. Also, a weird -encoding bug in the header of the audio test data file has been -corrected. - -- Fix a bug in the urllib module that occasionally tripped up -webchecker and other ftp retrieves. - -- ConfigParser's get() method now accepts an optional keyword argument -(vars) that is substituted on top of the defaults that were setup in -__init__. You can now also have recusive references in your -configuration file. - -- Some improvements to the Queue module, including a put_nowait() -module and an optional "block" second argument, to get() and put(), -defaulting to 1. - -- The updated xmllib module is once again compatible with the version -present in Python 1.5.1 (this was accidentally broken in 1.5.2b1). - -- The bdb module (base class for the debugger) now supports -canonicalizing pathnames used in breakpoints. The derived class must -override the new canonical() method for this to work. Also changed -clear_break() to the backwards compatible old signature, and added -clear_bpbynumber() for the new functionality. - -- In sgmllib (and hence htmllib), recognize attributes even if they -don't have space in front of them. I.e. '' will now have two attributes recognized. - -- In the debugger (pdb), change clear syntax to support three -alternatives: clear; clear file:line; clear bpno bpno ... - -- The os.path module now pretends to be a submodule within the os -"package", so you can do things like "from os.path import exists". - -- The standard exceptions now have doc strings. - -- In the smtplib module, exceptions are now classes. Also avoid -inserting a non-standard space after "TO" in rcpt() command. - -- The rfc822 module's getaddrlist() method now uses all occurrences of -the specified header instead of just the first. Some other bugfixes -too (to handle more weird addresses found in a very large test set, -and to avoid crashes on certain invalid dates), and a small test -module has been added. - -- Fixed bug in urlparse in the common-case code for HTTP URLs; it -would lose the query, fragment, and/or parameter information. - -- The sndhdr module no longer supports whatraw() -- it depended on a -rare extenral program. - -- The UserList module/class now supports the extend() method, like -real list objects. - -- The uu module now deals better with trailing garbage generated by -some broke uuencoders. - -- The telnet module now has an my_interact() method which uses threads -instead of select. The interact() method uses this by default on -Windows (where the single-threaded version doesn't work). - -- Add a class to mailbox.py for dealing with qmail directory -mailboxes. The test code was extended to notice these being used as -well. - -Changes to extension modules ----------------------------- - -- Support for the [f]statvfs() system call, where it exists. - -- Fixed some bugs in cPickle where bad input could cause it to dump -core. - -- Fixed cStringIO to make the writelines() function actually work. - -- Added strop.expandtabs() so string.expandtabs() is now much faster. - -- Added fsync() and fdatasync(), if they appear to exist. - -- Support for "long files" (64-bit seek pointers). - -- Fixed a bug in the zlib module's flush() function. - -- Added access() system call. It returns 1 if access granted, 0 if -not. - -- The curses module implements an optional nlines argument to -w.scroll(). (It then calls wscrl(win, nlines) instead of scoll(win).) - -Changes to tools ----------------- - -- Some changes to IDLE; see Tools/idle/NEWS.txt. - -- Latest version of Misc/python-mode.el included. - -Changes to Tkinter ------------------- - -- Avoid tracebacks when an image is deleted after its root has been -destroyed. - -Changes to the Python/C API ---------------------------- - -- When parentheses are used in a PyArg_Parse[Tuple]() call, any -sequence is now accepted, instead of requiring a tuple. This is in -line with the general trend towards accepting arbitrary sequences. - -- Added PyModule_GetFilename(). - -- In PyNumber_Power(), remove unneeded and even harmful test for float -to the negative power (which is already and better done in -floatobject.c). - -- New version identification symbols; read patchlevel.h for info. The -version numbers are now exported by Python.h. - -- Rolled back the API version change -- it's back to 1007! - -- The frozenmain.c function calls PyInitFrozenExtensions(). - -- Added 'N' format character to Py_BuildValue -- like 'O' but doesn't -INCREF. - - -====================================================================== - - -From 1.5.2a2 to 1.5.2b1 -======================= - -Changes to intrinsics ---------------------- - -- New extension NotImplementedError, derived from RuntimeError. Not -used, but recommended use is for "abstract" methods to raise this. - -- The parser will now spit out a warning or error when -t or -tt is -used for parser input coming from a string, too. - -- The code generator now inserts extra SET_LINENO opcodes when -compiling multi-line argument lists. - -- When comparing bound methods, use identity test on the objects, not -equality test. - -New or improved ports ---------------------- - -- Chris Herborth has redone his BeOS port; it now works on PowerPC -(R3/R4) and x86 (R4 only). Threads work too in this port. - -Renaming --------- - -- Thanks to Chris Herborth, the thread primitives now have proper Py* -names in the source code (they already had those for the linker, -through some smart macros; but the source still had the old, un-Py -names). - -Configuration/build changes ---------------------------- - -- Improved support for FreeBSD/3. - -- Check for pthread_detach instead of pthread_create in libc. - -- The makesetup script now searches EXECINCLUDEPY before INCLUDEPY. - -- Misc/Makefile.pre.in now also looks at Setup.thread and Setup.local. -Otherwise modules such as thread didn't get incorporated in extensions. - -New library modules -------------------- - -- shlex.py by Eric Raymond provides a lexical analyzer class for -simple shell-like syntaxes. - -- netrc.py by Eric Raymond provides a parser for .netrc files. (The -undocumented Netrc class in ftplib.py is now obsolete.) - -- codeop.py is a new module that contains the compile_command() -function that was previously in code.py. This is so that JPython can -provide its own version of this function, while still sharing the -higher-level classes in code.py. - -- turtle.py is a new module for simple turtle graphics. I'm still -working on it; let me know if you use this to teach Python to children -or other novices without prior programming experience. - -Obsoleted library modules -------------------------- - -- poly.py and zmod.py have been moved to Lib/lib-old to emphasize -their status of obsoleteness. They don't do a particularly good job -and don't seem particularly relevant to the Python core. - -New tools ---------- - -- I've added IDLE: my Integrated DeveLopment Environment for Python. -Requires Tcl/Tk (and Tkinter). Works on Windows and Unix (and should -work on Macintosh, but I haven't been able to test it there; it does -depend on new features in 1.5.2 and perhaps even new features in -1.5.2b1, especially the new code module). This is very much a work in -progress. I'd like to hear how people like it compared to PTUI (or -any other IDE they are familiar with). - -- New tools by Barry Warsaw: - - = audiopy: controls the Solaris Audio device - = pynche: The PYthonically Natural Color and Hue Editor - = world: Print mappings between country names and DNS country codes - -New demos ---------- - -- Demo/scripts/beer.py prints the lyrics to an arithmetic drinking -song. - -- Demo/tkinter/guido/optionmenu.py shows how to do an option menu in -Tkinter. (By Fredrik Lundh -- not by me!) - -Changes to the library ----------------------- - -- compileall.py now avoids recompiling .py files that haven't changed; -it adds a -f option to force recompilation. - -- New version of xmllib.py by Sjoerd Mullender (0.2 with latest -patches). - -- nntplib.py: statparse() no longer lowercases the message-id. - -- types.py: use type(__stdin__) for FileType. - -- urllib.py: fix translations for filenames with "funny" characters. -Patch by Sjoerd Mullender. Note that if you subclass one of the -URLopener classes, and you have copied code from the old urllib.py, -your subclass may stop working. A long-term solution is to provide -more methods so that you don't have to copy code. - -- cgi.py: In read_multi, allow a subclass to override the class we -instantiate when we create a recursive instance, by setting the class -variable 'FieldStorageClass' to the desired class. By default, this -is set to None, in which case we use self.__class__ (as before). -Also, a patch by Jim Fulton to pass additional arguments to recursive -calls to the FieldStorage constructor from its read_multi method. - -- UserList.py: In __getslice__, use self.__class__ instead of -UserList. - -- In SimpleHTTPServer.py, the server specified in test() should be -BaseHTTPServer.HTTPServer, in case the request handler should want to -reference the two attributes added by BaseHTTPServer.server_bind. (By -Jeff Rush, for Bobo). Also open the file in binary mode, so serving -images from a Windows box might actually work. - -- In CGIHTTPServer.py, the list of acceptable formats is -split- -on spaces but -joined- on commas, resulting in double commas -in the joined text. (By Jeff Rush.) - -- SocketServer.py, patch by Jeff Bauer: a minor change to declare two -new threaded versions of Unix Server classes, using the ThreadingMixIn -class: ThreadingUnixStreamServer, ThreadingUnixDatagramServer. - -- bdb.py: fix bomb on deleting a temporary breakpoint: there's no -method do_delete(); do_clear() was meant. By Greg Ward. - -- getopt.py: accept a non-list sequence for the long options (request -by Jack Jansen). Because it might be a common mistake to pass a -single string, this situation is treated separately. Also added -docstrings (copied from the library manual) and removed the (now -redundant) module comments. - -- tempfile.py: improvements to avoid security leaks. - -- code.py: moved compile_command() to new module codeop.py. - -- pickle.py: support pickle format 1.3 (binary float added). By Jim -Fulton. Also get rid of the undocumented obsolete Pickler dump_special -method. - -- uu.py: Move 'import sys' to top of module, as noted by Tim Peters. - -- imaplib.py: fix problem with some versions of IMAP4 servers that -choose to mix the case in their CAPABILITIES response. - -- cmp.py: use (f1, f2) as cache key instead of f1 + ' ' + f2. Noted -by Fredrik Lundh. - -Changes to extension modules ----------------------------- - -- More doc strings for several modules were contributed by Chris -Petrilli: math, cmath, fcntl. - -- Fixed a bug in zlibmodule.c that could cause core dumps on -decompression of rarely occurring input. - -- cPickle.c: new version from Jim Fulton, with Open Source copyright -notice. Also, initialize self->safe_constructors early on to prevent -crash in early dealloc. - -- cStringIO.c: new version from Jim Fulton, with Open Source copyright -notice. Also fixed a core dump in cStringIO.c when doing seeks. - -- mpzmodule.c: fix signed character usage in mpz.mpz(stringobjecty). - -- readline.c: Bernard Herzog pointed out that rl_parse_and_bind -modifies its argument string (bad function!), so we make a temporary -copy. - -- sunaudiodev.c: Barry Warsaw added more smarts to get the device and -control pseudo-device, per audio(7I). - -Changes to tools ----------------- - -- New, improved version of Barry Warsaw's Misc/python-mode.el (editing -support for Emacs). - -- tabnanny.py: added a -q ('quiet') option to tabnanny, which causes -only the names of offending files to be printed. - -- freeze: when printing missing modules, also print the module they -were imported from. - -- untabify.py: patch by Detlef Lannert to implement -t option -(set tab size). - -Changes to Tkinter ------------------- - -- grid_bbox(): support new Tk API: grid bbox ?column row? ?column2 -row2? - -- _tkinter.c: RajGopal Srinivasan noted that the latest code (1.5.2a2) -doesn't work when running in a non-threaded environment. He added -some #ifdefs that fix this. - -Changes to the Python/C API ---------------------------- - -- Bumped API version number to 1008 -- enough things have changed! - -- There's a new macro, PyThreadState_GET(), which does the same work -as PyThreadState_Get() without the overhead of a function call (it -also avoids the error check). The two top calling locations of -PyThreadState_Get() have been changed to use this macro. - -- All symbols intended for export from a DLL or shared library are now -marked as such (with the DL_IMPORT() macro) in the header file that -declares them. This was needed for the BeOS port, and should also -make some other ports easier. The PC port no longer needs the file -with exported symbols (PC/python_nt.def). There's also a DL_EXPORT -macro which is only used for init methods in extension modules, and -for Py_Main(). - -Invisible changes to internals ------------------------------- - -- Fixed a bug in new_buffersize() in fileobject.c which could -return a buffer size that was way too large. - -- Use PySys_WriteStderr instead of fprintf in most places. - -- dictobject.c: remove dead code discovered by Vladimir Marangozov. - -- tupleobject.c: make tuples less hungry -- an extra item was -allocated but never used. Tip by Vladimir Marangozov. - -- mymath.h: Metrowerks PRO4 finally fixes the hypot snafu. (Jack -Jansen) - -- import.c: Jim Fulton fixes a reference count bug in -PyEval_GetGlobals. - -- glmodule.c: check in the changed version after running the stubber -again -- this solves the conflict with curses over the 'clear' entry -point much nicer. (Jack Jansen had checked in the changes to cstubs -eons ago, but I never regenrated glmodule.c :-( ) - -- frameobject.c: fix reference count bug in PyFrame_New. Vladimir -Marangozov. - -- stropmodule.c: add a missing DECREF in an error exit. Submitted by -Jonathan Giddy. - - -====================================================================== - - -From 1.5.2a1 to 1.5.2a2 -======================= - -General -------- - -- It is now a syntax error to have a function argument without a -default following one with a default. - -- __file__ is now set to the .py file if it was parsed (it used to -always be the .pyc/.pyo file). - -- Don't exit with a fatal error during initialization when there's a -problem with the exceptions.py module. - -- New environment variable PYTHONOPTIMIZE can be used to set -O. - -- New version of python-mode.el for Emacs. - -Miscellaneous fixed bugs ------------------------- - -- No longer print the (confusing) error message about stack underflow -while compiling. - -- Some threading and locking bugs fixed. - -- When errno is zero, report "Error", not "Success". - -Documentation -------------- - -- Documentation will be released separately. - -- Doc strings added to array and md5 modules by Chris Petrilli. - -Ports and build procedure -------------------------- - -- Stop installing when a move or copy fails. - -- New version of the OS/2 port code by Jeff Rush. - -- The makesetup script handles absolute filenames better. - -- The 'new' module is now enabled by default in the Setup file. - -- I *think* I've solved the problem with the Linux build blowing up -sometimes due to a conflict between sigcheck/intrcheck and -signalmodule. - -Built-in functions ------------------- - -- The second argument to apply() can now be any sequence, not just a -tuple. - -Built-in types --------------- - -- Lists have a new method: L1.extend(L2) is equivalent to the common -idiom L1[len(L1):] = L2. - -- Better error messages when a sequence is indexed with a non-integer. - -- Bettter error message when calling a non-callable object (include -the type in the message). - -Python services ---------------- - -- New version of cPickle.c fixes some bugs. - -- pickle.py: improved instantiation error handling. - -- code.py: reworked quite a bit. New base class -InteractiveInterpreter and derived class InteractiveConsole. Fixed -several problems in compile_command(). - -- py_compile.py: print error message and continue on syntax errors. -Also fixed an old bug with the fstat code (it was never used). - -- pyclbr.py: support submodules of packages. - -String Services ---------------- - -- StringIO.py: raise the right exception (ValueError) for attempted -I/O on closed StringIO objects. - -- re.py: fixed a bug in subn(), which caused .groups() to fail inside -the replacement function called by sub(). - -- The struct module has a new format 'P': void * in native mode. - -Generic OS Services -------------------- - -- Module time: Y2K robustness. 2-digit year acceptance depends on -value of time.accept2dyear, initialized from env var PYTHONY2K, -default 0. Years 00-68 mean 2000-2068, while 69-99 mean 1969-1999 -(POSIX or X/Open recommendation). - -- os.path: normpath(".//x") should return "x", not "/x". - -- getpass.py: fall back on default_getpass() when sys.stdin.fileno() -doesn't work. - -- tempfile.py: regenerate the template after a fork() call. - -Optional OS Services --------------------- - -- In the signal module, disable restarting interrupted system calls -when we have siginterrupt(). - -Debugger --------- - -- No longer set __args__; this feature is no longer supported and can -affect the debugged code. - -- cmd.py, pdb.py and bdb.py have been overhauled by Richard Wolff, who -added aliases and some other useful new features, e.g. much better -breakpoint support: temporary breakpoint, disabled breakpoints, -breakpoints with ignore counts, and conditions; breakpoints can be set -on a file before it is loaded. - -Profiler --------- - -- Changes so that JPython can use it. Also fix the calibration code -so it actually works again -. -Internet Protocols and Support ------------------------------- - -- imaplib.py: new version from Piers Lauder. - -- smtplib.py: change sendmail() method to accept a single string or a -list or strings as the destination (commom newbie mistake). - -- poplib.py: LIST with a msg argument fixed. - -- urlparse.py: some optimizations for common case (http). - -- urllib.py: support content-length in info() for ftp protocol; -support for a progress meter through a third argument to -urlretrieve(); commented out gopher test (the test site is dead). - -Internet Data handling ----------------------- - -- sgmllib.py: support tags with - or . in their name. - -- mimetypes.py: guess_type() understands 'data' URLs. - -Restricted Execution --------------------- - -- The classes rexec.RModuleLoader and rexec.RModuleImporter no -longer exist. - -Tkinter -------- - -- When reporting an exception, store its info in sys.last_*. Also, -write all of it to stderr. - -- Added NS, EW, and NSEW constants, for grid's sticky option. - -- Fixed last-minute bug in 1.5.2a1 release: need to include "mytime.h". - -- Make bind variants without a sequence return a tuple of sequences -(formerly it returned a string, which wasn't very convenient). - -- Add image commands to the Text widget (these are new in Tk 8.0). - -- Added new listbox and canvas methods: {xview,yview}_{scroll,moveto}.) - -- Improved the thread code (but you still can't call update() from -another thread on Windows). - -- Fixed unnecessary references to _default_root in the new dialog -modules. - -- Miscellaneous problems fixed. - - -Windows General ---------------- - -- Call LoadLibraryEx(..., ..., LOAD_WITH_ALTERED_SEARCH_PATH) to -search for dependent dlls in the directory containing the .pyd. - -- In debugging mode, call DebugBreak() in Py_FatalError(). - -Windows Installer ------------------ - -- Install zlib.dll in the DLLs directory instead of in the win32 -system directory, to avoid conflicts with other applications that have -their own zlib.dll. - -Test Suite ----------- - -- test_long.py: new test for long integers, by Tim Peters. - -- regrtest.py: improved so it can be used for other test suites as -well. - -- test_strftime.py: use re to compare test results, to support legal -variants (e.g. on Linux). - -Tools and Demos ---------------- - -- Four new scripts in Tools/scripts: crlf.py and lfcr.py (to -remove/add Windows style '\r\n' line endings), untabify.py (to remove -tabs), and rgrep.yp (reverse grep). - -- Improvements to Tools/freeze/. Each Python module is now written to -its own C file. This prevents some compilers or assemblers from -blowing up on large frozen programs, and saves recompilation time if -only a few modules are changed. Other changes too, e.g. new command -line options -x and -i. - -- Much improved (and smaller!) version of Tools/scripts/mailerdaemon.py. - -Python/C API ------------- - -- New mechanism to support extensions of the type object while -remaining backward compatible with extensions compiled for previous -versions of Python 1.5. A flags field indicates presence of certain -fields. - -- Addition to the buffer API to differentiate access to bytes and -8-bit characters (in anticipation of Unicode characters). - -- New argument parsing format t# ("text") to indicate 8-bit -characters; s# simply means 8-bit bytes, for backwards compatibility. - -- New object type, bufferobject.c is an example and can be used to -create buffers from memory. - -- Some support for 64-bit longs, including some MS platforms. - -- Many calls to fprintf(stderr, ...) have been replaced with calls to -PySys_WriteStderr(...). - -- The calling context for PyOS_Readline() has changed: it must now be -called with the interpreter lock held! It releases the lock around -the call to the function pointed to by PyOS_ReadlineFunctionPointer -(default PyOS_StdioReadline()). - -- New APIs PyLong_FromVoidPtr() and PyLong_AsVoidPtr(). - -- Renamed header file "thread.h" to "pythread.h". - -- The code string of code objects may now be anything that supports the -buffer API. - - -====================================================================== - - -From 1.5.1 to 1.5.2a1 -===================== - -General -------- - -- When searching for the library, a landmark that is a compiled module -(string.pyc or string.pyo) is also accepted. - -- When following symbolic links to the python executable, use a loop -so that a symlink to a symlink can work. - -- Added a hack so that when you type 'quit' or 'exit' at the -interpreter, you get a friendly explanation of how to press Ctrl-D (or -Ctrl-Z) to exit. - -- New and improved Misc/python-mode.el (Python mode for Emacs). - -- Revert a new feature in Unix dynamic loading: for one or two -revisions, modules were loaded using the RTLD_GLOBAL flag. It turned -out to be a bad idea. - -Miscellaneous fixed bugs ------------------------- - -- All patches on the patch page have been integrated. (But much more -has been done!) - -- Several memory leaks plugged (e.g. the one for classes with a -__getattr__ method). - -- Removed the only use of calloc(). This triggered an obscure bug on -multiprocessor Sparc Solaris 2.6. - -- Fix a peculiar bug that would allow "import sys.time" to succeed -(believing the built-in time module to be a part of the sys package). - -- Fix a bug in the overflow checking when converting a Python long to -a C long (failed to convert -2147483648L, and some other cases). - -Documentation -------------- - -- Doc strings have been added to many extension modules: __builtin__, -errno, select, signal, socket, sys, thread, time. Also to methods of -list objects (try [].append.__doc__). A doc string on a type will now -automatically be propagated to an instance if the instance has methods -that are accessed in the usual way. - -- The documentation has been expanded and the formatting improved. -(Remember that the documentation is now unbundled and has its own -release cycle though; see http://www.python.org/doc/.) - -- Added Misc/Porting -- a mini-FAQ on porting to a new platform. - -Ports and build procedure -------------------------- - -- The BeOS port is now integrated. Courtesy Chris Herborth. - -- Symbol files for FreeBSD 2.x and 3.x have been contributed -(Lib/plat-freebsd[23]/*). - -- Support HPUX 10.20 DCE threads. - -- Finally fixed the configure script so that (on SGI) if -OPT:Olimit=0 -works, it won't also use -Olimit 1500 (which gives a warning for every -file). Also support the SGI_ABI environment variable better. - -- The makesetup script now understands absolute pathnames ending in .o -in the module -- it assumes it's a file for which we have no source. - -- Other miscellaneous improvements to the configure script and -Makefiles. - -- The test suite now uses a different sound sample. - -Built-in functions ------------------- - -- Better checks for invalid input to int(), long(), string.atoi(), -string.atol(). (Formerly, a sign without digits would be accepted as -a legal ways to spell zero.) - -- Changes to map() and filter() to use the length of a sequence only -as a hint -- if an IndexError happens earlier, take that. (Formerly, -this was considered an error.) - -- Experimental feature in getattr(): a third argument can specify a -default (instead of raising AttributeError). - -- Implement round() slightly different, so that for negative ndigits -no additional errors happen in the last step. - -- The open() function now adds the filename to the exception when it -fails. - -Built-in exceptions -------------------- - -- New standard exceptions EnvironmentError and PosixError. -EnvironmentError is the base class for IOError and PosixError; -PosixError is the same as os.error. All this so that either exception -class can be instantiated with a third argument indicating a filename. -The built-in function open() and most os/posix functions that take a -filename argument now use this. - -Built-in types --------------- - -- List objects now have an experimental pop() method; l.pop() returns -and removes the last item; l.pop(i) returns and removes the item at -i. Also, the sort() method is faster again. Sorting is now also -safer: it is impossible for the sorting function to modify the list -while the sort is going on (which could cause core dumps). - -- Changes to comparisons: numbers are now smaller than any other type. -This is done to prevent the circularity where [] < 0L < 1 < [] is -true. As a side effect, cmp(None, 0) is now positive instead of -negative. This *shouldn't* affect any working code, but I've found -that the change caused several "sleeping" bugs to become active, so -beware! - -- Instance methods may now have other callable objects than just -Python functions as their im_func. Use new.instancemethod() or write -your own C code to create them; new.instancemethod() may be called -with None for the instance to create an unbound method. - -- Assignment to __name__, __dict__ or __bases__ of a class object is -now allowed (with stringent type checks); also allow assignment to -__getattr__ etc. The cached values for __getattr__ etc. are -recomputed after such assignments (but not for derived classes :-( ). - -- Allow assignment to some attributes of function objects: func_code, -func_defaults and func_doc / __doc__. (With type checks except for -__doc__ / func_doc .) - -Python services ---------------- - -- New tests (in Lib/test): reperf.py (regular expression benchmark), -sortperf.py (list sorting benchmark), test_MimeWriter.py (test case -for the MimeWriter module). - -- Generalized test/regrtest.py so that it is useful for testing other -packages. - -- The ihooks.py module now understands package imports. - -- In code.py, add a class that subsumes Fredrik Lundh's -PythonInterpreter class. The interact() function now uses this. - -- In rlcompleter.py, in completer(), return None instead of raising an -IndexError when there are no more completions left. - -- Fixed the marshal module to test for certain common kinds of invalid -input. (It's still not foolproof!) - -- In the operator module, add an alias (now the preferred name) -"contains" for "sequenceincludes". - -String Services ---------------- - -- In the string and strop modules, in the replace() function, treat an -empty pattern as an error (since it's not clear what was meant!). - -- Some speedups to re.py, especially the string substitution and split -functions. Also added new function/method findall(), to find all -occurrences of a given substring. - -- In cStringIO, add better argument type checking and support the -readonly 'closed' attribute (like regular files). - -- In the struct module, unsigned 1-2 byte sized formats no longer -result in long integer values. - -Miscellaneous services ----------------------- - -- In whrandom.py, added new method and function randrange(), same as -choice(range(start, stop, step)) but faster. This addresses the -problem that randint() was accidentally defined as taking an inclusive -range. Also, randint(a, b) is now redefined as randrange(a, b+1), -adding extra range and type checking to its arguments! - -- Add some semi-thread-safety to random.gauss() (it used to be able to -crash when invoked from separate threads; now the worst it can do is -give a duplicate result occasionally). - -- Some restructuring and generalization done to cmd.py. - -- Major upgrade to ConfigParser.py; converted to using 're', added new -exceptions, support underscore in section header and option name. No -longer add 'name' option to every section; instead, add '__name__'. - -- In getpass.py, don't use raw_input() to ask for the password -- we -don't want it to show up in the readline history! Also don't catch -interrupts (the try-finally already does all necessary cleanup). - -Generic OS Services -------------------- - -- New functions in os.py: makedirs(), removedirs(), renames(). New -variable: linesep (the line separator as found in binary files, -i.e. '\n' on Unix, '\r\n' on DOS/Windows, '\r' on Mac. Do *not* use -this with files opened in (default) text mode; the line separator used -will always be '\n'! - -- Changes to the 'os.path' submodule of os.py: added getsize(), -getmtime(), getatime() -- these fetch the most popular items from the -stat return tuple. - -- In the time module, add strptime(), if it exists. (This parses a -time according to a format -- the inverse of strftime().) Also, -remove the call to mktime() from strftime() -- it messed up the -formatting of some non-local times. - -- In the socket module, added a new function gethostbyname_ex(). -Also, don't use #ifdef to test for some symbols that are enums on some -platforms (and should exist everywhere). - -Optional OS Services --------------------- - -- Some fixes to gzip.py. In particular, the readlines() method now -returns the lines *with* trailing newline characters, like readlines() -of regular file objects. Also, it didn't work together with cPickle; -fixed that. - -- In whichdb.py, support byte-swapped dbhash (bsddb) files. - -- In anydbm.py, look at the type of an existing database to determine -which module to use to open it. (The anydbm.error exception is now a -tuple.) - -Unix Services -------------- - -- In the termios module, in tcsetattr(), initialize the structure vy -calling tcgetattr(). - -- Added some of the "wait status inspection" macros as functions to -the posix module (and thus to the os module): WEXITSTATUS(), -WIFEXITED(), WIFSIGNALED(), WIFSTOPPED(), WSTOPSIG(), WTERMSIG(). - -- In the syslog module, make the default facility more intuitive -(matching the docs). - -Debugger --------- - -- In pdb.py, support for setting breaks on files/modules that haven't -been loaded yet. - -Internet Protocols and Support ------------------------------- - -- Changes in urllib.py; sped up unquote() and quote(). Fixed an -obscure bug in quote_plus(). Added urlencode(dict) -- convenience -function for sending a POST request with urlopen(). Use the getpass -module to ask for a password. Rewrote the (test) main program so that -when used as a script, it can retrieve one or more URLs to stdout. -Use -t to run the self-test. Made the proxy code work again. - -- In cgi.py, treat "HEAD" the same as "GET", so that CGI scripts don't -fail when someone asks for their HEAD. Also, for POST, set the -default content-type to application/x-www-form-urlencoded. Also, in -FieldStorage.__init__(), when method='GET', always get the query -string from environ['QUERY_STRING'] or sys.argv[1] -- ignore an -explicitly passed in fp. - -- The smtplib.py module now supports ESMTP and has improved standard -compliance, for picky servers. - -- Improved imaplib.py. - -- Fixed UDP support in SocketServer.py (it never worked). - -- Fixed a small bug in CGIHTTPServer.py. - -Internet Data handling ----------------------- - -- In rfc822.py, add a new class AddressList. Also support a new -overridable method, isheader(). Also add a get() method similar to -dictionaries (and make getheader() an alias for it). Also, be smarter -about seekable (test whether fp.tell() works) and test for presence of -unread() method before trying seeks. - -- In sgmllib.py, restore the call to report_unbalanced() that was lost -long ago. Also some other improvements: handle , allow . and - in entity names, and allow \r\n as line -separator. - -- Some restructuring and generalization done to multifile.py; support -a 'seekable' flag. - -Restricted Execution --------------------- - -- Improvements to rexec.py: package support; support a (minimal) -sys.exc_info(). Also made the (test) main program a bit fancier (you -can now use it to run arbitrary Python scripts in restricted mode). - -Tkinter -------- - -- On Unix, Tkinter can now safely be used from a multi-threaded -application. (Formerly, no threads would make progress while -Tkinter's mainloop() was active, because it didn't release the Python -interpreter lock.) Unfortunately, on Windows, threads other than the -main thread should not call update() or update_idletasks() because -this will deadlock the application. - -- An interactive interpreter that uses readline and Tkinter no longer -uses up all available CPU time. - -- Even if readline is not used, Tk windows created in an interactive -interpreter now get continuously updated. (This even works in Windows -as long as you don't hit a key.) - -- New demos in Demo/tkinter/guido/: brownian.py, redemo.py, switch.py. - -- No longer register Tcl_finalize() as a low-level exit handler. It -may call back into Python, and that's a bad idea. - -- Allow binding of Tcl commands (given as a string). - -- Some minor speedups; replace explicitly coded getint() with int() in -most places. - -- In FileDialog.py, remember the directory of the selected file, if -given. - -- Change the names of all methods in the Wm class: they are now -wm_title(), etc. The old names (title() etc.) are still defined as -aliases. - -- Add a new method of interpreter objects, interpaddr(). This returns -the address of the Tcl interpreter object, as an integer. Not very -useful for the Python programmer, but this can be called by another C -extension that needs to make calls into the Tcl/Tk C API and needs to -get the address of the Tcl interpreter object. A simple cast of the -return value to (Tcl_Interp *) will do the trick. - -Windows General ---------------- - -- Don't insist on proper case for module source files if the filename -is all uppercase (e.g. FOO.PY now matches foo; but FOO.py still -doesn't). This should address problems with this feature on -oldfashioned filesystems (Novell servers?). - -Windows Library ---------------- - -- os.environ is now all uppercase, but accesses are case insensitive, -and the putenv() calls made as a side effect of changing os.environ -are case preserving. - -- Removed samefile(), sameopenfile(), samestat() from os.path (aka -ntpath.py) -- these cannot be made to work reliably (at least I -wouldn't know how). - -- Fixed os.pipe() so that it returns file descriptors acceptable to -os.read() and os.write() (like it does on Unix), rather than Windows -file handles. - -- Added a table of WSA error codes to socket.py. - -- In the select module, put the (huge) file descriptor arrays on the -heap. - -- The getpass module now raises KeyboardInterrupt when it sees ^C. - -- In mailbox.py, fix tell/seek when using files opened in text mode. - -- In rfc822.py, fix tell/seek when using files opened in text mode. - -- In the msvcrt extension module, release the interpreter lock for -calls that may block: _locking(), _getch(), _getche(). Also fix a -bogus error return when open_osfhandle() doesn't have the right -argument list. - -Windows Installer ------------------ - -- The registry key used is now "1.5" instead of "1.5.x" -- so future -versions of 1.5 and Mark Hammond's win32all installer don't need to be -resynchronized. - -Windows Tools -------------- - -- Several improvements to freeze specifically for Windows. - -Windows Build Procedure ------------------------ - -- The VC++ project files and the WISE installer have been moved to the -PCbuild subdirectory, so they are distributed in the same subdirectory -where they must be used. This avoids confusion. - -- New project files for Windows 3.1 port by Jim Ahlstrom. - -- Got rid of the obsolete subdirectory PC/setup_nt/. - -- The projects now use distinct filenames for the .exe, .dll, .lib and -.pyd files built in debug mode (by appending "_d" to the base name, -before the extension). This makes it easier to switch between the two -and get the right versions. There's a pragma in config.h that directs -the linker to include the appropriate .lib file (so python15.lib no -longer needs to be explicit in your project). - -- The installer now installs more files (e.g. config.h). The idea is -that you shouldn't need the source distribution if you want build your -own extensions in C or C++. - -Tools and Demos ---------------- - -- New script nm2def.py by Marc-Andre Lemburg, to construct -PC/python_nt.def automatically (some hand editing still required). - -- New tool ndiff.py: Tim Peters' text diffing tool. - -- Various and sundry improvements to the freeze script. - -- The script texi2html.py (which was part of the Doc tree but is no -longer used there) has been moved to the Tools/scripts subdirectory. - -- Some generalizations in the webchecker code. There's now a -primnitive gui for websucker.py: wsgui.py. (In Tools/webchecker/.) - -- The ftpmirror.py script now handles symbolic links properly, and -also files with multiple spaces in their names. - -- The 1.5.1 tabnanny.py suffers an assert error if fed a script whose -last line is both indented and lacks a newline. This is now fixed. - -Python/C API ------------- - -- Added missing prototypes for PyEval_CallFunction() and -PyEval_CallMethod(). - -- New macro PyList_SET_ITEM(). - -- New macros to access object members for PyFunction, PyCFunction -objects. - -- New APIs PyImport_AppendInittab() an PyImport_ExtendInittab() to -dynamically add one or many entries to the table of built-in modules. - -- New macro Py_InitModule3(name, methods, doc) which calls -Py_InitModule4() with appropriate arguments. (The -4 variant requires -you to pass an obscure version number constant which is always the same.) - -- New APIs PySys_WriteStdout() and PySys_WriteStderr() to write to -sys.stdout or sys.stderr using a printf-like interface. (Used in -_tkinter.c, for example.) - -- New APIs for conversion between Python longs and C 'long long' if -your compiler supports it. - -- PySequence_In() is now called PySequence_Contains(). -(PySequence_In() is still supported for b/w compatibility; it is -declared obsolete because its argument order is confusing.) - -- PyDict_GetItem() and PyDict_GetItemString() are changed so that they -*never* raise an exception -- (even if the hash() fails, simply clear -the error). This was necessary because there is lots of code out -there that already assumes this. - -- Changes to PySequence_Tuple() and PySequence_List() to use the -length of a sequence only as a hint -- if an IndexError happens -earlier, take that. (Formerly, this was considered an error.) - -- Reformatted abstract.c to give it a more familiar "look" and fixed -many error checking bugs. - -- Add NULL pointer checks to all calls of a C function through a type -object and extensions (e.g. nb_add). - -- The code that initializes sys.path now calls Py_GetPythonHome() -instead of getenv("PYTHONHOME"). This, together with the new API -Py_SetPythonHome(), makes it easier for embedding applications to -change the notion of Python's "home" directory (where the libraries -etc. are sought). - -- Fixed a very old bug in the parsing of "O?" format specifiers. - - -====================================================================== - - -======================================== -==> Release 1.5.1 (October 31, 1998) <== -======================================== - -From 1.5 to 1.5.1 -================= - -General -------- - -- The documentation is now unbundled. It has also been extensively -modified (mostly to implement a new and more uniform formatting -style). We figure that most people will prefer to download one of the -preformatted documentation sets (HTML, PostScript or PDF) and that -only a minority have a need for the LaTeX or FrameMaker sources. Of -course, the unbundled documentation sources still released -- just not -in the same archive file, and perhaps not on the same date. - -- All bugs noted on the errors page (and many unnoted) are fixed. All -new bugs take their places. - -- No longer a core dump when attempting to print (or repr(), or str()) -a list or dictionary that contains an instance of itself; instead, the -recursive entry is printed as [...] or {...}. See Py_ReprEnter() and -Py_ReprLeave() below. Comparisons of such objects still go beserk, -since this requires a different kind of fix; fortunately, this is a -less common scenario in practice. - -Syntax change -------------- - -- The raise statement can now be used without arguments, to re-raise -a previously set exception. This should be used after catching an -exception with an except clause only, either in the except clause or -later in the same function. - -Import and module handling --------------------------- - -- The implementation of import has changed to use a mutex (when -threading is supported). This means that when two threads -simultaneously import the same module, the import statements are -serialized. Recursive imports are not affected. - -- Rewrote the finalization code almost completely, to be much more -careful with the order in which modules are destroyed. Destructors -will now generally be able to reference built-in names such as None -without trouble. - -- Case-insensitive platforms such as Mac and Windows require the case -of a module's filename to match the case of the module name as -specified in the import statement (see below). - -- The code for figuring out the default path now distinguishes between -files, modules, executable files, and directories. When expecting a -module, we also look for the .pyc or .pyo file. - -Parser/tokenizer changes ------------------------- - -- The tokenizer can now warn you when your source code mixes tabs and -spaces for indentation in a manner that depends on how much a tab is -worth in spaces. Use "python -t" or "python -v" to enable this -option. Use "python -tt" to turn the warnings into errors. (See also -tabnanny.py and tabpolice.py below.) - -- Return unsigned characters from tok_nextc(), so '\377' isn't -mistaken for an EOF character. - -- Fixed two pernicious bugs in the tokenizer that only affected AIX. -One was actually a general bug that was triggered by AIX's smaller I/O -buffer size. The other was a bug in the AIX optimizer's loop -unrolling code; swapping two statements made the problem go away. - -Tools, demos and miscellaneous files ------------------------------------- - -- There's a new version of Misc/python-mode.el (the Emacs mode for -Python) which is much smarter about guessing the indentation style -used in a particular file. Lots of other cool features too! - -- There are two new tools in Tools/scripts: tabnanny.py and -tabpolice.py, implementing two different ways of checking whether a -file uses indentation in a way that is sensitive to the interpretation -of a tab. The preferred module is tabnanny.py (by Tim Peters). - -- Some new demo programs: - - Demo/tkinter/guido/paint.py -- Dave Mitchell - Demo/sockets/unixserver.py -- Piet van Oostrum - - -- Much better freeze support. The freeze script can now freeze -hierarchical module names (with a corresponding change to import.c), -and has a few extra options (e.g. to suppress freezing specific -modules). It also does much more on Windows NT. - -- Version 1.0 of the faq wizard is included (only very small changes -since version 0.9.0). - -- New feature for the ftpmirror script: when removing local files -(i.e., only when -r is used), do a recursive delete. - -Configuring and building Python -------------------------------- - -- Get rid of the check for -linet -- recent Sequent Dynix systems don't -need this any more and apparently it screws up their configuration. - -- Some changes because gcc on SGI doesn't support '-all'. - -- Changed the build rules to use $(LIBRARY) instead of - -L.. -lpython$(VERSION) -since the latter trips up the SunOS 4.1.x linker (sigh). - -- Fix the bug where the '# dgux is broken' comment in the Makefile -tripped over Make on some platforms. - -- Changes for AIX: install the python.exp file; properly use -$(srcdir); the makexp_aix script now removes C++ entries of the form -Class::method. - -- Deleted some Makefile targets only used by the (long obsolete) -gMakefile hacks. - -Extension modules ------------------ - -- Performance and threading improvements to the socket and bsddb -modules, by Christopher Lindblad of Infoseek. - -- Added operator.__not__ and operator.not_. - -- In the thread module, when a thread exits due to an unhandled -exception, don't store the exception information in sys.last_*; it -prevents proper calling of destructors of local variables. - -- Fixed a number of small bugs in the cPickle module. - -- Changed find() and rfind() in the strop module so that -find("x","",2) returns -1, matching the implementation in string.py. - -- In the time module, be more careful with the result of ctime(), and -test for HAVE_MKTIME before usinmg mktime(). - -- Doc strings contributed by Mitch Chapman to the termios, pwd, gdbm -modules. - -- Added the LOG_SYSLOG constant to the syslog module, if defined. - -Standard library modules ------------------------- - -- All standard library modules have been converted to an indentation -style using either only tabs or only spaces -- never a mixture -- if -they weren't already consistent according to tabnanny. This means -that the new -t option (see above) won't complain about standard -library modules. - -- New standard library modules: - - threading -- GvR and the thread-sig - Java style thread objects -- USE THIS!!! - - getpass -- Piers Lauder - simple utilities to prompt for a password and to - retrieve the current username - - imaplib -- Piers Lauder - interface for the IMAP4 protocol - - poplib -- David Ascher, Piers Lauder - interface for the POP3 protocol - - smtplib -- Dragon De Monsyne - interface for the SMTP protocol - -- Some obsolete modules moved to a separate directory (Lib/lib-old) -which is *not* in the default module search path: - - Para - addpack - codehack - fmt - lockfile - newdir - ni - rand - tb - -- New version of the PCRE code (Perl Compatible Regular Expressions -- -the re module and the supporting pcre extension) by Andrew Kuchling. -Incompatible new feature in re.sub(): the handling of escapes in the -replacement string has changed. - -- Interface change in the copy module: a __deepcopy__ method is now -called with the memo dictionary as an argument. - -- Feature change in the tokenize module: differentiate between NEWLINE -token (an official newline) and NL token (a newline that the grammar -ignores). - -- Several bugfixes to the urllib module. It is now truly thread-safe, -and several bugs and a portability problem have been fixed. New -features, all due to Sjoerd Mullender: When creating a temporary file, -it gives it an appropriate suffix. Support the "data:" URL scheme. -The open() method uses the tempcache. - -- New version of the xmllib module (this time with a test suite!) by -Sjoerd Mullender. - -- Added debugging code to the telnetlib module, to be able to trace -the actual traffic. - -- In the rfc822 module, added support for deleting a header (still no -support for adding headers, though). Also fixed a bug where an -illegal address would cause a crash in getrouteaddr(), fixed a -sign reversal in mktime_tz(), and use the local timezone by default -(the latter two due to Bill van Melle). - -- The normpath() function in the dospath and ntpath modules no longer -does case normalization -- for that, use the separate function -normcase() (which always existed); normcase() has been sped up and -fixed (it was the cause of a crash in Mark Hammond's installer in -certain locales). - -- New command supported by the ftplib module: rmd(); also fixed some -minor bugs. - -- The profile module now uses a different timer function by default -- -time.clock() is generally better than os.times(). This makes it work -better on Windows NT, too. - -- The tempfile module now recovers when os.getcwd() raises an -exception. - -- Fixed some bugs in the random module; gauss() was subtly wrong, and -vonmisesvariate() should return a full circle. Courtesy Mike Miller, -Lambert Meertens (gauss()), and Magnus Kessler (vonmisesvariate()). - -- Better default seed in the whrandom module, courtesy Andrew Kuchling. - -- Fix slow close() in shelve module. - -- The Unix mailbox class in the mailbox module is now more robust when -a line begins with the string "From " but is definitely not the start -of a new message. The pattern used can be changed by overriding a -method or class variable. - -- Added a rmtree() function to the copy module. - -- Fixed several typos in the pickle module. Also fixed problems when -unpickling in restricted execution environments. - -- Added docstrings and fixed a typo in the py_compile and compileall -modules. At Mark Hammond's repeated request, py_compile now append a -newline to the source if it needs one. Both modules support an extra -parameter to specify the purported source filename (to be used in -error messages). - -- Some performance tweaks by Jeremy Hylton to the gzip module. - -- Fixed a bug in the merge order of dictionaries in the ConfigParser -module. Courtesy Barry Warsaw. - -- In the multifile module, support the optional second parameter to -seek() when possible. - -- Several fixes to the gopherlib module by Lars Marius Garshol. Also, -urlparse now correctly handles Gopher URLs with query strings. - -- Fixed a tiny bug in format_exception() in the traceback module. -Also rewrite tb_lineno() to be compatible with JPython (and not -disturb the current exception!); by Jim Hugunin. - -- The httplib module is more robust when servers send a short response --- courtesy Tim O'Malley. - -Tkinter and friends -------------------- - -- Various typos and bugs fixed. - -- New module Tkdnd implements a drag-and-drop protocol (within one -application only). - -- The event_*() widget methods have been restructured slightly -- they -no longer use the default root. - -- The interfaces for the bind*() and unbind() widget methods have been -redesigned; the bind*() methods now return the name of the Tcl command -created for the callback, and this can be passed as a optional -argument to unbind() in order to delete the command (normally, such -commands are automatically unbound when the widget is destroyed, but -for some applications this isn't enough). - -- Variable objects now have trace methods to interface to Tcl's -variable tracing facilities. - -- Image objects now have an optional keyword argument, 'master', to -specify a widget (tree) to which they belong. The image_names() and -image_types() calls are now also widget methods. - -- There's a new global call, Tkinter.NoDefaultRoot(), which disables -all use of the default root by the Tkinter library. This is useful to -debug applications that are in the process of being converted from -relying on the default root to explicit specification of the root -widget. - -- The 'exit' command is deleted from the Tcl interpreter, since it -provided a loophole by which one could (accidentally) exit the Python -interpreter without invoking any cleanup code. - -- Tcl_Finalize() is now registered as a Python low-level exit handle, -so Tcl will be finalized when Python exits. - -The Python/C API ----------------- - -- New function PyThreadState_GetDict() returns a per-thread dictionary -intended for storing thread-local global variables. - -- New functions Py_ReprEnter() and Py_ReprLeave() use the per-thread -dictionary to allow recursive container types to detect recursion in -their repr(), str() and print implementations. - -- New function PyObject_Not(x) calculates (not x) according to Python's -standard rules (basically, it negates the outcome PyObject_IsTrue(x). - -- New function _PyModule_Clear(), which clears a module's dictionary -carefully without removing the __builtins__ entry. This is implied -when a module object is deallocated (this used to clear the dictionary -completely). - -- New function PyImport_ExecCodeModuleEx(), which extends -PyImport_ExecCodeModule() by adding an extra parameter to pass it the -true file. - -- New functions Py_GetPythonHome() and Py_SetPythonHome(), intended to -allow embedded applications to force a different value for PYTHONHOME. - -- New global flag Py_FrozenFlag is set when this is a "frozen" Python -binary; it suppresses warnings about not being able to find the -standard library directories. - -- New global flag Py_TabcheckFlag is incremented by the -t option and -causes the tokenizer to issue warnings or errors about inconsistent -mixing of tabs and spaces for indentation. - -Miscellaneous minor changes and bug fixes ------------------------------------------ - -- Improved the error message when an attribute of an attribute-less -object is requested -- include the name of the attribute and the type -of the object in the message. - -- Sped up int(), long(), float() a bit. - -- Fixed a bug in list.sort() that would occasionally dump core. - -- Fixed a bug in PyNumber_Power() that caused numeric arrays to fail -when taken tothe real power. - -- Fixed a number of bugs in the file reading code, at least one of -which could cause a core dump on NT, and one of which would -occasionally cause file.read() to return less than the full contents -of the file. - -- Performance hack by Vladimir Marangozov for stack frame creation. - -- Make sure setvbuf() isn't used unless HAVE_SETVBUF is defined. - -Windows 95/NT -------------- - -- The .lib files are now part of the distribution; they are collected -in the subdirectory "libs" of the installation directory. - -- The extension modules (.pyd files) are now collected in a separate -subdirectory of the installation directory named "DLLs". - -- The case of a module's filename must now match the case of the -module name as specified in the import statement. This is an -experimental feature -- if it turns out to break in too many -situations, it will be removed (or disabled by default) in the future. -It can be disabled on a per-case basis by setting the environment -variable PYTHONCASEOK (to any value). - - -====================================================================== - - -===================================== -==> Release 1.5 (January 3, 1998) <== -===================================== - - -From 1.5b2 to 1.5 -================= - -- Newly documentated module: BaseHTTPServer.py, thanks to Greg Stein. - -- Added doc strings to string.py, stropmodule.c, structmodule.c, -thanks to Charles Waldman. - -- Many nits fixed in the manuals, thanks to Fred Drake and many others -(especially Rob Hooft and Andrew Kuchling). The HTML version now uses -HTML markup instead of inline GIF images for tables; only two images -are left (for obsure bits of math). The index of the HTML version has -also been much improved. Finally, it is once again possible to -generate an Emacs info file from the library manual (but I don't -commit to supporting this in future versions). - -- New module: telnetlib.py (a simple telnet client library). - -- New tool: Tools/versioncheck/, by Jack Jansen. - -- Ported zlibmodule.c and bsddbmodule.c to NT; The project file for MS -DevStudio 5.0 now includes new subprojects to build the zlib and bsddb -extension modules. - -- Many small changes again to Tkinter.py -- mostly bugfixes and adding -missing routines. Thanks to Greg McFarlane for reporting a bunch of -problems and proofreading my fixes. - -- The re module and its documentation are up to date with the latest -version released to the string-sig (Dec. 22). - -- Stop test_grp.py from failing when the /etc/group file is empty -(yes, this happens!). - -- Fix bug in integer conversion (mystrtoul.c) that caused -4294967296==0 to be true! - -- The VC++ 4.2 project file should be complete again. - -- In tempfile.py, use a better template on NT, and add a new optional -argument "suffix" with default "" to specify a specific extension for -the temporary filename (needed sometimes on NT but perhaps also handy -elsewhere). - -- Fixed some bugs in the FAQ wizard, and converted it to use re -instead of regex. - -- Fixed a mysteriously undetected error in dlmodule.c (it was using a -totally bogus routine name to raise an exception). - -- Fixed bug in import.c which wasn't using the new "dos-8x3" name yet. - -- Hopefully harmless changes to the build process to support shared -libraries on DG/UX. This adds a target to create -libpython$(VERSION).so; however this target is *only* for DG/UX. - -- Fixed a bug in the new format string error checking in getargs.c. - -- A simple fix for infinite recursion when printing __builtins__: -reset '_' to None before printing and set it to the printed variable -*after* printing (and only when printing is successful). - -- Fixed lib-tk/SimpleDialog.py to keep the dialog visible even if the -parent window is not (Skip Montanaro). - -- Fixed the two most annoying problems with ftp URLs in -urllib.urlopen(); an empty file now correctly raises an error, and it -is no longer required to explicitly close the returned "file" object -before opening another ftp URL to the same host and directory. - - -====================================================================== - - -From 1.5b1 to 1.5b2 -=================== - -- Fixed a bug in cPickle.c that caused it to crash right away because -the version string had a different format. - -- Changes in pickle.py and cPickle.c: when unpickling an instance of a -class that doesn't define the __getinitargs__() method, the __init__() -constructor is no longer called. This makes a much larger group of -classes picklable by default, but may occasionally change semantics. -To force calling __init__() on unpickling, define a __getinitargs__() -method. Other changes too, in particular cPickle now handles classes -defined in packages correctly. The same change applies to copying -instances with copy.py. The cPickle.c changes and some pickle.py -changes are courtesy Jim Fulton. - -- Locale support in he "re" (Perl regular expressions) module. Use -the flag re.L (or re.LOCALE) to enable locale-specific matching -rules for \w and \b. The in-line syntax for this flag is (?L). - -- The built-in function isinstance(x, y) now also succeeds when y is -a type object and type(x) is y. - -- repr() and str() of class and instance objects now reflect the -package/module in which the class is defined. - -- Module "ni" has been removed. (If you really need it, it's been -renamed to "ni1". Let me know if this causes any problems for you. -Package authors are encouraged to write __init__.py files that -support both ni and 1.5 package support, so the same version can be -used with Python 1.4 as well as 1.5.) - -- The thread module is now automatically included when threads are -configured. (You must remove it from your existing Setup file, -since it is now in its own Setup.thread file.) - -- New command line option "-x" to skip the first line of the script; -handy to make executable scripts on non-Unix platforms. - -- In importdl.c, add the RTLD_GLOBAL to the dlopen() flags. I -haven't checked how this affects things, but it should make symbols -in one shared library available to the next one. - -- The Windows installer now installs in the "Program Files" folder on -the proper volume by default. - -- The Windows configuration adds a new main program, "pythonw", and -registers a new extension, ".pyw" that invokes this. This is a -pstandard Python interpreter that does not pop up a console window; -handy for pure Tkinter applications. All output to the original -stdout and stderr is lost; reading from the original stdin yields -EOF. Also, both python.exe and pythonw.exe now have a pretty icon -(a green snake in a box, courtesy Mark Hammond). - -- Lots of improvements to emacs-mode.el again. See Barry's web page: -http://www.python.org/ftp/emacs/pmdetails.html. - -- Lots of improvements and additions to the library reference manual; -many by Fred Drake. - -- Doc strings for the following modules: rfc822.py, posixpath.py, -ntpath.py, httplib.py. Thanks to Mitch Chapman and Charles Waldman. - -- Some more regression testing. - -- An optional 4th (maxsplit) argument to strop.replace(). - -- Fixed handling of maxsplit in string.splitfields(). - -- Tweaked os.environ so it can be pickled and copied. - -- The portability problems caused by indented preprocessor commands -and C++ style comments should be gone now. - -- In random.py, added Pareto and Weibull distributions. - -- The crypt module is now disabled in Modules/Setup.in by default; it -is rarely needed and causes errors on some systems where users often -don't know how to deal with those. - -- Some improvements to the _tkinter build line suggested by Case Roole. - -- A full suite of platform specific files for NetBSD 1.x, submitted by -Anders Andersen. - -- New Solaris specific header STROPTS.py. - -- Moved a confusing occurrence of *shared* from the comments in -Modules/Setup.in (people would enable this one instead of the real -one, and get disappointing results). - -- Changed the default mode for directories to be group-writable when -the installation process creates them. - -- Check for pthread support in "-l_r" for FreeBSD/NetBSD, and support -shared libraries for both. - -- Support FreeBSD and NetBSD in posixfile.py. - -- Support for the "event" command, new in Tk 4.2. By Case Roole. - -- Add Tix_SafeInit() support to tkappinit.c. - -- Various bugs fixed in "re.py" and "pcre.c". - -- Fixed a bug (broken use of the syntax table) in the old "regexpr.c". - -- In frozenmain.c, stdin is made unbuffered too when PYTHONUNBUFFERED -is set. - -- Provide default blocksize for retrbinary in ftplib.py (Skip -Montanaro). - -- In NT, pick the username up from different places in user.py (Jeff -Bauer). - -- Patch to urlparse.urljoin() for ".." and "..#1", Marc Lemburg. - -- Many small improvements to Jeff Rush' OS/2 support. - -- ospath.py is gone; it's been obsolete for so many years now... - -- The reference manual is now set up to prepare better HTML (still -using webmaker, alas). - -- Add special handling to /Tools/freeze for Python modules that are -imported implicitly by the Python runtime: 'site' and 'exceptions'. - -- Tools/faqwiz 0.8.3 -- add an option to suppress URL processing -inside
, by "Scott".
-
-- Added ConfigParser.py, a generic parser for sectioned configuration
-files.
-
-- In _localemodule.c, LC_MESSAGES is not always defined; put it
-between #ifdefs.
-
-- Typo in resource.c: RUSAGE_CHILDERN -> RUSAGE_CHILDREN.
-
-- Demo/scripts/newslist.py: Fix the way the version number is gotten
-out of the RCS revision.
-
-- PyArg_Parse[Tuple] now explicitly check for bad characters at the
-end of the format string.
-
-- Revamped PC/example_nt to support VC++ 5.x.
-
-- .sort() now uses a modified quicksort by Raymund Galvin,
-after studying the GNU libg++ quicksort.  This should be much faster
-if there are lots of duplicates, and otherwise at least as good.
-
-- Added "uue" as an alias for "uuencode" to mimetools.py.  (Hm, the
-uudecode bug where it complaints about trailing garbage is still there 
-:-( ).
-
-- pickle.py requires integers in text mode to be in decimal notation
-(it used to accept octal and hex, even though it would only generate
-decimal numbers).
-
-- In string.atof(), don't fail when the "re" module is unavailable.
-Plug the ensueing security leak by supplying an empty __builtins__
-directory to eval().
-
-- A bunch of small fixes and improvements to Tkinter.py.
-
-- Fixed a buffer overrun in PC/getpathp.c.
-
-
-======================================================================
-
-
-From 1.5a4 to 1.5b1
-===================
-
-- The Windows NT/95 installer now includes full HTML of all manuals.
-It also has a checkbox that lets you decide whether to install the
-interpreter and library.  The WISE installer script for the installer
-is included in the source tree as PC/python15.wse, and so are the
-icons used for Python files.  The config.c file for the Windows build
-is now complete with the pcre module.
-
-- sys.ps1 and sys.ps2 can now arbitrary objects; their str() is
-evaluated for the prompt.
-
-- The reference manual is brought up to date (more or less -- it still
-needs work, e.g. in the area of package import).
-
-- The icons used by latex2html are now included in the Doc
-subdirectory (mostly so that tarring up the HTML files can be fully
-automated).  A simple index.html is also added to Doc (it only works
-after you have successfully run latex2html).
-
-- For all you would-be proselytizers out there: a new version of
-Misc/BLURB describes Python more concisely, and Misc/comparisons
-compares Python to several other languages.  Misc/BLURB.WINDOWS
-contains a blurb specifically aimed at Windows programmers (by Mark
-Hammond).
-
-- A new version of the Python mode for Emacs is included as
-Misc/python-mode.el.  There are too many new features to list here.
-See http://www.python.org/ftp/emacs/pmdetails.html for more info.
-
-- New module fileinput makes iterating over the lines of a list of
-files easier.  (This still needs some more thinking to make it more
-extensible.)
-
-- There's full OS/2 support, courtesy Jeff Rush.  To build the OS/2
-version, see PC/readme.txt and PC/os2vacpp.  This is for IBM's Visual
-Age C++ compiler.  I expect that Jeff will also provide a binary
-release for this platform.
-
-- On Linux, the configure script now uses '-Xlinker -export-dynamic'
-instead of '-rdynamic' to link the main program so that it exports its
-symbols to shared libraries it loads dynamically.  I hope this doesn't
-break on older Linux versions; it is needed for mklinux and appears to
-work on Linux 2.0.30.
-
-- Some Tkinter resstructuring: the geometry methods that apply to a
-master are now properly usable on toplevel master widgets.  There's a
-new (internal) widget class, BaseWidget.  New, longer "official" names
-for the geometry manager methods have been added,
-e.g. "grid_columnconfigure()" instead of "columnconfigure()".  The old
-shorter names still work, and where there's ambiguity, pack wins over
-place wins over grid.  Also, the bind_class method now returns its
-value.
-
-- New, RFC-822 conformant parsing of email addresses and address lists
-in the rfc822 module, courtesy Ben Escoto.
-
-- New, revamped tkappinit.c with support for popular packages (PIL,
-TIX, BLT, TOGL).  For the last three, you need to execute the Tcl
-command "load {} Tix" (or Blt, or Togl) to gain access to them.
-The Modules/Setup line for the _tkinter module has been rewritten
-using the cool line-breaking feature of most Bourne shells.
-
-- New socket method connect_ex() returns the error code from connect()
-instead of raising an exception on errors; this makes the logic
-required for asynchronous connects simpler and more efficient.
-
-- New "locale" module with (still experimental) interface to the
-standard C library locale interface, courtesy Martin von Loewis.  This
-does not repeat my mistake in 1.5a4 of always calling
-setlocale(LC_ALL, "").  In fact, we've pretty much decided that
-Python's standard numerical formatting operations should always use
-the conventions for the C locale; the locale module contains utility
-functions to format numbers according to the user specified locale.
-(All this is accomplished by an explicit call to setlocale(LC_NUMERIC,
-"C") after locale-changing calls.)  See the library manual. (Alas, the
-promised changes to the "re" module for locale support have not been
-materialized yet.  If you care, volunteer!)
-
-- Memory leak plugged in Py_BuildValue when building a dictionary.
-
-- Shared modules can now live inside packages (hierarchical module
-namespaces).  No changes to the shared module itself are needed.
-
-- Improved policy for __builtins__: this is a module in __main__ and a
-dictionary everywhere else.
-
-- Python no longer catches SIGHUP and SIGTERM by default.  This was
-impossible to get right in the light of thread contexts.  If you want
-your program to clean up when a signal happens, use the signal module
-to set up your own signal handler.
-
-- New Python/C API PyNumber_CoerceEx() does not return an exception
-when no coercion is possible.  This is used to fix a problem where
-comparing incompatible numbers for equality would raise an exception
-rather than return false as in Python 1.4 -- it once again will return
-false.
-
-- The errno module is changed again -- the table of error messages
-(errorstr) is removed.  Instead, you can use os.strerror().  This
-removes redundance and a potential locale dependency.
-
-- New module xmllib, to parse XML files.  By Sjoerd Mullender.
-
-- New C API PyOS_AfterFork() is called after fork() in posixmodule.c.
-It resets the signal module's notion of what the current process ID
-and thread are, so that signal handlers will work after (and across)
-calls to os.fork().
-
-- Fixed most occurrences of fatal errors due to missing thread state.
-
-- For vgrind (a flexible source pretty printer) fans, there's a simple
-Python definition in Misc/vgrindefs, courtesy Neale Pickett.
-
-- Fixed memory leak in exec statement.
-
-- The test.pystone module has a new function, pystones(loops=LOOPS),
-which returns a (benchtime, stones) tuple.  The main() function now
-calls this and prints the report.
-
-- Package directories now *require* the presence of an __init__.py (or
-__init__.pyc) file before they are considered as packages.  This is
-done to prevent accidental subdirectories with common names from
-overriding modules with the same name.
-
-- Fixed some strange exceptions in __del__ methods in library modules
-(e.g. urllib).  This happens because the builtin names are already
-deleted by the time __del__ is called.  The solution (a hack, but it
-works) is to set some instance variables to 0 instead of None.
-
-- The table of built-in module initializers is replaced by a pointer
-variable.  This makes it possible to switch to a different table at
-run time, e.g. when a collection of modules is loaded from a shared
-library.  (No example code of how to do this is given, but it is
-possible.)  The table is still there of course, its name prefixed with
-an underscore and used to initialize the pointer.
-
-- The warning about a thread still having a frame now only happens in
-verbose mode.
-
-- Change the signal finialization so that it also resets the signal
-handlers.  After this has been called, our signal handlers are no
-longer active!
-
-- New version of tokenize.py (by Ka-Ping Yee) recognizes raw string
-literals.  There's now also a test fort this module.
-
-- The copy module now also uses __dict__.update(state) instead of
-going through individual attribute assignments, for class instances
-without a __setstate__ method.
-
-- New module reconvert translates old-style (regex module) regular
-expressions to new-style (re module, Perl-style) regular expressions.
-
-- Most modules that used to use the regex module now use the re
-module.  The grep module has a new pgrep() function which uses
-Perl-style regular expressions.
-
-- The (very old, backwards compatibility) regexp.py module has been
-deleted.
-
-- Restricted execution (rexec): added the pcre module (support for the
-re module) to the list of trusted extension modules.
-
-- New version of Jim Fulton's CObject object type, adds
-PyCObject_FromVoidPtrAndDesc() and PyCObject_GetDesc() APIs.
-
-- Some patches to Lee Busby's fpectl mods that accidentally didn't
-make it into 1.5a4.
-
-- In the string module, add an optional 4th argument to count(),
-matching find() etc.
-
-- Patch for the nntplib module by Charles Waldman to add optional user
-and password arguments to NNTP.__init__(), for nntp servers that need
-them.
-
-- The str() function for class objects now returns
-"modulename.classname" instead of returning the same as repr().
-
-- The parsing of \xXX escapes no longer relies on sscanf().
-
-- The "sharedmodules" subdirectory of the installation is renamed to
-"lib-dynload".  (You may have to edit your Modules/Setup file to fix
-this in an existing installation!)
-
-- Fixed Don Beaudry's mess-up with the OPT test in the configure
-script.  Certain SGI platforms will still issue a warning for each
-compile; there's not much I can do about this since the compiler's
-exit status doesn't indicate that I was using an obsolete option.
-
-- Fixed Barry's mess-up with {}.get(), and added test cases for it.
-
-- Shared libraries didn't quite work under AIX because of the change
-in status of the GNU readline interface.  Fix due to by Vladimir
-Marangozov.
-
-
-======================================================================
-
-
-From 1.5a3 to 1.5a4
-===================
-
-- faqwiz.py: version 0.8; Recognize https:// as URL; ...
-feature; better install instructions; removed faqmain.py (which was an
-older version).
-
-- nntplib.py: Fixed some bugs reported by Lars Wirzenius (to Debian)
-about the treatment of lines starting with '.'.  Added a minimal test
-function.
-
-- struct module: ignore most whitespace in format strings.
-
-- urllib.py: close the socket and temp file in URLopener.retrieve() so
-that multiple retrievals using the same connection work.
-
-- All standard exceptions are now classes by default; use -X to make
-them strings (for backward compatibility only).
-
-- There's a new standard exception hierarchy, defined in the standard
-library module exceptions.py (which you never need to import
-explicitly).  See
-http://grail.cnri.reston.va.us/python/essays/stdexceptions.html for
-more info.
-
-- Three new C API functions:
-
-  - int PyErr_GivenExceptionMatches(obj1, obj2)
-
-    Returns 1 if obj1 and obj2 are the same object, or if obj1 is an
-    instance of type obj2, or of a class derived from obj2
-
-  - int PyErr_ExceptionMatches(obj)
-
-    Higher level wrapper around PyErr_GivenExceptionMatches() which uses
-    PyErr_Occurred() as obj1.  This will be the more commonly called
-    function.
-
-  - void PyErr_NormalizeException(typeptr, valptr, tbptr)
-
-    Normalizes exceptions, and places the normalized values in the
-    arguments.  If type is not a class, this does nothing.  If type is a
-    class, then it makes sure that value is an instance of the class by:
-
-    1. if instance is of the type, or a class derived from type, it does
-       nothing.
-
-    2. otherwise it instantiates the class, using the value as an
-       argument.  If value is None, it uses an empty arg tuple, and if
-       the value is a tuple, it uses just that.
-
-- Another new C API function: PyErr_NewException() creates a new
-exception class derived from Exception; when -X is given, it creates a
-new string exception.
-
-- core interpreter: remove the distinction between tuple and list
-unpacking; allow an arbitrary sequence on the right hand side of any
-unpack instruction.  (UNPACK_LIST and UNPACK_TUPLE now do the same
-thing, which should really be called UNPACK_SEQUENCE.)
-
-- classes: Allow assignments to an instance's __dict__ or __class__,
-so you can change ivars (including shared ivars -- shock horror) and
-change classes dynamically.  Also make the check on read-only
-attributes of classes less draconic -- only the specials names
-__dict__, __bases__, __name__ and __{get,set,del}attr__ can't be
-assigned.
-
-- Two new built-in functions: issubclass() and isinstance().  Both
-take classes as their second arguments.  The former takes a class as
-the first argument and returns true iff first is second, or is a
-subclass of second.  The latter takes any object as the first argument
-and returns true iff first is an instance of the second, or any
-subclass of second.
-
-- configure: Added configuration tests for presence of alarm(),
-pause(), and getpwent().
-
-- Doc/Makefile: changed latex2html targets.
-
-- classes: Reverse the search order for the Don Beaudry hook so that
-the first class with an applicable hook wins.  Makes more sense.
-
-- Changed the checks made in Py_Initialize() and Py_Finalize().  It is
-now legal to call these more than once.  The first call to
-Py_Initialize() initializes, the first call to Py_Finalize()
-finalizes.  There's also a new API, Py_IsInitalized() which checks
-whether we are already initialized (in case you want to leave things
-as they were).
-
-- Completely disable the declarations for malloc(), realloc() and
-free().  Any 90's C compiler has these in header files, and the tests
-to decide whether to suppress the declarations kept failing on some
-platforms.
-
-- *Before* (instead of after) signalmodule.o is added, remove both
-intrcheck.o and sigcheck.o.  This should get rid of warnings in ar or
-ld on various systems.
-
-- Added reop to PC/config.c
-
-- configure: Decided to use -Aa -D_HPUX_SOURCE on HP-UX platforms.
-Removed outdated HP-UX comments from README.  Added Cray T3E comments.
-
-- Various renames of statically defined functions that had name
-conflicts on some systems, e.g. strndup (GNU libc), join (Cray),
-roundup (sys/types.h).
-
-- urllib.py: Interpret three slashes in file: URL as local file (for
-Netscape on Windows/Mac).
-
-- copy.py: Make sure the objects returned by __getinitargs__() are
-kept alive (in the memo) to avoid a certain kind of nasty crash.  (Not
-easily reproducable because it requires a later call to
-__getinitargs__() to return a tuple that happens to be allocated at
-the same address.)
-
-- Added definition of AR to toplevel Makefile.  Renamed @buildno temp
-file to buildno1.
-
-- Moved Include/assert.h to Parser/assert.h, which seems to be the
-only place where it's needed.
-
-- Tweaked the dictionary lookup code again for some more speed
-(Vladimir Marangozov).
-
-- NT build: Changed the way python15.lib is included in the other
-projects.  Per Mark Hammond's suggestion, add it to the extra libs in
-Settings instead of to the project's source files.
-
-- regrtest.py: Change default verbosity so that there are only three
-levels left: -q, default and -v.  In default mode, the name of each
-test is now printed.  -v is the same as the old -vv.  -q is more quiet
-than the old default mode.
-
-- Removed the old FAQ from the distribution.  You now have to get it
-from the web!
-
-- Removed the PC/make_nt.in file from the distribution; it is no
-longer needed.
-
-- Changed the build sequence so that shared modules are built last.
-This fixes things for AIX and doesn't hurt elsewhere.
-
-- Improved test for GNU MP v1 in mpzmodule.c
-
-- fileobject.c: ftell() on Linux discards all buffered data; changed
-read() code to use lseek() instead to get the same effect
-
-- configure.in, configure, importdl.c: NeXT sharedlib fixes
-
-- tupleobject.c: PyTuple_SetItem asserts refcnt==1
-
-- resource.c: Different strategy regarding whether to declare
-getrusage() and getpagesize() -- #ifdef doesn't work, Linux has
-conflicting decls in its headers.  Choice: only declare the return
-type, not the argument prototype, and not on Linux.
-
-- importdl.c, configure*: set sharedlib extensions properly for NeXT
-
-- configure*, Makefile.in, Modules/Makefile.pre.in: AIX shared libraries
-fixed; moved addition of PURIFY to LINKCC to configure
-
-- reopmodule.c, regexmodule.c, regexpr.c, zlibmodule.c: needed casts
-added to shup up various compilers.
-
-- _tkinter.c: removed buggy mac #ifndef
-
-- Doc: various Mac documentation changes, added docs for 'ic' module
-
-- PC/make_nt.in: deleted
-
-- test_time.py, test_strftime.py: tweaks to catch %Z (which may return
-"")
-
-- test_rotor.py: print b -> print `b`
-
-- Tkinter.py: (tagOrId) -> (tagOrId,)
-
-- Tkinter.py: the Tk class now also has a configure() method and
-friends (they have been moved to the Misc class to accomplish this).
-
-- dict.get(key[, default]) returns dict[key] if it exists, or default
-if it doesn't.  The default defaults to None.  This is quicker for
-some applications than using either has_key() or try:...except
-KeyError:....
-
-- Tools/webchecker/: some small changes to webchecker.py; added
-websucker.py (a simple web site mirroring script).
-
-- Dictionary objects now have a get() method (also in UserDict.py).
-dict.get(key, default) returns dict[key] if it exists and default
-otherwise; default defaults to None.
-
-- Tools/scripts/logmerge.py: print the author, too.
-
-- Changes to import: support for "import a.b.c" is now built in.  See
-http://grail.cnri.reston.va.us/python/essays/packages.html
-for more info.  Most important deviations from "ni.py": __init__.py is
-executed in the package's namespace instead of as a submodule; and
-there's no support for "__" or "__domain__".  Note that "ni.py" is not
-changed to match this -- it is simply declared obsolete (while at the
-same time, it is documented...:-( ).
-Unfortunately, "ihooks.py" has not been upgraded (but see "knee.py"
-for an example implementation of hierarchical module import written in
-Python).
-
-- More changes to import: the site.py module is now imported by
-default when Python is initialized; use -S to disable it.  The site.py
-module extends the path with several more directories: site-packages
-inside the lib/python1.5/ directory, site-python in the lib/
-directory, and pathnames mentioned in *.pth files found in either of
-those directories.  See
-http://grail.cnri.reston.va.us/python/essays/packages.html
-for more info.
-
-- Changes to standard library subdirectory names: those subdirectories
-that are not packages have been renamed with a hypen in their name,
-e.g. lib-tk, lib-stdwin, plat-win, plat-linux2, plat-sunos5, dos-8x3.
-The test suite is now a package -- to run a test, you must now use
-"import test.test_foo".
-
-- A completely new re.py module is provided (thanks to Andrew
-Kuchling, Tim Peters and Jeffrey Ollie) which uses Philip Hazel's
-"pcre" re compiler and engine.  For a while, the "old" re.py (which
-was new in 1.5a3!) will be kept around as re1.py.  The "old" regex
-module and underlying parser and engine are still present -- while
-regex is now officially obsolete, it will probably take several major
-release cycles before it can be removed.
-
-- The posix module now has a strerror() function which translates an
-error code to a string.
-
-- The emacs.py module (which was long obsolete) has been removed.
-
-- The universal makefile Misc/Makefile.pre.in now features an
-"install" target.  By default, installed shared libraries go into
-$exec_prefix/lib/python$VERSION/site-packages/.
-
-- The install-sh script is installed with the other configuration
-specific files (in the config/ subdirectory).
-
-- It turns out whatsound.py and sndhdr.py were identical modules.
-Since there's also an imghdr.py file, I propose to make sndhdr.py the
-official one.  For compatibility, whatsound.py imports * from
-sndhdr.py.
-
-- Class objects have a new attribute, __module__, giving the name of
-the module in which they were declared.  This is useful for pickle and
-for printing the full name of a class exception.
-
-- Many extension modules no longer issue a fatal error when their
-initialization fails; the importing code now checks whether an error
-occurred during module initialization, and correctly propagates the
-exception to the import statement.
-
-- Most extension modules now raise class-based exceptions (except when
--X is used).
-
-- Subtle changes to PyEval_{Save,Restore}Thread(): always swap the
-thread state -- just don't manipulate the lock if it isn't there.
-
-- Fixed a bug in Python/getopt.c that made it do the wrong thing when
-an option was a single '-'.  Thanks to Andrew Kuchling.
-
-- New module mimetypes.py will guess a MIME type from a filename's
-extension.
-
-- Windows: the DLL version is now settable via a resource rather than
-being hardcoded.  This can be used for "branding" a binary Python
-distribution.
-
-- urllib.py is now threadsafe -- it now uses re instead of regex, and
-sys.exc_info() instead of sys.exc_{type,value}.
-
-- Many other library modules that used to use
-sys.exc_{type,value,traceback} are now more thread-safe by virtue of
-using sys.exc_info().
-
-- The functions in popen2 have an optional buffer size parameter.
-Also, the command argument can now be either a string (passed to the
-shell) or a list of arguments (passed directly to execv).
-
-- Alas, the thread support for _tkinter released with 1.5a3 didn't
-work.  It's been rewritten.  The bad news is that it now requires a
-modified version of a file in the standard Tcl distribution, which you
-must compile with a -I option pointing to the standard Tcl source
-tree.  For this reason, the thread support is disabled by default.
-
-- The errno extension module adds two tables: errorcode maps errno
-numbers to errno names (e.g. EINTR), and errorstr maps them to
-message strings.  (The latter is redundant because the new call
-posix.strerror() now does the same, but alla...)  (Marc-Andre Lemburg)
-
-- The readline extension module now provides some interfaces to
-internal readline routines that make it possible to write a completer
-in Python.  An example completer, rlcompleter.py, is provided.
-
-	When completing a simple identifier, it completes keywords,
-	built-ins and globals in __main__; when completing
-	NAME.NAME..., it evaluates (!) the expression up to the last
-	dot and completes its attributes.
-
-	It's very cool to do "import string" type "string.", hit the
-	completion key (twice), and see the list of names defined by
-	the string module!
-
-	Tip: to use the tab key as the completion key, call
-
-	    readline.parse_and_bind("tab: complete")
-
-- The traceback.py module has a new function tb_lineno() by Marc-Andre
-Lemburg which extracts the line number from the linenumber table in
-the code object.  Apparently the traceback object doesn't contains the
-right linenumber when -O is used.  Rather than guessing whether -O is
-on or off, the module itself uses tb_lineno() unconditionally.
-
-- Fixed Demo/tkinter/matt/canvas-moving-or-creating.py: change bind()
-to tag_bind() so it works again.
-
-- The pystone script is now a standard library module.  Example use:
-"import test.pystone; test.pystone.main()".
-
-- The import of the readline module in interactive mode is now also
-attempted when -i is specified.  (Yes, I know, giving in to Marc-Andre
-Lemburg, who asked for this. :-)
-
-- rfc822.py: Entirely rewritten parseaddr() function by Sjoerd
-Mullender, to be closer to the standard.  This fixes the getaddr()
-method.  Unfortunately, getaddrlist() is as broken as ever, since it
-splits on commas without regard for RFC 822 quoting conventions.
-
-- pprint.py: correctly emit trailing "," in singleton tuples.
-
-- _tkinter.c: export names for its type objects, TkappType and
-TkttType.
-
-- pickle.py: use __module__ when defined; fix a particularly hard to
-reproduce bug that confuses the memo when temporary objects are
-returned by custom pickling interfaces; and a semantic change: when
-unpickling the instance variables of an instance, use
-inst.__dict__.update(value) instead of a for loop with setattr() over
-the value.keys().  This is more consistent (the pickling doesn't use
-getattr() either but pickles inst.__dict__) and avoids problems with
-instances that have a __setattr__ hook.  But it *is* a semantic change
-(because the setattr hook is no longer used).  So beware!
-
-- config.h is now installed (at last) in
-$exec_prefix/include/python1.5/.  For most sites, this means that it
-is actually in $prefix/include/python1.5/, with all the other Python
-include files, since $prefix and $exec_prefix are the same by
-default.
-
-- The imp module now supports parts of the functionality to implement
-import of hierarchical module names.  It now supports find_module()
-and load_module() for all types of modules.  Docstrings have been
-added for those functions in the built-in imp module that are still
-relevant (some old interfaces are obsolete).  For a sample
-implementation of hierarchical module import in Python, see the new
-library module knee.py.
-
-- The % operator on string objects now allows arbitrary nested parens
-in a %(...)X style format.  (Brad Howes)
-
-- Reverse the order in which Setup and Setup.local are passed to the
-makesetup script.  This allows variable definitions in Setup.local to
-override definitions in Setup.  (But you'll still have to edit Setup
-if you want to disable modules that are enabled by default, or if such
-modules need non-standard options.)
-
-- Added PyImport_ImportModuleEx(name, globals, locals, fromlist); this
-is like PyImport_ImporModule(name) but receives the globals and locals
-dict and the fromlist arguments as well.  (The name is a char*; the
-others are PyObject*s).
-
-- The 'p' format in the struct extension module alloded to above is
-new in 1.5a4.
-
-- The types.py module now uses try-except in a few places to make it
-more likely that it can be imported in restricted mode.  Some type
-names are undefined in that case, e.g. CodeType (inaccessible),
-FileType (not always accessible), and TracebackType and FrameType
-(inaccessible).
-
-- In urllib.py: added separate administration of temporary files
-created y URLopener.retrieve() so cleanup() can properly remove them.
-The old code removed everything in tempcache which was a bad idea if
-the user had passed a non-temp file into it.  Also, in basejoin(),
-interpret relative paths starting in "../".  This is necessary if the
-server uses symbolic links.
-
-- The Windows build procedure and project files are now based on
-Microsoft Visual C++ 5.x.  The build now takes place in the PCbuild
-directory.  It is much more robust, and properly builds separate Debug
-and Release versions.  (The installer will be added shortly.)
-
-- Added casts and changed some return types in regexpr.c to avoid
-compiler warnings or errors on some platforms.
-
-- The AIX build tools for shared libraries now supports VPATH.  (Donn
-Cave)
-
-- By default, disable the "portable" multimedia modules audioop,
-imageop, and rgbimg, since they don't work on 64-bit platforms.
-
-- Fixed a nasty bug in cStringIO.c when code was actually using the
-close() method (the destructors would try to free certain fields a
-second time).
-
-- For those who think they need it, there's a "user.py" module.  This
-is *not* imported by default, but can be imported to run user-specific
-setup commands, ~/.pythonrc.py.
-
-- Various speedups suggested by Fredrik Lundh, Marc-Andre Lemburg,
-Vladimir Marangozov, and others.
-
-- Added os.altsep; this is '/' on DOS/Windows, and None on systems
-with a sane filename syntax.
-
-- os.py: Write out the dynamic OS choice, to avoid exec statements.
-Adding support for a new OS is now a bit more work, but I bet that
-'dos' or 'nt' will cover most situations...
-
-- The obsolete exception AccessError is now really gone.
-
-- Tools/faqwiz/: New installation instructions show how to maintain
-multiple FAQs.  Removed bootstrap script from end of faqwiz.py module.
-Added instructions to bootstrap script, too.  Version bumped to 0.8.1.
-Added ... feature suggested by Skip Montanaro.  Added
-leading text for Roulette, default to 'Hit Reload ...'.  Fix typo in
-default SRCDIR.
-
-- Documentation for the relatively new modules "keyword" and "symbol"
-has been added (to the end of the section on the parser extension
-module).
-
-- In module bisect.py, but functions have two optional argument 'lo'
-and 'hi' which allow you to specify a subsequence of the array to
-operate on.
-
-- In ftplib.py, changed most methods to return their status (even when
-it is always "200 OK") rather than swallowing it.
-
-- main() now calls setlocale(LC_ALL, ""), if setlocale() and
- are defined.
-
-- Changes to configure.in, the configure script, and both
-Makefile.pre.in files, to support SGI's SGI_ABI platform selection
-environment variable.
-
-
-======================================================================
-
-
-From 1.4 to 1.5a3
-=================
-
-Security
---------
-
-- If you are using the setuid script C wrapper (Misc/setuid-prog.c),
-please use the new version.  The old version has a huge security leak.
-
-Miscellaneous
--------------
-
-- Because of various (small) incompatible changes in the Python
-bytecode interpreter, the magic number for .pyc files has changed
-again.
-
-- The default module search path is now much saner.  Both on Unix and
-Windows, it is essentially derived from the path to the executable
-(which can be overridden by setting the environment variable
-$PYTHONHOME).  The value of $PYTHONPATH on Windows is now inserted in
-front of the default path, like in Unix (instead of overriding the
-default path).  On Windows, the directory containing the executable is
-added to the end of the path.
-
-- A new version of python-mode.el for Emacs has been included.  Also,
-a new file ccpy-style.el has been added to configure Emacs cc-mode for
-the preferred style in Python C sources.
-
-- On Unix, when using sys.argv[0] to insert the script directory in
-front of sys.path, expand a symbolic link.  You can now install a
-program in a private directory and have a symbolic link to it in a
-public bin directory, and it will put the private directory in the
-module search path.  Note that the symlink is expanded in sys.path[0]
-but not in sys.argv[0], so you can still tell the name by which you
-were invoked.
-
-- It is now recommended to use ``#!/usr/bin/env python'' instead of
-``#!/usr/local/bin/python'' at the start of executable scripts, except
-for CGI scripts.  It has been determined that the use of /usr/bin/env
-is more portable than that of /usr/local/bin/python -- scripts almost
-never have to be edited when the Python interpreter lives in a
-non-standard place.  Note that this doesn't work for CGI scripts since
-the python executable often doesn't live in the HTTP server's default
-search path.
-
-- The silly -s command line option and the corresponding
-PYTHONSUPPRESS environment variable (and the Py_SuppressPrint global
-flag in the Python/C API) are gone.
-
-- Most problems on 64-bit platforms should now be fixed.  Andrew
-Kuchling helped.  Some uncommon extension modules are still not
-clean (image and audio ops?).
-
-- Fixed a bug where multiple anonymous tuple arguments would be mixed up
-when using the debugger or profiler (reported by Just van Rossum).
-The simplest example is ``def f((a,b),(c,d)): print a,b,c,d''; this
-would print the wrong value when run under the debugger or profiler.
-
-- The hacks that the dictionary implementation used to speed up
-repeated lookups of the same C string were removed; these were a
-source of subtle problems and don't seem to serve much of a purpose
-any longer.
-
-- All traces of support for the long dead access statement have been
-removed from the sources.
-
-- Plugged the two-byte memory leak in the tokenizer when reading an
-interactive EOF.
-
-- There's a -O option to the interpreter that removes SET_LINENO
-instructions and assert statements (see below); it uses and produces
-.pyo files instead of .pyc files.  The speedup is only a few percent
-in most cases.  The line numbers are still available in the .pyo file,
-as a separate table (which is also available in .pyc files).  However,
-the removal of the SET_LINENO instructions means that the debugger
-(pdb) can't set breakpoints on lines in -O mode.  The traceback module
-contains a function to extract a line number from the code object
-referenced in a traceback object.  In the future it should be possible
-to write external bytecode optimizers that create better optimized
-.pyo files, and there should be more control over optimization;
-consider the -O option a "teaser".  Without -O, the assert statement
-actually generates code that first checks __debug__; if this variable
-is false, the assertion is not checked.  __debug__ is a built-in
-variable whose value is initialized to track the -O flag (it's true
-iff -O is not specified).  With -O, no code is generated for assert
-statements, nor for code of the form ``if __debug__: ''.
-Sorry, no further constant folding happens.
-
-
-Performance
------------
-
-- It's much faster (almost twice for pystone.py -- see
-Tools/scripts).  See the entry on string interning below.
-
-- Some speedup by using separate free lists for method objects (both
-the C and the Python variety) and for floating point numbers.
-
-- Big speedup by allocating frame objects with a single malloc() call.
-The Python/C API for frames is changed (you shouldn't be using this
-anyway).
-
-- Significant speedup by inlining some common opcodes for common operand 
-types (e.g.  i+i, i-i, and list[i]).  Fredrik Lundh.
-
-- Small speedup by reordering the method tables of some common
-objects (e.g. list.append is now first).
-
-- Big optimization to the read() method of file objects.  A read()
-without arguments now attempts to use fstat to allocate a buffer of
-the right size; for pipes and sockets, it will fall back to doubling
-the buffer size.  While that the improvement is real on all systems,
-it is most dramatic on Windows.
-
-
-Documentation
--------------
-
-- Many new pieces of library documentation were contributed, mostly by
-Andrew Kuchling.  Even cmath is now documented!  There's also a
-chapter of the library manual, "libundoc.tex", which provides a
-listing of all undocumented modules, plus their status (e.g. internal,
-obsolete, or in need of documentation).  Also contributions by Sue
-Williams, Skip Montanaro, and some module authors who succumbed to
-pressure to document their own contributed modules :-).  Note that
-printing the documentation now kills fewer trees -- the margins have
-been reduced.
-
-- I have started documenting the Python/C API. Unfortunately this project 
-hasn't been completed yet.  It will be complete before the final release of 
-Python 1.5, though.  At the moment, it's better to read the LaTeX source 
-than to attempt to run it through LaTeX and print the resulting dvi file.
-
-- The posix module (and hence os.py) now has doc strings!  Thanks to Neil 
-Schemenauer.  I received a few other contributions of doc strings.  In most 
-other places, doc strings are still wishful thinking...
-
-
-Language changes
-----------------
-
-- Private variables with leading double underscore are now a permanent 
-feature of the language.  (These were experimental in release 1.4.  I have 
-favorable experience using them; I can't label them "experimental" 
-forever.)
-
-- There's new string literal syntax for "raw strings".  Prefixing a string 
-literal with the letter r (or R) disables all escape processing in the 
-string; for example, r'\n' is a two-character string consisting of a 
-backslash followed by the letter n.  This combines with all forms of string 
-quotes; it is actually useful for triple quoted doc strings which might 
-contain references to \n or \t.  An embedded quote prefixed with a 
-backslash does not terminate the string, but the backslash is still 
-included in the string; for example, r'\'' is a two-character string 
-consisting of a backslash and a quote.  (Raw strings are also 
-affectionately known as Robin strings, after their inventor, Robin 
-Friedrich.)
-
-- There's a simple assert statement, and a new exception
-AssertionError.  For example, ``assert foo > 0'' is equivalent to ``if
-not foo > 0: raise AssertionError''.  Sorry, the text of the asserted
-condition is not available; it would be too complicated to generate
-code for this (since the code is generated from a parse tree).
-However, the text is displayed as part of the traceback!
-
-- The raise statement has a new feature: when using "raise SomeClass,
-somevalue" where somevalue is not an instance of SomeClass, it
-instantiates SomeClass(somevalue).  In 1.5a4, if somevalue is an
-instance of a *derived* class of SomeClass, the exception class raised
-is set to somevalue.__class__, and SomeClass is ignored after that.
-
-- Duplicate keyword arguments are now detected at compile time;
-f(a=1,a=2) is now a syntax error.
-
-
-Changes to builtin features
----------------------------
-
-- There's a new exception FloatingPointError (used only by Lee Busby's
-patches to catch floating point exceptions, at the moment).
-
-- The obsolete exception ConflictError (presumably used by the long
-obsolete access statement) has been deleted.
-
-- There's a new function sys.exc_info() which returns the tuple 
-(sys.exc_type, sys.exc_value, sys.exc_traceback) in a thread-safe way.
-
-- There's a new variable sys.executable, pointing to the executable file 
-for the Python interpreter.
-
-- The sort() methods for lists no longer uses the C library qsort(); I
-wrote my own quicksort implementation, with lots of help (in the form
-of a kind of competition) from Tim Peters.  This solves a bug in
-dictionary comparisons on some Solaris versions when Python is built
-with threads, and makes sorting lists even faster.
-
-- The semantics of comparing two dictionaries have changed, to make
-comparison of unequal dictionaries faster.  A shorter dictionary is
-always considered smaller than a larger dictionary.  For dictionaries
-of the same size, the smallest differing element determines the
-outcome (which yields the same results as before in this case, without
-explicit sorting).  Thanks to Aaron Watters for suggesting something
-like this.
-
-- The semantics of try-except have changed subtly so that calling a
-function in an exception handler that itself raises and catches an
-exception no longer overwrites the sys.exc_* variables.  This also
-alleviates the problem that objects referenced in a stack frame that
-caught an exception are kept alive until another exception is caught
--- the sys.exc_* variables are restored to their previous value when
-returning from a function that caught an exception.
-
-- There's a new "buffer" interface.  Certain objects (e.g. strings and
-arrays) now support the "buffer" protocol.  Buffer objects are acceptable 
-whenever formerly a string was required for a write operation; mutable 
-buffer objects can be the target of a read operation using the call
-f.readinto(buffer).  A cool feature is that regular expression matching now 
-also work on array objects.  Contribution by Jack Jansen.  (Needs 
-documentation.)
-
-- String interning: dictionary lookups are faster when the lookup
-string object is the same object as the key in the dictionary, not
-just a string with the same value.  This is done by having a pool of
-"interned" strings.  Most names generated by the interpreter are now
-automatically interned, and there's a new built-in function intern(s)
-that returns the interned version of a string.  Interned strings are
-not a different object type, and interning is totally optional, but by
-interning most keys a speedup of about 15% was obtained for the
-pystone benchmark.
-
-- Dictionary objects have several new methods; clear() and copy() have
-the obvious semantics, while update(d) merges the contents of another
-dictionary d into this one, overriding existing keys.  The dictionary
-implementation file is now called dictobject.c rather than the
-confusing mappingobject.c.
-
-- The intrinsic function dir() is much smarter; it looks in __dict__,
-__members__ and __methods__.
-
-- The intrinsic functions int(), long() and float() can now take a
-string argument and then do the same thing as string.atoi(),
-string.atol(), and string.atof().  No second 'base' argument is
-allowed, and complex() does not take a string (nobody cared enough).
-
-- When a module is deleted, its globals are now deleted in two phases.
-In the first phase, all variables whose name begins with exactly one
-underscore are replaced by None; in the second phase, all variables
-are deleted.  This makes it possible to have global objects whose
-destructors depend on other globals.  The deletion order within each
-phase is still random.
-
-- It is no longer an error for a function to be called without a
-global variable __builtins__ -- an empty directory will be provided
-by default.
-
-- Guido's corollary to the "Don Beaudry hook": it is now possible to
-do metaprogramming by using an instance as a base class.  Not for the
-faint of heart; and undocumented as yet, but basically if a base class
-is an instance, its class will be instantiated to create the new
-class.  Jim Fulton will love it -- it also works with instances of his
-"extension classes", since it is triggered by the presence of a
-__class__ attribute on the purported base class.  See
-Demo/metaclasses/index.html for an explanation and see that directory
-for examples.
-
-- Another change is that the Don Beaudry hook is now invoked when
-*any* base class is special.  (Up to 1.5a3, the *last* special base
-class is used; in 1.5a4, the more rational choice of the *first*
-special base class is used.)
-
-- New optional parameter to the readlines() method of file objects.
-This indicates the number of bytes to read (the actual number of bytes
-read will be somewhat larger due to buffering reading until the end of
-the line).  Some optimizations have also been made to speed it up (but
-not as much as read()).
-
-- Complex numbers no longer have the ".conj" pseudo attribute; use
-z.conjugate() instead, or complex(z.real, -z.imag).  Complex numbers
-now *do* support the __members__ and __methods__ special attributes.
-
-- The complex() function now looks for a __complex__() method on class
-instances before giving up.
-
-- Long integers now support arbitrary shift counts, so you can now
-write 1L<<1000000, memory permitting.  (Python 1.4 reports "outrageous
-shift count for this.)
-
-- The hex() and oct() functions have been changed so that for regular
-integers, they never emit a minus sign.  For example, on a 32-bit
-machine, oct(-1) now returns '037777777777' and hex(-1) returns
-'0xffffffff'.  While this may seem inconsistent, it is much more
-useful.  (For long integers, a minus sign is used as before, to fit
-the result in memory :-)
-
-- The hash() function computes better hashes for several data types,
-including strings, floating point numbers, and complex numbers.
-
-
-New extension modules
----------------------
-
-- New extension modules cStringIO.c and cPickle.c, written by Jim
-Fulton and other folks at Digital Creations.  These are much more
-efficient than their Python counterparts StringIO.py and pickle.py,
-but don't support subclassing.  cPickle.c clocks up to 1000 times
-faster than pickle.py; cStringIO.c's improvement is less dramatic but
-still significant.
-
-- New extension module zlibmodule.c, interfacing to the free zlib
-library (gzip compatible compression).  There's also a module gzip.py
-which provides a higher level interface.  Written by Andrew Kuchling
-and Jeremy Hylton.
-
-- New module readline; see the "miscellaneous" section above.
-
-- New Unix extension module resource.c, by Jeremy Hylton, provides
-access to getrlimit(), getrusage(), setrusage(), getpagesize(), and
-related symbolic constants.
-
-- New extension puremodule.c, by Barry Warsaw, which interfaces to the
-Purify(TM) C API.  See also the file Misc/PURIFY.README.  It is also
-possible to enable Purify by simply setting the PURIFY Makefile
-variable in the Modules/Setup file.
-
-
-Changes in extension modules
-----------------------------
-
-- The struct extension module has several new features to control byte
-order and word size.  It supports reading and writing IEEE floats even
-on platforms where this is not the native format.  It uses uppercase
-format codes for unsigned integers of various sizes (always using
-Python long ints for 'I' and 'L'), 's' with a size prefix for strings,
-and 'p' for "Pascal strings" (with a leading length byte, included in
-the size; blame Hannu Krosing; new in 1.5a4).  A prefix '>' forces
-big-endian data and '<' forces little-endian data; these also select
-standard data sizes and disable automatic alignment (use pad bytes as
-needed).
-
-- The array module supports uppercase format codes for unsigned data
-formats (like the struct module).
-
-- The fcntl extension module now exports the needed symbolic
-constants.  (Formerly these were in FCNTL.py which was not available
-or correct for all platforms.)
-
-- The extension modules dbm, gdbm and bsddb now check that the
-database is still open before making any new calls.
-
-- The dbhash module is no more.  Use bsddb instead.  (There's a third
-party interface for the BSD 2.x code somewhere on the web; support for
-bsddb will be deprecated.)
-
-- The gdbm module now supports a sync() method.
-
-- The socket module now has some new functions: getprotobyname(), and
-the set {ntoh,hton}{s,l}().
-
-- Various modules now export their type object: socket.SocketType,
-array.ArrayType.
-
-- The socket module's accept() method now returns unknown addresses as
-a tuple rather than raising an exception.  (This can happen in
-promiscuous mode.)  Theres' also a new function getprotobyname().
-
-- The pthread support for the thread module now works on most platforms.
-
-- STDWIN is now officially obsolete.  Support for it will eventually
-be removed from the distribution.
-
-- The binascii extension module is now hopefully fully debugged.
-(XXX Oops -- Fredrik Lundh promised me a uuencode fix that I never
-received.)
-
-- audioop.c: added a ratecv() function; better handling of overflow in
-add().
-
-- posixmodule.c: now exports the O_* flags (O_APPEND etc.).  On
-Windows, also O_TEXT and O_BINARY.  The 'error' variable (the
-exception is raises) is renamed -- its string value is now "os.error",
-so newbies don't believe they have to import posix (or nt) to catch
-it when they see os.error reported as posix.error.  The execve()
-function now accepts any mapping object for the environment.
-
-- A new version of the al (audio library) module for SGI was
-contributed by Sjoerd Mullender.
-
-- The regex module has a new function get_syntax() which retrieves the
-syntax setting set by set_syntax().  The code was also sanitized,
-removing worries about unclean error handling.  See also below for its
-successor, re.py.
-
-- The "new" module (which creates new objects of various types) once
-again has a fully functioning new.function() method.  Dangerous as
-ever!  Also, new.code() has several new arguments.
-
-- A problem has been fixed in the rotor module: on systems with signed
-characters, rotor-encoded data was not portable when the key contained
-8-bit characters.  Also, setkey() now requires its argument rather
-than having broken code to default it.
-
-- The sys.builtin_module_names variable is now a tuple.  Another new
-variables in sys is sys.executable (the full path to the Python
-binary, if known).
-
-- The specs for time.strftime() have undergone some revisions.  It
-appears that not all format characters are supported in the same way
-on all platforms.  Rather than reimplement it, we note these
-differences in the documentation, and emphasize the shared set of
-features.  There's also a thorough test set (that occasionally finds
-problems in the C library implementation, e.g. on some Linuxes),
-thanks to Skip Montanaro.
-
-- The nis module seems broken when used with NIS+; unfortunately
-nobody knows how to fix it.  It should still work with old NIS.
-
-
-New library modules
--------------------
-
-- New (still experimental) Perl-style regular expression module,
-re.py, which uses a new interface for matching as well as a new
-syntax; the new interface avoids the thread-unsafety of the regex
-interface.  This comes with a helper extension reopmodule.c and vastly
-rewritten regexpr.c.  Most work on this was done by Jeffrey Ollie, Tim
-Peters, and Andrew Kuchling.  See the documentation libre.tex.  In
-1.5, the old regex module is still fully supported; in the future, it
-will become obsolete.
-
-- New module gzip.py; see zlib above.
-
-- New module keyword.py exports knowledge about Python's built-in
-keywords.  (New version by Ka-Ping Yee.)
-
-- New module pprint.py (with documentation) which supports
-pretty-printing of lists, tuples, & dictionaries recursively.  By Fred
-Drake.
-
-- New module code.py.  The function code.compile_command() can
-determine whether an interactively entered command is complete or not,
-distinguishing incomplete from invalid input.  (XXX Unfortunately,
-this seems broken at this moment, and I don't have the time to fix
-it.  It's probably better to add an explicit interface to the parser
-for this.)
-
-- There is now a library module xdrlib.py which can read and write the
-XDR data format as used by Sun RPC, for example.  It uses the struct
-module.
-
-
-Changes in library modules
---------------------------
-
-- Module codehack.py is now completely obsolete.
-
-- The pickle.py module has been updated to make it compatible with the
-new binary format that cPickle.c produces.  By default it produces the
-old all-ASCII format compatible with the old pickle.py, still much
-faster than pickle.py; it will read both formats automatically.  A few
-other updates have been made.
-
-- A new helper module, copy_reg.py, is provided to register extensions
-to the pickling code.
-
-- Revamped module tokenize.py is much more accurate and has an
-interface that makes it a breeze to write code to colorize Python
-source code.  Contributed by Ka-Ping Yee.
-
-- In ihooks.py, ModuleLoader.load_module() now closes the file under
-all circumstances.
-
-- The tempfile.py module has a new class, TemporaryFile, which creates
-an open temporary file that will be deleted automatically when
-closed.  This works on Windows and MacOS as well as on Unix.  (Jim
-Fulton.)
-
-- Changes to the cgi.py module: Most imports are now done at the
-top of the module, which provides a speedup when using ni (Jim
-Fulton).  The problem with file upload to a Windows platform is solved
-by using the new tempfile.TemporaryFile class; temporary files are now
-always opened in binary mode (Jim Fulton).  The cgi.escape() function
-now takes an optional flag argument that quotes '"' to '"'.  It
-is now possible to invoke cgi.py from a command line script, to test
-cgi scripts more easily outside an http server.  There's an optional
-limit to the size of uploads to POST (Skip Montanaro).  Added a
-'strict_parsing' option to all parsing functions (Jim Fulton).  The
-function parse_qs() now uses urllib.unquote() on the name as well as
-the value of fields (Clarence Gardner).  The FieldStorage class now
-has a __len__() method.
-
-- httplib.py: the socket object is no longer closed; all HTTP/1.*
-responses are now accepted; and it is now thread-safe (by not using
-the regex module).
-
-- BaseHTTPModule.py: treat all HTTP/1.* versions the same.
-
-- The popen2.py module is now rewritten using a class, which makes
-access to the standard error stream and the process id of the
-subprocess possible.
-
-- Added timezone support to the rfc822.py module, in the form of a
-getdate_tz() method and a parsedate_tz() function; also a mktime_tz().
-Also added recognition of some non-standard date formats, by Lars
-Wirzenius, and RFC 850 dates (Chris Lawrence).
-
-- mhlib.py: various enhancements, including almost compatible parsing
-of message sequence specifiers without invoking a subprocess.  Also
-added a createmessage() method by Lars Wirzenius.
-
-- The StringIO.StringIO class now supports readline(nbytes).  (Lars 
-Wirzenius.)  (Of course, you should be using cStringIO for performance.)
-
-- UserDict.py supports the new dictionary methods as well.
-
-- Improvements for whrandom.py by Tim Peters: use 32-bit arithmetic to
-speed it up, and replace 0 seed values by 1 to avoid degeneration.
-A bug was fixed in the test for invalid arguments.
-
-- Module ftplib.py: added support for parsing a .netrc file (Fred
-Drake).  Also added an ntransfercmd() method to the FTP class, which
-allows access to the expected size of a transfer when available, and a
-parse150() function to the module which parses the corresponding 150
-response.
-
-- urllib.py: the ftp cache is now limited to 10 entries.  Added
-quote_plus() and unquote_plus() functions which are like quote() and
-unquote() but also replace spaces with '+' or vice versa, for
-encoding/decoding CGI form arguments.  Catch all errors from the ftp
-module.  HTTP requests now add the Host: header line.  The proxy
-variable names are now mapped to lower case, for Windows.  The
-spliturl() function no longer erroneously throws away all data past
-the first newline.  The basejoin() function now intereprets "../"
-correctly.  I *believe* that the problems with "exception raised in
-__del__" under certain circumstances have been fixed (mostly by
-changes elsewher in the interpreter).
-
-- In urlparse.py, there is a cache for results in urlparse.urlparse();
-its size limit is set to 20.  Also, new URL schemes shttp, https, and
-snews are "supported".
-
-- shelve.py: use cPickle and cStringIO when available.  Also added
-a sync() method, which calls the database's sync() method if there is
-one.
-
-- The mimetools.py module now uses the available Python modules for
-decoding quoted-printable, uuencode and base64 formats, rather than
-creating a subprocess.
-
-- The python debugger (pdb.py, and its base class bdb.py) now support
-conditional breakpoints.  See the docs.
-
-- The modules base64.py, uu.py and quopri.py can now be used as simple
-command line utilities.
-
-- Various small fixes to the nntplib.py module that I can't bother to
-document in detail.
-
-- Sjoerd Mullender's mimify.py module now supports base64 encoding and 
-includes functions to handle the funny encoding you sometimes see in mail 
-headers.  It is now documented.
-
-- mailbox.py: Added BabylMailbox.  Improved the way the mailbox is
-gotten from the environment.
-
-- Many more modules now correctly open files in binary mode when this
-is necessary on non-Unix platforms.
-
-- The copying functions in the undocumented module shutil.py are
-smarter.
-
-- The Writer classes in the formatter.py module now have a flush()
-method.
-
-- The sgmllib.py module accepts hyphens and periods in the middle of
-attribute names.  While this is against the SGML standard, there is
-some HTML out there that uses this...
-
-- The interface for the Python bytecode disassembler module, dis.py,
-has been enhanced quite a bit.  There's now one main function,
-dis.dis(), which takes almost any kind of object (function, module,
-class, instance, method, code object) and disassembles it; without
-arguments it disassembles the last frame of the last traceback.  The
-other functions have changed slightly, too.
-
-- The imghdr.py module recognizes new image types: BMP, PNG.
-
-- The string.py module has a new function replace(str, old, new,
-[maxsplit]) which does substring replacements.  It is actually
-implemented in C in the strop module.  The functions [r]find() an
-[r]index() have an optional 4th argument indicating the end of the
-substring to search, alsoo implemented by their strop counterparts.
-(Remember, never import strop -- import string uses strop when
-available with zero overhead.)
-
-- The string.join() function now accepts any sequence argument, not
-just lists and tuples.
-
-- The string.maketrans() requires its first two arguments to be
-present.  The old version didn't require them, but there's not much
-point without them, and the documentation suggests that they are
-required, so we fixed the code to match the documentation.
-
-- The regsub.py module has a function clear_cache(), which clears its
-internal cache of compiled regular expressions.  Also, the cache now
-takes the current syntax setting into account.  (However, this module
-is now obsolete -- use the sub() or subn() functions or methods in the
-re module.)
-
-- The undocumented module Complex.py has been removed, now that Python
-has built-in complex numbers.  A similar module remains as
-Demo/classes/Complex.py, as an example.
-
-
-Changes to the build process
-----------------------------
-
-- The way GNU readline is configured is totally different.  The
---with-readline configure option is gone.  It is now an extension
-module, which may be loaded dynamically.  You must enable it (and
-specify the correct libraries to link with) in the Modules/Setup file.
-Importing the module installs some hooks which enable command line
-editing.  When the interpreter shell is invoked interactively, it
-attempts to import the readline module; when this fails, the default
-input mechanism is used.  The hook variables are PyOS_InputHook and
-PyOS_ReadlineFunctionPointer.  (Code contributed by Lee Busby, with
-ideas from William Magro.)
-
-- New build procedure: a single library, libpython1.5.a, is now built,
-which contains absolutely everything except for a one-line main()
-program (which calls Py_Main(argc, argv) to start the interpreter
-shell).  This makes life much simpler for applications that need to
-embed Python.  The serial number of the build is now included in the
-version string (sys.version).
-
-- As far as I can tell, neither gcc -Wall nor the Microsoft compiler
-emits a single warning any more when compiling Python.
-
-- A number of new Makefile variables have been added for special
-situations, e.g. LDLAST is appended to the link command.  These are
-used by editing the Makefile or passing them on the make command
-line.
-
-- A set of patches from Lee Busby has been integrated that make it
-possible to catch floating point exceptions.  Use the configure option
---with-fpectl to enable the patches; the extension modules fpectl and
-fpetest provide control to enable/disable and test the feature,
-respectively.
-
-- The support for shared libraries under AIX is now simpler and more
-robust.  Thanks to Vladimir Marangozov for revamping his own patches!
-
-- The Modules/makesetup script now reads a file Setup.local as well as
-a file Setup.  Most changes to the Setup script can be done by editing
-Setup.local instead, which makes it easier to carry a particular setup
-over from one release to the next.
-
-- The Modules/makesetup script now copies any "include" lines it
-encounters verbatim into the output Makefile.  It also recognizes .cxx
-and .cpp as C++ source files.
-
-- The configure script is smarter about C compiler options; e.g. with
-gcc it uses -O2 and -g when possible, and on some other platforms it
-uses -Olimit 1500 to avoid a warning from the optimizer about the main
-loop in ceval.c (which has more than 1000 basic blocks).
-
-- The configure script now detects whether malloc(0) returns a NULL
-pointer or a valid block (of length zero).  This avoids the nonsense
-of always adding one byte to all malloc() arguments on most platforms.
-
-- The configure script has a new option, --with-dec-threads, to enable
-DEC threads on DEC Alpha platforms.  Also, --with-threads is now an
-alias for --with-thread (this was the Most Common Typo in configure
-arguments).
-
-- Many changes in Doc/Makefile; amongst others, latex2html is now used
-to generate HTML from all latex documents.
-
-
-Change to the Python/C API
---------------------------
-
-- Because some interfaces have changed, the PYTHON_API macro has been
-bumped.  Most extensions built for the old API version will still run,
-but I can't guarantee this.  Python prints a warning message on
-version mismatches; it dumps core when the version mismatch causes a
-serious problem :-)
-
-- I've completed the Grand Renaming, with the help of Roger Masse and
-Barry Warsaw.  This makes reading or debugging the code much easier.
-Many other unrelated code reorganizations have also been carried out.
-The allobjects.h header file is gone; instead, you would have to
-include Python.h followed by rename2.h.  But you're better off running
-Tools/scripts/fixcid.py -s Misc/RENAME on your source, so you can omit
-the rename2.h; it will disappear in the next release.
-
-- Various and sundry small bugs in the "abstract" interfaces have been
-fixed.  Thanks to all the (involuntary) testers of the Python 1.4
-version!  Some new functions have been added, e.g. PySequence_List(o),
-equivalent to list(o) in Python.
-
-- New API functions PyLong_FromUnsignedLong() and
-PyLong_AsUnsignedLong().
-
-- The API functions in the file cgensupport.c are no longer
-supported.  This file has been moved to Modules and is only ever
-compiled when the SGI specific 'gl' module is built.
-
-- PyObject_Compare() can now raise an exception.  Check with
-PyErr_Occurred().  The comparison function in an object type may also
-raise an exception.
-
-- The slice interface uses an upper bound of INT_MAX when no explicit
-upper bound is given (e.x. for a[1:]).  It used to ask the object for
-its length and do the calculations.
-
-- Support for multiple independent interpreters.  See Doc/api.tex,
-functions Py_NewInterpreter() and Py_EndInterpreter().  Since the
-documentation is incomplete, also see the new Demo/pysvr example
-(which shows how to use these in a threaded application) and the
-source code.
-
-- There is now a Py_Finalize() function which "de-initializes"
-Python.  It is possible to completely restart the interpreter
-repeatedly by calling Py_Finalize() followed by Py_Initialize().  A
-change of functionality in Py_Initialize() means that it is now a
-fatal error to call it while the interpreter is already initialized.
-The old, half-hearted Py_Cleanup() routine is gone.  Use of Py_Exit()
-is deprecated (it is nothing more than Py_Finalize() followed by
-exit()).
-
-- There are no known memory leaks left.  While Py_Finalize() doesn't
-free *all* allocated memory (some of it is hard to track down),
-repeated calls to Py_Finalize() and Py_Initialize() do not create
-unaccessible heap blocks.
-
-- There is now explicit per-thread state.  (Inspired by, but not the
-same as, Greg Stein's free threading patches.)
-
-- There is now better support for threading C applications.  There are
-now explicit APIs to manipulate the interpreter lock.  Read the source
-or the Demo/pysvr example; the new functions are
-PyEval_{Acquire,Release}{Lock,Thread}().
-
-- The test macro DEBUG has changed to Py_DEBUG, to avoid interference
-with other libraries' DEBUG macros.  Likewise for any other test
-macros that didn't yet start with Py_.
-
-- New wrappers around malloc() and friends: Py_Malloc() etc. call
-malloc() and call PyErr_NoMemory() when it fails; PyMem_Malloc() call
-just malloc().  Use of these wrappers could be essential if multiple
-memory allocators exist (e.g. when using certain DLL setups under
-Windows).  (Idea by Jim Fulton.)
-
-- New C API PyImport_Import() which uses whatever __import__() hook
-that is installed for the current execution environment.  By Jim
-Fulton.
-
-- It is now possible for an extension module's init function to fail
-non-fatally, by calling one of the PyErr_* functions and returning.
-
-- The PyInt_AS_LONG() and PyFloat_AS_DOUBLE() macros now cast their
-argument to the proper type, like the similar PyString macros already
-did.  (Suggestion by Marc-Andre Lemburg.)  Similar for PyList_GET_SIZE
-and PyList_GET_ITEM.
-
-- Some of the Py_Get* function, like Py_GetVersion() (but not yet
-Py_GetPath()) are now declared as returning a const char *.  (More
-should follow.)
-
-- Changed the run-time library to check for exceptions after object
-comparisons.  PyObject_Compare() can now return an exception; use
-PyErr_Occurred() to check (there is *no* special return value).
-
-- PyFile_WriteString() and Py_Flushline() now return error indicators
-instead of clearing exceptions.  This fixes an obscure bug where using
-these would clear a pending exception, discovered by Just van Rossum.
-
-- There's a new function, PyArg_ParseTupleAndKeywords(), which parses
-an argument list including keyword arguments.  Contributed by Geoff
-Philbrick.
-
-- PyArg_GetInt() is gone.
-
-- It's no longer necessary to include graminit.h when calling one of
-the extended parser API functions.  The three public grammar start
-symbols are now in Python.h as Py_single_input, Py_file_input, and
-Py_eval_input.
-
-- The CObject interface has a new function,
-PyCObject_Import(module, name).  It calls PyCObject_AsVoidPtr()
-on the object referenced by "module.name".
-
-
-Tkinter
--------
-
-- On popular demand, _tkinter once again installs a hook for readline
-that processes certain Tk events while waiting for the user to type
-(using PyOS_InputHook).
-
-- A patch by Craig McPheeters plugs the most obnoxious memory leaks,
-caused by command definitions referencing widget objects beyond their
-lifetime.
-
-- New standard dialog modules: tkColorChooser.py, tkCommonDialog.py,
-tkMessageBox.py, tkFileDialog.py, tkSimpleDialog.py These interface
-with the new Tk dialog scripts, and provide more "native platform"
-style file selection dialog boxes on some platforms.  Contributed by
-Fredrik Lundh.
-
-- Tkinter.py: when the first Tk object is destroyed, it sets the
-hiddel global _default_root to None, so that when another Tk object is
-created it becomes the new default root.  Other miscellaneous
-changes and fixes.
-
-- The Image class now has a configure method.
-
-- Added a bunch of new winfo options to Tkinter.py; we should now be
-up to date with Tk 4.2.  The new winfo options supported are:
-mananger, pointerx, pointerxy, pointery, server, viewable, visualid,
-visualsavailable.
-
-- The broken bind() method on Canvas objects defined in the Canvas.py
-module has been fixed.  The CanvasItem and Group classes now also have
-an unbind() method.
-
-- The problem with Tkinter.py falling back to trying to import
-"tkinter" when "_tkinter" is not found has been fixed -- it no longer
-tries "tkinter", ever.  This makes diagnosing the problem "_tkinter
-not configured" much easier and will hopefully reduce the newsgroup
-traffic on this topic.
-
-- The ScrolledText module once again supports the 'cnf' parameter, to
-be compatible with the examples in Mark Lutz' book (I know, I know,
-too late...)
-
-- The _tkinter.c extension module has been revamped.  It now support
-Tk versions 4.1 through 8.0; support for 4.0 has been dropped.  It
-works well under Windows and Mac (with the latest Tk ports to those
-platforms).  It also supports threading -- it is safe for one
-(Python-created) thread to be blocked in _tkinter.mainloop() while
-other threads modify widgets.  To make the changes visible, those
-threads must use update_idletasks()method.  (The patch for threading
-in 1.5a3 was broken; in 1.5a4, it is back in a different version,
-which requires access to the Tcl sources to get it to work -- hence it
-is disabled by default.)
-
-- A bug in _tkinter.c has been fixed, where Split() with a string
-containing an unmatched '"' could cause an exception or core dump.
-
-- Unfortunately, on Windows and Mac, Tk 8.0 no longer supports
-CreateFileHandler, so _tkinter.createfilehandler is not available on
-those platforms when using Tk 8.0 or later.  I will have to rethink
-how to interface with Tcl's lower-level event mechanism, or with its
-channels (which are like Python's file-like objects).  Jack Jansen has
-provided a fix for the Mac, so createfilehandler *is* actually
-supported there; maybe I can adapt his fix for Windows.
-
-
-Tools and Demos
----------------
-
-- A new regression test suite is provided, which tests most of the
-standard and built-in modules.  The regression test is run by invoking
-the script Lib/test/regrtest.py.  Barry Warsaw wrote the test harnass;
-he and Roger Masse contributed most of the new tests.
-
-- New tool: faqwiz -- the CGI script that is used to maintain the
-Python FAQ (http://grail.cnri.reston.va.us/cgi-bin/faqw.py).  In
-Tools/faqwiz.
-
-- New tool: webchecker -- a simple extensible web robot that, when
-aimed at a web server, checks that server for dead links.  Available
-are a command line utility as well as a Tkinter based GUI version.  In
-Tools/webchecker.  A simplified version of this program is dissected
-in my article in O'Reilly's WWW Journal, the issue on Scripting
-Languages (Vol 2, No 2); Scripting the Web with Python (pp 97-120).
-Includes a parser for robots.txt files by Skip Montanaro.
-
-- New small tools: cvsfiles.py (prints a list of all files under CVS
-n a particular directory tree), treesync.py (a rather Guido-specific
-script to synchronize two source trees, one on Windows NT, the other
-one on Unix under CVS but accessible from the NT box), and logmerge.py
-(sort a collection of RCS or CVS logs by date).  In Tools/scripts.
-
-- The freeze script now also works under Windows (NT).  Another
-feature allows the -p option to be pointed at the Python source tree
-instead of the installation prefix.  This was loosely based on part of
-xfreeze by Sam Rushing and Bill Tutt.
-
-- New examples (Demo/extend) that show how to use the generic
-extension makefile (Misc/Makefile.pre.in).
-
-- Tools/scripts/h2py.py now supports C++ comments.
-
-- Tools/scripts/pystone.py script is upgraded to version 1.1; there
-was a bug in version 1.0 (distributed with Python 1.4) that leaked
-memory.  Also, in 1.1, the LOOPS variable is incremented to 10000.
-
-- Demo/classes/Rat.py completely rewritten by Sjoerd Mullender.
-
-
-Windows (NT and 95)
--------------------
-
-- New project files for Developer Studio (Visual C++) 5.0 for Windows
-NT (the old VC++ 4.2 Makefile is also still supported, but will
-eventually be withdrawn due to its bulkiness).
-
-- See the note on the new module search path in the "Miscellaneous" section 
-above.
-
-- Support for Win32s (the 32-bit Windows API under Windows 3.1) is
-basically withdrawn.  If it still works for you, you're lucky.
-
-- There's a new extension module, msvcrt.c, which provides various 
-low-level operations defined in the Microsoft Visual C++ Runtime Library.  
-These include locking(), setmode(), get_osfhandle(), set_osfhandle(), and 
-console I/O functions like kbhit(), getch() and putch().
-
-- The -u option not only sets the standard I/O streams to unbuffered
-status, but also sets them in binary mode.  (This can also be done
-using msvcrt.setmode(), by the way.)
-
-- The, sys.prefix and sys.exec_prefix variables point to the directory 
-where Python is installed, or to the top of the source tree, if it was run 
-from there.
-
-- The various os.path modules (posixpath, ntpath, macpath) now support
-passing more than two arguments to the join() function, so
-os.path.join(a, b, c) is the same as os.path.join(a, os.path.join(b,
-c)).
-
-- The ntpath module (normally used as os.path) supports ~ to $HOME 
-expansion in expanduser().
-
-- The freeze tool now works on Windows.
-
-- See also the Tkinter category for a sad note on
-_tkinter.createfilehandler().
-
-- The truncate() method for file objects now works on Windows.
-
-- Py_Initialize() is no longer called when the DLL is loaded.  You
-must call it yourself.
-
-- The time module's clock() function now has good precision through
-the use of the Win32 API QueryPerformanceCounter().
-
-- Mark Hammond will release Python 1.5 versions of PythonWin and his
-other Windows specific code: the win32api extensions, COM/ActiveX
-support, and the MFC interface.
-
-
-Mac
----
-
-- As always, the Macintosh port will be done by Jack Jansen.  He will
-make a separate announcement for the Mac specific source code and the
-binary distribution(s) when these are ready.
-
-
-======================================================================
-
-
-=====================================
-==> Release 1.4 (October 25 1996) <==
-=====================================
-
-(Starting in reverse chronological order:)
-
-- Changed disclaimer notice.
-
-- Added SHELL=/bin/sh to Misc/Makefile.pre.in -- some Make versions
-default to the user's login shell.
-
-- In Lib/tkinter/Tkinter.py, removed bogus binding of  in Text
-widget, and bogus bspace() function.
-
-- In Lib/cgi.py, bumped __version__ to 2.0 and restored a truncated
-paragraph.
-
-- Fixed the NT Makefile (PC/vc40.mak) for VC 4.0 to set /MD for all
-subprojects, and to remove the (broken) experimental NumPy
-subprojects.
-
-- In Lib/py_compile.py, cast mtime to long() so it will work on Mac
-(where os.stat() returns mtimes as floats.)
-- Set self.rfile unbuffered (like self.wfile) in SocketServer.py, to
-fix POST in CGIHTTPServer.py.
-
-- Version 2.83 of Misc/python-mode.el for Emacs is included.
-
-- In Modules/regexmodule.c, fixed symcomp() to correctly handle a new
-group starting immediately after a group tag.
-
-- In Lib/SocketServer.py, changed the mode for rfile to unbuffered.
-
-- In Objects/stringobject.c, fixed the compare function to do the
-first char comparison in unsigned mode, for consistency with the way
-other characters are compared by memcmp().
-
-- In Lib/tkinter/Tkinter.py, fixed Scale.get() to support floats.
-
-- In Lib/urllib.py, fix another case where openedurl wasn't set.
-
-(XXX Sorry, the rest is in totally random order.  No time to fix it.)
-
-- SyntaxError exceptions detected during code generation
-(e.g. assignment to an expression) now include a line number.
-
-- Don't leave trailing / or \ in script directory inserted in front of
-sys.path.
-
-- Added a note to Tools/scripts/classfix.py abouts its historical
-importance.
-
-- Added Misc/Makefile.pre.in, a universal Makefile for extensions
-built outside the distribution.
-
-- Rewritten Misc/faq2html.py, by Ka-Ping Yee.
-
-- Install shared modules with mode 555 (needed for performance on some
-platforms).
-
-- Some changes to standard library modules to avoid calling append()
-with more than one argument -- while supported, this should be
-outlawed, and I don't want to set a bad example.
-
-- bdb.py (and hence pdb.py) supports calling run() with a code object
-instead of a code string.
-
-- Fixed an embarrassing bug cgi.py which prevented correct uploading
-of binary files from Netscape (which doesn't distinguish between
-binary and text files).  Also added dormant logging support, which
-makes it easier to debug the cgi module itself.
-
-- Added default writer to constructor of NullFormatter class.
-
-- Use binary mode for socket.makefile() calls in ftplib.py.
-
-- The ihooks module no longer "installs" itself upon import -- this
-was an experimental feature that helped ironing out some bugs but that
-slowed down code that imported it without the need to install it
-(e.g. the rexec module).  Also close the file in some cases and add
-the __file__ attribute to loaded modules.
-
-- The test program for mailbox.py is now more useful.
-
-- Added getparamnames() to Message class in mimetools.py -- it returns
-the names of parameters to the content-type header.
-
-- Fixed a typo in ni that broke the loop stripping "__." from names.
-
-- Fix sys.path[0] for scripts run via pdb.py's new main program.
-
-- profile.py can now also run a script, like pdb.
-
-- Fix a small bug in pyclbr -- don't add names starting with _ when
-emulating from ... import *.
-
-- Fixed a series of embarrassing typos in rexec's handling of standard
-I/O redirection.  Added some more "safe" built-in modules: cmath,
-errno, operator.
-
-- Fixed embarrassing typo in shelve.py.
-
-- Added SliceType and EllipsisType to types.py.
-
-- In urllib.py, added handling for error 301 (same as 302); added
-geturl() method to get the URL after redirection.
-
-- Fixed embarrassing typo in xdrlib.py.  Also fixed typo in Setup.in
-for _xdrmodule.c and removed redundant #include from _xdrmodule.c.
-
-- Fixed bsddbmodule.c to add binary mode indicator on platforms that
-have it.  This should make it working on Windows NT.
-
-- Changed last uses of #ifdef NT to #ifdef MS_WINDOWS or MS_WIN32,
-whatever applies.  Also rationalized some other tests for various MS
-platforms.
-
-- Added the sources for the NT installer script used for Python
-1.4beta3.  Not tested with this release, but better than nothing.
-
-- A compromise in pickle's defenses against Trojan horses: a
-user-defined function is now okay where a class is expected.  A
-built-in function is not okay, to prevent pickling something that
-will execute os.system("rm -f *") when unpickling.
-
-- dis.py will print the name of local variables referenced by local
-load/store/delete instructions.
-
-- Improved portability of SimpleHTTPServer module to non-Unix
-platform.
-
-- The thread.h interface adds an extra argument to down_sema().  This
-only affects other C code that uses thread.c; the Python thread module
-doesn't use semaphores (which aren't provided on all platforms where
-Python threads are supported).  Note: on NT, this change is not
-implemented.
-
-- Fixed some typos in abstract.h; corrected signature of
-PyNumber_Coerce, added PyMapping_DelItem.  Also fixed a bug in
-abstract.c's PyObject_CallMethod().
-
-- apply(classname, (), {}) now works even if the class has no
-__init__() method.
-
-- Implemented complex remainder and divmod() (these would dump core!).
-Conversion of complex numbers to int, long int or float now raises an
-exception, since there is no meaningful way to do it without losing
-information.
-
-- Fixed bug in built-in complex() function which gave the wrong result
-for two real arguments.
-
-- Change the hash algorithm for strings -- the multiplier is now
-1000003 instead of 3, which gives better spread for short strings.
-
-- New default path for Windows NT, the registry structure now supports
-default paths for different install packages.  (Mark Hammond -- the
-next PythonWin release will use this.)
-
-- Added more symbols to the python_nt.def file.
-
-- When using GNU readline, set rl_readline_name to "python".
-
-- The Ellipses built-in name has been renamed to Ellipsis -- this is
-the correct singular form.  Thanks to Ka-Ping Yee, who saved us from
-eternal embarrassment.
-
-- Bumped the PYTHON_API_VERSION to 1006, due to the Ellipses ->
-Ellipsis name change.
-
-- Updated the library reference manual.  Added documentation of
-restricted mode (rexec, Bastion) and the formatter module (for use
-with the htmllib module).  Fixed the documentation of htmllib
-(finally).
-
-- The reference manual is now maintained in FrameMaker.
-
-- Upgraded scripts Doc/partparse.py and Doc/texi2html.py.
-
-- Slight improvements to Doc/Makefile.
-
-- Added fcntl.lockf(). This should be used for Unix file locking
-instead of the posixfile module; lockf() is more portable.
-
-- The getopt module now supports long option names, thanks to Lars
-Wizenius.
-
-- Plenty of changes to Tkinter and Canvas, mostly due to Fred Drake
-and Nils Fischbeck.
-
-- Use more bits of time.time() in whrandom's default seed().
-
-- Performance hack for regex module's regs attribute.
-
-- Don't close already closed socket in socket module.
-
-- Correctly handle separators containing embedded nulls in
-strop.split, strop.find and strop.rfind.  Also added more detail to
-error message for strop.atoi and friends.
-
-- Moved fallback definition for hypot() to Python/hypot.c.
-
-- Added fallback definition for strdup, in Python/strdup.c.
-
-- Fixed some bugs where a function would return 0 to indicate an error
-where it should return -1.
-
-- Test for error returned by time.localtime(), and rationalized its MS
-tests.
-
-- Added Modules/Setup.local file, which is processed after Setup.
-
-- Corrected bug in toplevel Makefile.in -- execution of regen script
-would not use the right PATH and PYTHONPATH.
-
-- Various and sundry NeXT configuration changes (sigh).
-
-- Support systems where libreadline needs neither termcap nor curses.
-
-- Improved ld_so_aix script and python.exp file (for AIX).
-
-- More stringent test for working  in configure script.
-
-- Removed Demo/www subdirectory -- it was totally out of date.
-
-- Improved demos and docs for Fred Drake's parser module; fixed one
-typo in the module itself.
-
-
-=========================================
-==> Release 1.4beta3 (August 26 1996) <==
-=========================================
-
-
-(XXX This is less readable that it should.  I promise to restructure
-it for the final 1.4 release.)
-
-
-What's new in 1.4beta3 (since beta2)?
--------------------------------------
-
-- Name mangling to implement a simple form of class-private variables.
-A name of the form "__spam" can't easily be used outside the class.
-(This was added in 1.4beta3, but left out of the 1.4beta3 release
-message.)
-
-- In urllib.urlopen(): HTTP URLs containing user:passwd@host are now
-handled correctly when using a proxy server.
-
-- In ntpath.normpath(): don't truncate to 8+3 format.
-
-- In mimetools.choose_boundary(): don't die when getuid() or getpid()
-aren't defined.
-
-- Module urllib: some optimizations to (un)quoting.
-
-- New module MimeWriter for writing MIME documents.
-
-- More changes to formatter module.
-
-- The freeze script works once again and is much more robust (using
-sys.prefix etc.).  It also supports a -o option to specify an
-output directory.
-
-- New module whichdb recognizes dbm, gdbm and bsddb/dbhash files.
-
-- The Doc/Makefile targets have been reorganized somewhat to remove the 
-insistence on always generating PostScript.
-
-- The texinfo to html filter (Doc/texi2html.py) has been improved somewhat.
-
-- "errors.h" has been renamed to "pyerrors.h" to resolve a long-standing 
-name conflict on the Mac.
-
-- Linking a module compiled with a different setting for Py_TRACE_REFS now 
-generates a linker error rather than a core dump.
-
-- The cgi module has a new convenience function print_exception(), which 
-formats a python exception using HTML.  It also fixes a bug in the 
-compatibility code and adds a dubious feature which makes it possible to 
-have two query strings, one in the URL and one in the POST data.
-
-- A subtle change in the unpickling of class instances makes it possible 
-to unpickle in restricted execution mode, where the __dict__ attribute is 
-not available (but setattr() is).
-
-- Documentation for os.path.splitext() (== posixpath.splitext()) has been 
-cleared up.  It splits at the *last* dot.
-
-- posixfile locking is now also correctly supported on AIX.
-
-- The tempfile module once again honors an initial setting of tmpdir.  It 
-now works on Windows, too.
-
-- The traceback module has some new functions to extract, format and print 
-the active stack.
-
-- Some translation functions in the urllib module have been made a little 
-less sluggish.
-
-- The addtag_* methods for Canvas widgets in Tkinter as well as in the 
-separate Canvas class have been fixed so they actually do something 
-meaningful.
-
-- A tiny _test() function has been added to Tkinter.py.
-
-- A generic Makefile for dynamically loaded modules is provided in the Misc 
-subdirectory (Misc/gMakefile).
-
-- A new version of python-mode.el for Emacs is provided.  See
-http://www.python.org/ftp/emacs/pmdetails.html for details.  The
-separate file pyimenu.el is no longer needed, imenu support is folded
-into python-mode.el.
-
-- The configure script can finally correctly find the readline library in a 
-non-standard location.  The LDFLAGS variable is passed on the Makefiles 
-from the configure script.
-
-- Shared libraries are now installed as programs (i.e. with executable 
-permission).  This is required on HP-UX and won't hurt on other systems.
-
-- The objc.c module is no longer part of the distribution.  Objective-C 
-support may become available as contributed software on the ftp site.
-
-- The sybase module is no longer part of the distribution.  A much
-improved sybase module is available as contributed software from the
-ftp site.
-
-- _tkinter is now compatible with Tcl 7.5 / Tk 4.1 patch1 on Windows and 
-Mac (don't use unpatched Tcl/Tk!).  The default line in the Setup.in file 
-now links with Tcl 7.5 / Tk 4.1 rather than 7.4/4.0.
-
-- In Setup, you can now write "*shared*" instead of "*noconfig*", and you 
-can use *.so and *.sl as shared libraries.
-
-- Some more fidgeting for AIX shared libraries.
-
-- The mpz module is now compatible with GMP 2.x.  (Not tested by me.)
-(Note -- a complete replacement by Niels Mo"ller, called gpmodule, is
-available from the contrib directory on the ftp site.)
-
-- A warning is written to sys.stderr when a __del__ method raises an 
-exception (formerly, such exceptions were completely ignored).
-
-- The configure script now defines HAVE_OLD_CPP if the C preprocessor is 
-incapable of ANSI style token concatenation and stringification.
-
-- All source files (except a few platform specific modules) are once again 
-compatible with K&R C compilers as well as ANSI compilers.  In particular,
-ANSI-isms have been removed or made conditional in complexobject.c, 
-getargs.c and operator.c.
-
-- The abstract object API has three new functions, PyObject_DelItem, 
-PySequence_DelItem, and PySequence_DelSlice.
-
-- The operator module has new functions delitem and delslice, and the 
-functions "or" and "and" are renamed to "or_" and "and_" (since "or" and 
-"and" are reserved words).  ("__or__" and "__and__" are unchanged.)
-
-- The environment module is no longer supported; putenv() is now a function 
-in posixmodule (also under NT).
-
-- Error in filter(, "") has been fixed.
-
-- Unrecognized keyword arguments raise TypeError, not KeyError.
-
-- Better portability, fewer bugs and memory leaks, fewer compiler warnings, 
-some more documentation.
-
-- Bug in float power boundary case (0.0 to the negative integer power) 
-fixed.
-
-- The test of negative number to the float power has been moved from the 
-built-in pow() functin to floatobject.c (so complex numbers can yield the 
-correct result).
-
-- The bug introduced in beta2 where shared libraries loaded (using 
-dlopen()) from the current directory would fail, has been fixed.
-
-- Modules imported as shared libraries now also have a __file__ attribute, 
-giving the filename from which they were loaded.  The only modules without 
-a __file__ attribute now are built-in modules.
-
-- On the Mac, dynamically loaded modules can end in either ".slb" or 
-"..slb" where  is either "CFM68K" or "ppc".  The ".slb" 
-extension should only be used for "fat" binaries.
-
-- C API addition: marshal.c now supports 
-PyMarshal_WriteObjectToString(object).
-
-- C API addition: getargs.c now supports
-PyArg_ParseTupleAndKeywords(args, kwdict, format, kwnames, ...)
-to parse keyword arguments.
-
-- The PC versioning scheme (sys.winver) has changed once again.  the 
-version number is now "...", where the 
-first three s are the Python version (e.g. "1.4.0" for Python 1.4, 
-"1.4.1" for Python 1.4.1 -- the beta level is not included) and 
- is the four-digit PYTHON_API_VERSION (currently 1005).
-
-- h2py.py accepts whitespace before the # in CPP directives
-
-- On Solaris 2.5, it should now be possible to use either Posix threads or 
-Solaris threads (XXX: how do you select which is used???).  (Note: the 
-Python pthreads interface doesn't fully support semaphores yet -- anyone 
-care to fix this?)
-
-- Thread support should now work on AIX, using either DCE threads or 
-pthreads.
-
-- New file Demo/sockets/unicast.py
-
-- Working Mac port, with CFM68K support, with Tk 4.1 support (though not 
-both) (XXX)
-
-- New project setup for PC port, now compatible with PythonWin, with 
-_tkinter and NumPy support (XXX)
-
-- New module site.py (XXX)
-
-- New module xdrlib.py and optional support module _xdrmodule.c (XXX)
-
-- parser module adapted to new grammar, complete w/ Doc & Demo (XXX)
-
-- regen script fixed (XXX)
-
-- new machdep subdirectories Lib/{aix3,aix4,next3_3,freebsd2,linux2} (XXX)
-
-- testall now also tests math module (XXX)
-
-- string.atoi c.s. now raise an exception for an empty input string.
-
-- At last, it is no longer necessary to define HAVE_CONFIG_H in order to 
-have config.h included at various places.
-
-- Unrecognized keyword arguments now raise TypeError rather than KeyError.
-
-- The makesetup script recognizes files with extension .so or .sl as
-(shared) libraries.
-
-- 'access' is no longer a reserved word, and all code related to its 
-implementation is gone (or at least #ifdef'ed out).  This should make 
-Python a little speedier too!
-
-- Performance enhancements suggested by Sjoerd Mullender.  This includes 
-the introduction of two new optional function pointers in type object, 
-getattro and setattro, which are like getattr and setattr but take a 
-string object instead of a C string pointer.
-
-- New operations in string module: lstrip(s) and rstrip(s) strip whitespace 
-only on the left or only on the right, A new optional third argument to 
-split() specifies the maximum number of separators honored (so 
-splitfields(s, sep, n) returns a list of at most n+1 elements).  (Since 
-1.3, splitfields(s, None) is totally equivalent to split(s).)
-string.capwords() has an optional second argument specifying the 
-separator (which is passed to split()).
-
-- regsub.split() has the same addition as string.split().  regsub.splitx(s, 
-sep, maxsep) implements the functionality that was regsub.split(s, 1) in 
-1.4beta2 (return a list containing the delimiters as well as the words).
-
-- Final touch for AIX loading, rewritten Misc/AIX-NOTES.
-
-- In Modules/_tkinter.c, when using Tk 4.1 or higher, use className
-argument to _tkinter.create() to set Tcl's argv0 variable, so X
-resources use the right resource class again.
-
-- Add #undef fabs to Modules/mathmodule.c for macintosh.
-
-- Added some macro renames for AIX in Modules/operator.c.
-
-- Removed spurious 'E' from Doc/liberrno.tex.
-
-- Got rid of some cruft in Misc/ (dlMakefile, pyimenu.el); added new
-Misc/gMakefile and new version of Misc/python-mode.el.
-
-- Fixed typo in Lib/ntpath.py (islink has "return false" which gives a
-NameError).
-
-- Added missing "from types import *" to Lib/tkinter/Canvas.py.
-
-- Added hint about using default args for __init__ to pickle docs.
-
-- Corrected typo in Inclide/abstract.h: PySequence_Lenth ->
-PySequence_Length.
-
-- Some improvements to Doc/texi2html.py.
-
-- In Python/import.c, Cast unsigned char * in struct _frozen to char *
-in calls to rds_object().
-
-- In doc/ref4.tex, added note about scope of lambda bodies.
-
-What's new in 1.4beta2 (since beta1)?
--------------------------------------
-
-- Portability bug in the md5.h header solved.
-
-- The PC build procedure now really works, and sets sys.platform to a
-meaningful value (a few things were botched in beta 1).  Lib/dos_8x3
-is now a standard part of the distribution (alas).
-
-- More improvements to the installation procedure.  Typing "make install" 
-now inserts the version number in the pathnames of almost everything 
-installed, and creates the machine dependent modules (FCNTL.py etc.) if not 
-supplied by the distribution.  (XXX There's still a problem with the latter 
-because the "regen" script requires that Python is installed.  Some manual 
-intervention may still be required.) (This has been fixed in 1.4beta3.)
-
-- New modules: errno, operator (XXX).
-
-- Changes for use with Numerical Python: builtin function slice() and
-Ellipses object, and corresponding syntax:
-
-	x[lo:hi:stride]		==	x[slice(lo, hi, stride)]
-	x[a, ..., z]		==	x[(a, Ellipses, z)]
-
-- New documentation for errno and cgi modules.
-
-- The directory containing the script passed to the interpreter is
-inserted in from of sys.path; "." is no longer a default path
-component.
-
-- Optional third string argument to string.translate() specifies
-characters to delete.  New function string.maketrans() creates a
-translation table for translate() or for regex.compile().
-
-- Module posix (and hence module os under Unix) now supports putenv().
-Moreover, module os is enhanced so that if putenv() is supported,
-assignments to os.environ entries make the appropriate putenv() call.
-(XXX the putenv() implementation can leak a small amount of memory per
-call.)
-
-- pdb.py can now be invoked from the command line to debug a script:
-python pdb.py