On 8 Jul, 2010, at 23:00, Georg Seifert wrote:
> Hi,
>
> In my app I will access my cocoa data classes from a python script (run from
> within the app). This works fine, I can access all the methods and
> properties. For some of the array properties I use dedicated getter and
> setter (getItemAtIndex: , setItemAtIndex: ...).
>
> I have a cocoa object:
>
> @interface myObject : NSObject {
> NSMutableArray *_items;
> }
> @property(retain) NSArray * items;
> - (void) setItem:(id) Item atIndex: (int) Index;
> - (id) itemAtIndex: (int) Index;
> @end
>
> Is it possible to access like:
> object.items()[i] # it would be even better to get rid of the
> parenthesis.
> or
> object.items.append(NewItem)
>
> Calling from python should call the cocoa accessors instead of accessing the
> list directly. (I need to set some values and implemented undo in the
> accessors.)
>
> My users are used to plain python scripting environments and don’t like the
> cocoa method names.
>
> Is it somehow possible to tell python what accessors to use or is there a way
> to supply python wrappers? Or could I build a bridgesupport file?
Not easily. I've implemented code for the upcoming 2.3 release of pyobjc that
will generate the accessors for you when you create a property in Python, but
haven't gotten around to implementing the other direction.
Something that likely works (but I haven't tested this):
class ItemProxy (object):
def __init__(self, owner):
self._ower = owner
def __getitem__(self, i):
return self.itemAtIndex_(i)
...
del myClass.__dict__['items']
myClass.__dict__['items'] = lambda self: ItemProxy(self)
A future version of PyObjC will allow you to configure ObjC properties in
native classes using bridgesupport files and/or function in the objc module.
Ronald
P.S. I want to release PyObjC 2.3 this saturday, but need to squash a couple of
bugs in the 64-bit support before I do the release.
P.P.S. The major feature in PyObjC 2.3 is support for Python 3.
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Pythonmac-SIG maillist - [email protected] http://mail.python.org/mailman/listinfo/pythonmac-sig unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG
