HomeMonologue | Part of Script factory. scriptfactory@mac.com . |
CMScript という物をご存じでしょうか・・・。あまり正確ではないかもしれませんが、一言で言えば、「AppleScriptでコンテキストメニュー・プラグインを作ることを可能にするコンテキストメニュー・プラグイン」です。
僕は死ぬほど大好きなUtilityなんですが、使い方にいくらか癖があるせいか、あまり使われていないような印象を受けます。というわけで、userを増やして作者にpressureをかけるために、CMScriptの解説を試みます。えっ?こんなaccessの少ないsiteにそんな影響力があるかって?まあ、聞かなかったことにします・・・
まあ、とにかく一度お試しくださいませ。ある程度AppleScriptを使える人間ならば、FinderpopとCMScriptがあれば、他のコンテキストメニュー・プラグインはいらないと思います。
まず、packageの中身に含まれている、
を「コンテキストメニュー項目」の中にいれます。そして、システムフォルダの「スクリプト」フォルダ(MacOS 8.5以前なら「Scripts」フォルダ)内に、「Contextual Menu Scripts」というフォルダを作ります。「Contextual Menu Scripts」フォルダの中に、「ApplicationName Scripts」というフォルダを作り、各applicationようにスクリプト(コンパイル済みスクリプトファイル)を分類します。例えば、Finder用のスクリプトなら、「Finder Scripts」フォルダとなるわけです。そして、すべてのアプリケーションで使用するスクリプトのために、「Universal Scrips」という特別なフォルダを使えます。
例えば、「FinderScripts」フォルダの中にさらにサブフォルダを作るとコンテキストメニュー上では、それはサブメニューになってくれます。
CMScriptから呼び出されるスクリプトにはそれなりの準備をしてやる必要があるわけですが、以下の二つについて考慮しなければいけません。
まあ、スクリプトを書くこと自体は難しいことは無いと思いますが、スクリプトに適切なコンテキストを割り当てるのは結構コツがいるものと思います。
(CMScriptのReadMeに書いてある)代表的なコンテキストの例
fss TEXTttxt | Simple Textのテストとファイルにだけ |
fss TEXT | すべてのテキストファイル |
fss ****ttxt | すべてのSimpleText書類 |
TEXT | テキストに変換できるすべてのデータ |
TEXT! | テキストデータそのものだけ |
obj cfol | フォルダ |
obj file | ファイル |
null | コンテキストがない場合も含めてすべて |
**** | 何らかのコンテキストが存在する場合 |
データタイプのコンテキストはコンテキストメニューに対応したテキストエディター(Tex-Edit Plusとか)で有効かと思います。object specifier、つまりコンテキストメニューが適用されたitemの種類によるコンテキストの割り当ては、ほとんどの場合Finderでしか有効でありません。
コンテキストメニューがどんなコンテキストで開かれているかは、CMScriptに付属のコンテキストメニュー・プラグイン「ContextGrabber」を使うことで取得できます。
caps lock keyをONにした状態で、コンテキストメニューを出してみましょう。以下のように、「Copy Context to Clipboard」という項目が登場します。ここで、「Eazy」と「Advanced」の二つのサブメニューが登場しますが、「Eazy」のほうを選びましょう。「Advanced」の方は、僕の経験上、コンテキストが特定されすぎて役に立つものが得られた試しがありません。
すると、そのコンテキストを意味する呪文が、clipboardにcopyされます。
あとは、それをスクリプトをスクリプト編集プログラムで開いたときに表示される、「このスクリプトについて」の欄にpasteするだけです。
ちなみに、このコンテキストは、複数書くことができて、つまり複数のコンテキスで適用されるスクリプトも作れるわけです。ただし、複数のコンテキストを割り当てた場合、open handlerの引数にはいろんなclassの値が飛び込んでくるわけで、場合によっては値のclassを調べて、if blockで処理を分岐させる必要があるでしょう。
典型的なCM Script用のスクリプトとして、僕の作品で恐縮ではありますが、with Browserなどが参考になるかと思います。
Finderでは、object specifierによるコンテキストの割り当てがほとんどの場合使えるので、かなり気の利いたスクリプトが作れると思います。ほとんどがContextGrabberを使えば調べられますが、僕が知るかぎりのコンテキストの割り当てを列挙してみます。
コード | コンテキスト |
---|---|
fss TEXTttxt | Simple Textのテストとファイルにだけ |
fss TEXT | すべてのテキストファイル |
fss ****ttxt | すべてのSimpleText書類 |
コード | コンテキスト |
---|---|
obj file | ファイル |
obj cfol | フォルダ |
obj cdis | ディスク |
obj sdsk | 起動ディスク |
obj cwnd | container window(フォルダウィンドウ) |
obj dwnd | デスクトップ |
obj iwnd | 情報ウィンドウ |
コード | コンテキスト |
---|---|
alis | ファイル、フォルダ、ディスクすべて |
Finder以外のアプリケーションの場合、アプリケーションにも依存しますが、あまりobject specifierによくコンテキストの割り当てが使えません。たぶん、アプリケーションがコンテキストメニュー・プラグインのことを考えてくれていない(その必要が無いとお思われている?)からだと思うのですが・・・まあ、よくわかりませぬ。
しかし、file typrとcreator typeによるコンテキストと割りあて、および「alis」は、僕の経験上では大抵のアプリケーションで使えます。たとえば、DragThing、Sherlockの検索結果ウィンドウ、GoLiveのサイトウィンドウなどなど・・・・。これだけでも結構有用じゃないでしょうか。
Adobe GoLiveのサイトウィンドウにおけるCMScript
アプリケーション固有のデータ-であっても、そこへの参照を教えてくれるようになれば、もっといろんなことができるようになると思うのですが・・・。
システム起動後や、Contextual Menu Scripts フォルダをいじった後などで初めてコンテキストメニューを開いたときCMScriptが有効にならないことがあります。多分、メニューを再構築しているからだと思いますが、2回目以降はちゃんとCMScriptが有効になります。
Contextual Menu Scripts フォルダにアプレットやドロップレットを登録しても正しくコンテキストが適用されません。つねに、コンテキストメニューに登場します。これは、CMScrriptのもう一つの機能であるWord Services plugin側の都合らしいんですが、とにかくアプリケーションをContextual Menu Scriptsフォルダに登録すると、常にコンテキストメニューに登場します。コンパイル済みスクリプトファイルしか使えないということです。
処理に時間のかかるものや、メモリをたくさん使う可能性のあるスクリプトはCMScriptから実行するのはやめたほうがいいでしょう。どうしてもやりたい場合は、スクリプトを二つに分けて、実際の処理部分はアプレットとして独立したアプリケーションとし、CMScriptにはそれを起動するスクリプトを登録するのがよいと思います。
|
This page was last built on |