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. 

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG

Reply via email to