diff options
Diffstat (limited to 'Mac/Contrib/BBPy/source/BBPy_main.c')
-rw-r--r-- | Mac/Contrib/BBPy/source/BBPy_main.c | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/Mac/Contrib/BBPy/source/BBPy_main.c b/Mac/Contrib/BBPy/source/BBPy_main.c deleted file mode 100644 index a96b271..0000000 --- a/Mac/Contrib/BBPy/source/BBPy_main.c +++ /dev/null @@ -1,104 +0,0 @@ -/* BBPython - A simple menu command to send the contents of a window to the Python interpreter - - copyright © 1996 Just van Rossum, Letterror: just@knoware.nl - - All Rights Reserved -*/ - -#include "BBPy.h" - -OSErr SendTextAsAE(ExternalCallbackBlock *callbacks, Ptr theText, long theSize, Str255 windowTitle) -{ - OSErr err; - AEDesc theEvent; - AEAddressDesc theTarget; - AppleEvent theReply; - AEDesc theTextDesc; - AEDesc theNameDesc; - OSType pythonSig = 'Pyth'; - FSSpec docSpec; - short itemHit; - long time; - EventRecord theDummyEvent; - - /* initialize AE descriptor for python's signature */ - err = AECreateDesc (typeApplSignature, &pythonSig, sizeof(OSType), &theTarget); - if(err != noErr) return err; - - /* initialize AE descriptor for the title of our window */ - err = AECreateDesc (typeChar, &windowTitle[1], windowTitle[0], &theNameDesc); - if(err != noErr) return err; - - /* initialize AE descriptor for the content of our window */ - err = AECreateDesc ('TEXT', theText, theSize, &theTextDesc); - if(err != noErr) return err; - - /* initialize AppleEvent */ - err = AECreateAppleEvent ('pyth', 'EXEC', &theTarget, kAutoGenerateReturnID, kAnyTransactionID, &theEvent); - if(err != noErr) return err; - - /* add the content of our window to the AppleEvent */ - err = AEPutParamDesc (&theEvent, keyDirectObject, &theTextDesc); - if(err != noErr) return err; - - /* add the title of our window to the AppleEvent */ - err = AEPutParamDesc (&theEvent, 'NAME', &theNameDesc); - if(err != noErr) return err; - - /* send the AppleEvent */ - err = AESend (&theEvent, &theReply, kAEWaitReply, kAEHighPriority, kNoTimeOut, NULL, NULL); - if(err == connectionInvalid) { - // launch PythonSlave.py - itemHit = Alert(128, NULL); - if(itemHit == 2) return noErr; /* user cancelled */ - - if( ! GetPythonSlaveSpec(&docSpec) ) - return noErr; /* user cancelled */ - - err = LaunchPythonSlave(&docSpec); - if(err != noErr) return err; - } else if(err != noErr) - return err; - - /* clean up */ - err = AEDisposeDesc (&theTarget); - if(err != noErr) return err; - - err = AEDisposeDesc (&theNameDesc); - if(err != noErr) return err; - - err = AEDisposeDesc (&theTextDesc); - if(err != noErr) return err; - - err = AEDisposeDesc (&theEvent); - if(err != noErr) return err; - - err = AEDisposeDesc (&theReply); - if(err != noErr) return err; - - /* everything is cool */ - return noErr; -} - -pascal void main(ExternalCallbackBlock *callbacks, WindowPtr theWindow) -{ - long oldA4; - OSErr err; - Handle windowContents; - Str255 windowTitle; - - //RememberA0(); /* Can't find header file for this. Seems to work anyway. */ - - oldA4 = SetUpA4(); - - GetWTitle(theWindow, windowTitle); - windowContents = callbacks->GetWindowContents(theWindow); - - HLock(windowContents); - err = SendTextAsAE(callbacks, *windowContents, GetHandleSize(windowContents), windowTitle); - if(err != noErr) callbacks->ReportOSError(err); - HUnlock(windowContents); - - RestoreA4(oldA4); -} |