Georg wrote:
Hello,
I want wo be able to make my program scriptable with python.
My program is written in ObjectC in XCode 3 (target only for MacOSX
10.5).
I want to embed it and use
Py_Initialize();
PyRun_SimpleString(".....
Can anyone give me some advice how I wrap my cocoa classes to be able
to access them from within the python script?
I found the examples on how to wrap c/c++ functions but nothing about
ObjectC.
Many thanks in advance
Georg
I've started working on such a thing too and am a bit lost by the lack
of documentation. I tried a more ambitious route first but then moved
back to a simple case.
Suppose I have a simple Obj-C class in the files MyClass.h/m:
@interface MyClass : NSObject {
float lat;
float lon;
float alt;
}
@property float lat;
@property float lon;
@property float alt;
@end
@implementation MyClass
@synthesize lat;
@synthesize lon;
@synthesize alt;
- (NSString *)description
{
return [NSString stringWithFormat:@"myClass lat(%f) lon(%f)
alt(%f)", lat, lon, alt];
}
@end
Now I want a simple command line Obj-C tool that runs a python script
that creates a MyClass and prints the description. I used XCode 3.0
on my Leopard box to create a Cocoa-Python application. I dont want
all the window stuff, so I changed the main.py to simply:
import objc
from Foundation import *
NSLog("Hello World! Running main.py.")
and that works.
Then I changed it to be...
myInst = MyClass.alloc().init().description()
NSLog("myInst is: %@",myInst.description())
and *that* worked.... note that I did Not import or otherwise bring in
MyClass
Trying this with my real classes off in a library also worked.
so far that looks good and enough for today's effort.
Next I'd like to write python scripts that would animate the values of
MyClass - eg set lat/lon/alt in a loop that uses some sort of function.
_______________________________________________
Pythonmac-SIG maillist - Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig