【InDesign】EDICOLOR機能を再現(4)オブジェクト作成後、自動で選択ツールに切り替え(2)
その(1)の続編です。
※停止スクリプト向けに内容を修正しました(2020.9.1)
※停止スクリプトの元ネタ・てんせーのLinkを、新サイトに修正(2021.12.11)
昨年4月に(1)の方法で一旦挫折した表題ですが、弊エントリーを見かけたあるふぁ(仮)さんが、Twitterでサクッと書いて下さいました。
素晴らしい、ズバリそのものです。転載を許可して頂きありがとうございます。今後もよろしk ←
Startup Scriptsなどに入れてお使い下さい。毎回自動で稼働するようになります。 ※Mac版はエイリアス可
長方形ツール等を使ったあと選択ツールになるようにする
※オブジェクト属性(パスオープン・クローズ等含む)が変化しないものは対象外(拡大縮小、回転、シアー、自由変形、スムーズ、グラデーション系、アンカーポイントの追加・切り替えツールなど)
※避けた方がいいもの:
文字=テキストツール(入力モードにした瞬間、選択ツールへ持ち替えてしまうよ)
ペンツール(新規アンカーを打つごとに選択ツールになってしまう)
アンカーの削除(いつ実行されるか予測が難しい)
//DESCRIPTION:何か作ったあと選択ツールになる
#targetengine tool1_v2022
f_= false;
t_= "|線ツール|長方形ツール|楕円形ツール|多角形ツール|長方形フレームツール|楕円形フレームツール|多角形フレームツール|横組みグリッドツール|縦組みグリッドツール|鉛筆ツール|"
app.toolBoxTools.addEventListener ("afterAttributeChanged", function(ev)
{
if (t_.indexOf ("|" + ev.attributeValue + "|") >-1)
f_= true
});
var listner = app.addEventListener("afterSelectionChanged", function(ev)
{
if (f_)
app.toolBoxTools.currentTool = UITools.SELECTION_TOOL, f_= false;
});
listner.name = 'toolEvent';
EventListener afterAttributeChanged=属性が変更された時(after)のイベント
app.toolBoxTools.currentTool = UITools.SELECTION_TOOL=ツールのカレント(現在)を選択ツールにする
という内容。
この仕様を停止するには、下記のスクリプトを別途用意し
#targetengine tool1_v2022
app.eventListeners.itemByName('toolEvent').remove();
実行すると、デフォルトの仕様に戻ります。再度走らせるには、元のスクリプトをまた実行すればOK。
参考:てんせー
停止は以下でもOK。ちゃんと動きました
いずれもバージョンを同時に複数立ち上げる時には、#targetengine名の重複を避けて下さい(例の様に、バージョン名を末尾に追加するなど)
#targetengine tool1_v2022
listner.remove();
removeEventListeners というメソッドもあるらしいのですが、調べるとこれ少し面倒らしく、断念します。
あるふぁさん、ご指南ありがとうございます。多謝!