主にInDesignによる新聞組版Tips中心です。Mac使いですが業務はWin多め。Win DTP Tipsを増やしたい

【InDesign】EDICOLOR機能を再現(4)オブジェクト作成後、自動で選択ツールに切り替え(2)

その(1)の続編です。

※停止スクリプト向けに内容を修正しました(2020.9.1)

※停止スクリプトの元ネタ・てんせーのLinkを、新サイトに修正(2021.12.11)


昨年4月に(1)の方法で一旦挫折した表題ですが、弊エントリーを見かけたあるふぁ(仮)さんが、Twitterでサクッと書いて下さいました。

素晴らしい、ズバリそのものです。転載を許可して頂きありがとうございます。今後もよろしk ←

Startup Scriptsなどに入れてお使い下さい。毎回自動で稼働するようになります。 Mac版はエイリアス

スクリプトパネル→ ユーザー(右クリック)→ エクスプローラー(Finder)で表示→ ここにStartup Scriptsフォルダを作成


長方形ツール等を使ったあと選択ツールになるようにする

※オブジェクト属性(パスオープン・クローズ等含む)が変化しないものは対象外(拡大縮小、回転、シアー、自由変形、スムーズ、グラデーション系、アンカーポイントの追加・切り替えツールなど)

※避けた方がいいもの:
文字=テキストツール(入力モードにした瞬間、選択ツールへ持ち替えてしまうよ)
ペンツール(新規アンカーを打つごとに選択ツールになってしまう)
アンカーの削除(いつ実行されるか予測が難しい)

//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 というメソッドもあるらしいのですが、調べるとこれ少し面倒らしく、断念します。


あるふぁさん、ご指南ありがとうございます。多謝!