Kev*_*zer 7 ruby applescript tk-toolkit appleevents
我正在使用Ruby-Tk为OS X开发桌面应用程序,我想为该应用程序提供Apple Events界面.这意味着应用程序将定义它将响应的AppleScript命令字典(对应于发送到应用程序的Apple Events),并且用户/其他应用程序可以使用AppleScript命令编写Ruby-Tk应用程序的脚本.其他脚本语言支持这样的功能 - 通过http://appscript.svn.sourceforge.net/viewvc/appscript/py-aemreceive/上的py-aemreceive库提供Python,并通过http://tclae.sourceforge上的tclAE库提供Tcl .net /.我一直在寻找Ruby中的类似功能,并且空洞.
一个可能的机制是rubyobjc桥,它提供了Ruby和Objective-C之间的低级接口,但是这个gem似乎很少使用,并且在示例和文档中非常缺乏,所以我不确定这是否是一个追求卓有成效的道路.
注意:MacRuby可能有效,但它与Tk不兼容,所以排除了MacRuby.此外,RubyOSA和rb-appscript不是我想要的 - 它们允许Ruby将Apple Events发送到其他应用程序,而不是接收它们.
在没有其他替代方案的情况下,看来我必须为我需要的 AppleEvent C API 部分编写自己的 Ruby 包装器:主要是 AEInstallEventHandler 和相关函数。幸运的是,苹果仍然支持这个 API,尽管它在苹果的开发者文档中已被降级为“遗留”状态(有趣的是,它并没有被弃用)。我要么通过 Ruby 的 ffi gem 集成这些函数,要么更有可能通过 Ruby 的 C API(我仍然需要深入研究);直接使用 C API 将减少对其他 gem/模块的依赖。如果进展顺利,我会将其作为宝石发布。
关于 Donal Fellows 的评论,我需要的是自定义 AppleEvents——他推荐的文档中通过 Tk 支持的事件很可能可以通过从 Ruby 的 Tk 接口调用 Tk 来访问。