2011-09-21 27 views
7

Tôi đang làm việc trên ứng dụng dành cho máy tính để bàn cho OS X bằng Ruby-Tk và tôi muốn cung cấp giao diện Sự kiện của Apple cho ứng dụng. Điều này có nghĩa là ứng dụng sẽ định nghĩa một từ điển các lệnh AppleScript mà nó sẽ trả lời (tương ứng với các Sự kiện Apple được gửi đến ứng dụng), và người dùng/các ứng dụng khác có thể viết kịch bản ứng dụng Ruby-Tk bằng các lệnh AppleScript. Các ngôn ngữ kịch bản khác hỗ trợ chức năng như vậy - Python thông qua thư viện py-aemreceive tại http://appscript.svn.sourceforge.net/viewvc/appscript/py-aemreceive/ và Tcl thông qua thư viện tclAE tại http://tclae.sourceforge.net/. Tôi đã tìm kiếm các chức năng tương tự trong Ruby và đã trống rỗng. Một cơ chế có thể là cầu rubyobjc, cung cấp một giao diện cấp thấp giữa Ruby và Objective-C, nhưng đá quý này dường như ít được sử dụng và thiếu sót trong các ví dụ và tài liệu, vì vậy tôi không chắc chắn nếu đây sẽ là một con đường hiệu quả để theo đuổi.Ruby có cung cấp cơ chế phản hồi sự kiện Apple trên OS X không?

NB: MacRuby có thể hoạt động nhưng không tương thích với Tk, do đó quy tắc ra MacRuby. Ngoài ra, RubyOSA và rb-appscript không phải là những gì tôi đang tìm kiếm - chúng cho phép Ruby gửi các Sự kiện của Apple đến các ứng dụng khác, không nhận được chúng.

+0

AE chung hoặc được hỗ trợ bởi Tk thông qua API (Tcl) được mô tả tại http://www.tcl.tk/man/tcl8.6/TkCmd/tk_mac.htm –

Trả lời

1

Trong trường hợp không có lựa chọn thay thế khác, có vẻ như tôi sẽ phải viết trình bao bọc của Ruby cho các phần của API AppleEvent C mà tôi cần: chủ yếu là AEInstallEventHandler và các hàm liên quan. May mắn thay, Apple vẫn hỗ trợ API này mặc dù nó đã được chuyển xuống trạng thái "cũ" trong tài liệu dành cho nhà phát triển của Apple (mặc dù, thú vị là nó không bị phản đối). Tôi sẽ hoặc là tích hợp các chức năng này thông qua đá quý ffi của Ruby hoặc, nhiều khả năng, thông qua API C của Ruby (mà tôi vẫn phải thâm nhập); bằng cách sử dụng C API trực tiếp sẽ làm giảm sự cần thiết cho phụ thuộc vào đá quý/mô-đun khác. Nếu điều này suôn sẻ, tôi sẽ giải phóng nó như một viên ngọc.

Nhận xét của Donal Fellows, nhu cầu của tôi là dành cho AppleEvent tùy chỉnh - được hỗ trợ thông qua Tk trong tài liệu mà anh đề nghị có thể truy cập thông qua các cuộc gọi tới Tk từ giao diện Tk của Ruby.

1

Bạn có thể muốn kiểm tra thư viện appscript (lưu ý: Dường như chỉ hoạt động với Ruby X do OS X cung cấp) hoặc thử sử dụng MacRuby, bao gồm tất cả các API có sẵn trong OS X, .

Các vấn đề liên quan