summaryrefslogtreecommitdiffstats
path: root/Mac/Contrib/BBPy/source/BBPy_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Contrib/BBPy/source/BBPy_main.c')
-rw-r--r--Mac/Contrib/BBPy/source/BBPy_main.c104
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);
-}