Quickcursorに見る、アプリケーション間通信

4,502 views

Published on

2009-12-19 Cocoa勉強会 #38

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,502
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Quickcursorに見る、アプリケーション間通信

  1. 1. QuickCursor に⾒る、アプリケーション間通信 Cocoa勉強会�#38�/�2009.12.19�(土)�/�⽊村渡 Powered by Rabbit 0.6.3 and COZMIXNG
  2. 2. 今⽇の話は
  3. 3. QuickCursorを ダシにCocoa�DO (NSConnection) でないアプリ間通信 のことを
  4. 4. QuickCursor
  5. 5. QuickCursor
  6. 6. QuickCursor いかなるテキスト入力も 指定したテキストエディタで 編集できるのが最大の魅力。 Macの⼿書き説明書 http://veadardiary.blog29.fc2.com/blog-entry-2522.html
  7. 7. QuickCursor ✓ 別アプリのテキストを指定のエディ タで編集できる ✓ .app (NO input manager hacks) ✓ Jesse Grosjean (HogBaySoftWare) ✓ オープンソース? http://www.hogbaysoftware.com/products/quickcursor/ http://github.com/jessegrosjean/quickcursor
  8. 8. デモ
  9. 9. QuickCursorの しくみ
  10. 10. QuickCursorのしくみ エディタ呼び出し 1.�アプリ�->�QuickCursor 2.�QuickCursor -> エディタ 編集結果を保存 1.�エディタ�->�QuickCursor 2.�QuickCursor -> アプリ
  11. 11. QuickCursorのしくみ エディタ呼び出し ✓ Accessibility APIを利用 編集結果を保存 ✓ ODB Editor Suites (Apple Event) http://www.barebones.com/support/develop/odbsuite.html
  12. 12. コードを⾒よう
  13. 13. 注目するクラス ✓ QCAppDelegate ✓ QCUIElement - 操作対象のUI ✓ ODBEditor - エディタとの協調 http://gusmueller.com/odb/
  14. 14. アプリとのやりとり ✓ Accessibility APIを利用 編集対象のテキストを得る 1.�フォーカスされたUIを取得 2.�オブジェクトの値をとる、⽂字列 なら処理を続⾏
  15. 15. アプリとのやりとり:テキスト取得 -[QCAppDelegate�beginQuickCursorEdit:] 1.�フォーカスされたUIを取得 +[QCUIElement�focusedElement] 2.�オブジェクトの値をとる、⽂字列 なら処理を続⾏
  16. 16. アプリとのやりとり 編集結果のテキストを反映 1.�編集結果の⽂字列を保存していた UIに -[QCAppDelegate ����odbEditor:didModifyFileForString:context:]
  17. 17. Accessibility�API ◎良いところ ✓ 対象のアプリはなにも変更しなくて よい ✓ UIをオブジェクトとして保持できる ので、プログラムが単純にできる ×悪いところ ✓ アプリによってはうまくアクセスで きない(Mail.appとか)
  18. 18. エディタとのやりとり ODB Editor Suitesを利用 Apple Event ✓ Open ( -> Editor) ✓ Save, Close (Editor ->)
  19. 19. エディタとのやりとり ✓ Open ( -> Editor) -[ODBEditor ����editString:options:forClient:context:]
  20. 20. エディタとのやりとり ✓ Save (Editor ->) -[QCAppDelegate ����odbEditor:didModifyFileForString:context:] 編集結果を呼び出し元のアプリに反映
  21. 21. エディタとのやりとり ✓ Close (Editor ->) -[QCAppDelegate ���odbEditor:didCloseFileForString:context:] (設定されていれば) 呼び出し元のアプリをアクティブに
  22. 22. ODB�Editor�Suites ✓ BBEditはじめ⻑い実績がある ✓ ODBEditorを使えばエディタ呼び出 し側の実装は簡単(エディタ側は ちょっとめんどい)
  23. 23. まとめ QuickCursorをネタに DOじゃないアプリ間通信について それぞれに優位なとこがある ✓ Accessibility API ✓ Apple Event 知っとくとよいかも
  24. 24. おまけ
  25. 25. 昔、似たよなものが あったような・・・
  26. 26. EditCast
  27. 27. EditCast
  28. 28. QuickCusorとEditCast ✓ アプリ�<=>�SIMBL ✓ Accessibility API, Apple Event <=> poseAsClass:NSTextView QuickCusorのアプローチのほうがカ バー範囲が広い EditCastはLeopard以降で動かないぜ
  29. 29. EditCast2を つくるよ!
  30. 30. QuickCursor + vim�on Terminal.app ♥
  31. 31.
  32. 32. 質問などあれば どうぞ Powered by Rabbit 0.6.3 and COZMIXNG

×