symbian-qemu-0.9.1-12/python-2.6.1/Mac/PythonLauncher/doscript.m
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 /*
       
     2  *  doscript.c
       
     3  *  PythonLauncher
       
     4  *
       
     5  *  Created by Jack Jansen on Wed Jul 31 2002.
       
     6  *  Copyright (c) 2002 __MyCompanyName__. All rights reserved.
       
     7  *
       
     8  */
       
     9 
       
    10 #import <Cocoa/Cocoa.h>
       
    11 #import <ApplicationServices/ApplicationServices.h>
       
    12 #import "doscript.h"
       
    13 
       
    14 extern int 
       
    15 doscript(const char *command)
       
    16 {
       
    17 	char *bundleID = "com.apple.Terminal";
       
    18 	AppleEvent evt, res;
       
    19 	AEDesc desc;
       
    20 	OSStatus err;
       
    21 
       
    22 	[[NSWorkspace sharedWorkspace] launchApplication:@"/Applications/Utilities/Terminal.app/"];
       
    23 
       
    24 	// Build event
       
    25 	err = AEBuildAppleEvent(kAECoreSuite, kAEDoScript,
       
    26 	                         typeApplicationBundleID,
       
    27 	                         bundleID, strlen(bundleID),
       
    28 	                         kAutoGenerateReturnID,
       
    29 	                         kAnyTransactionID,
       
    30 	                         &evt, NULL,
       
    31 	                         "'----':utf8(@)", strlen(command),
       
    32 	                         command);
       
    33 	if (err) {
       
    34 		NSLog(@"AEBuildAppleEvent failed: %d\n", err);
       
    35 		return err;
       
    36 	}
       
    37 
       
    38 	// Send event and check for any Apple Event Manager errors
       
    39 	err = AESendMessage(&evt, &res, kAEWaitReply, kAEDefaultTimeout);
       
    40 	AEDisposeDesc(&evt);
       
    41 	if (err) {
       
    42 		NSLog(@"AESendMessage failed: %d\n", err);
       
    43 		return err;
       
    44 	}
       
    45 	// Check for any application errors
       
    46 	err = AEGetParamDesc(&res, keyErrorNumber, typeSInt32, &desc);
       
    47 	AEDisposeDesc(&res);
       
    48 	if (!err) {
       
    49 		AEGetDescData(&desc, &err, sizeof(err));
       
    50 		NSLog(@"Terminal returned an error: %d", err);
       
    51 		AEDisposeDesc(&desc);
       
    52 	} else if (err == errAEDescNotFound) {
       
    53 		err = noErr;
       
    54 	} else {
       
    55 		NSLog(@"AEGetPArmDesc returned an error: %d", err);
       
    56 	}
       
    57 
       
    58 	return err;
       
    59 }