[Pythonmac-SIG] Working with ScriptingBridge
Joni Orponen
j.orponen at 4teamwork.ch
Thu Jul 13 09:10:50 EDT 2017
Hello,
I've been following along the SBSendEmail example from Apple.
https://developer.apple.com/library/content/samplecode/SBSendEmail/Introduction/Intro.html
The same should be able to be done via pyobjc as well. The alloc init cycle
of the outgoing message object yields me a Python future object. Example
code below:
from ScriptingBridge import SBApplication
apple_mail = SBApplication.applicationWithBundleIdentifier_(
'com.apple.mail')
apple_mail_message_class = apple_mail.classForScriptingClass_(
'outgoing message')
apple_mail_message = apple_mail_message_class.alloc().initWithProperties_({
'subject': 'foo',
'content': 'bar',
})
Only alloc()ing the object yields an ephemeral pseudo-SB object as improper
SB use does.
>>> apple_mail_message = apple_mail_message_class.alloc()
>>> apple_mail_message
<MailOutgoingMessage objective-c instance 0x7fc0586d24c0>
>>> apple_mail_message.subject()
>>> apple_mail_message.subject()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: cannot access attribute 'subject' of NIL
'MailOutgoingMessage' object
>>> apple_mail_message
<MailOutgoingMessage objective-c instance 0x0>
My understanding of what is going here is that interacting with it once
makes it go away as its retain count is 0 in the Obj-C VM.
The future object contains its properties in its repr().
>>> apple_mail_message
<future MailOutgoingMessage with properties {
content = bar;
subject = foo;
}>
>>> type(apple_mail_message)
<objective-c class SBProxyByClass at 0x7fffa69f9fe0>
So, how to work with these future objects? Or am I doing something
fundamentally wrong in how I'm trying to chase the obj-c example?
--
Joni Orponen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pythonmac-sig/attachments/20170713/c45e6d3b/attachment.html>
More information about the Pythonmac-SIG
mailing list