workspaceをなんとかするスクリプト

workspaceSwitcherって書いちゃうとまたやってるのかwって思われてしまうのであえてタイトルにしないというのはわたしのささやかな抵抗なのですが、今回のものはInDesign用です。おそらくCS6でも動きますのスクリプトなのですが、思ったよりスイッチングが早かったので前から作っているプラグインバージョンは必要ないかもしれないなって80%程やる気を失っていしまっているのはまた別のおはなしです。いや、苦戦しているのは確かなのですがPrefixIDの問題とか色々なハードルがございましてなかなか一筋縄では行かない状態なのです。で、いっその事ロジックから一新してしまうのもありかなって思ったのでやってみるとそれなりに動作してしまったというわけなのです。現在、テストを兼ねてスタートアップに放り込んでIDを動作させていますが安定しているので一旦このバージョンを放流してお茶を濁しておこうという了見なのです。はい、まあ動くからいいじゃないですかぁw
SDKの方はある程度の事は出来るようになったのですが、中々一人では超えられない壁にぶち当たっている状況です。まあ、デベロッパーフィー払ってサポート受けるのが最短ではありますが、ブロンズでも年間$400以上ですのでパトロンでも見つけないとムリぽwww


とりあえずこちらを

#targetengine session

var ctn = app.toolBoxTools.currentToolName;
var idleTask = app.idleTasks.add({name:'toolObserver', sleep:80})
 .addEventListener(IdleEvent.ON_IDLE, task1);
function task1(ev){
 app.idleTasks.itemByName("toolObserver").remove();
 if (ctn==app.toolBoxTools.currentToolName){
 idleTask = app.idleTasks.add({name:'toolObserver', sleep:80})
 .addEventListener(IdleEvent.ON_IDLE, task1);
 return;
 }
 toolChanged();
 ctn = app.toolBoxTools.currentToolName;
 idleTask = app.idleTasks.add({name:'toolObserver', sleep:80})
 .addEventListener(IdleEvent.ON_IDLE, task1)
 //$.writeln(app.toolBoxTools.currentToolName);
 }

function toolChanged(){
 //alert("triggered!");
 switch(app.toolBoxTools.currentTool){
 case 1936018548: //SELECTION_TOOL
 case 1685277812: //DIRECT_SELECTION_TOOL
 case 1936741484: //PAGE_TOOL
 case 1734430836: //GAP_TOOL
 case 1852796517: //NONE
 case 1835357292: //MEASURE_TOOL
 case 1919898732: //ROTATE_TOOL
 case 1935889516: //SCALE_TOOL
 case 1936217196: //SHEAR_TOOL
 app.applyWorkspace("ws0");
 break;
 case 1954107508: //TYPE_TOOL
 case 1987335276: //VERTICAL_TYPE_TOOL
 case 1953452148: //TYPE_ON_PATH_TOOL
 case 1987334000: //VERTICAL_TYPE_ON_PATH_TOOL
 case 1751602284: //HORIZONTAL_GRID_TOOL
 case 1986483308: //VERTICAL_GRID_TOOL
 app.applyWorkspace("ws1");
 break;
 case 1819169900: //LINE_TOOL
 case 1885687412: //PEN_TOOL
 case 1633767540: //ADD_ANCHOR_POINT
 case 1684099188: //DELETE_ANCHOR_POINT
 case 1667518580: //CONVERT_DIRECTION_POINT
 case 1886274412: //PENCIL_TOOL
 case 1936544872: //SMOOTH_TOOL
 case 1701991269: //ERASE_TOOL
 case 1935891060: //SCISSORS_TOOL
 case 1718899820: //FREE_TRANSFORM_TOOL
 case 1919308908: //RECTANGLE_FRAME_TOOL
 case 1885754476: //POLYGON_FRAME_TOOL
 case 1919243372: //RECTANGLE_TOOL
 case 1886147692: //POLYGON_TOOL
 case 1701598316: //ELLIPSE_TOOL
 case 1701205100: //ELLIPSE_FRAME_TOOL
 app.applyWorkspace("ws2");
 break;
 case 1735611500: //GRADIENT_SWATCH_TOOL
 case 1734759532: //GRADIENT_FEATHER_TOOL
 case 1751209068: //HAND_TOOL
 case 2053985388: //ZOOM_TOOL
 case 1952601196: //TABLE_TOOL
 case 1852789868: //NOTE_TOOL
 case 1701074028: //EYE_DROPPER_TOOL
 app.applyWorkspace("ws3");
 break;
 default:
 break;
 }
 }

今までのは何だったのかってぐらいシンプルになっています。80msごとにポーリングかけますから負荷が大きいかもって思ったりしましたがツールに変化がない場合はタスクのスケジュールのみなのでそんなに高負荷にはなりません。また、切り替え自体も軽快で既に切り替わった状態のツールボックスを見ますから前のやつの様にシビアなタイミングでいろんなツールがアクティブになったような表示になる事もありません。
Extendscriptだから改造しやすいしねw

利用方法
まず4つのワークスペースを作ります。このワークスペースは以下の名前/用途にしてください。

ワークスペース名称
ws0」選択ツールや拡縮・回転等の操作用
ws1」各種テキストツール用
ws2」ペンツール・ラインツール・四角や楕円描画ツール等のグラフィック関連用
ws3」その他、虫眼鏡ツールやハンドツール用

ワークスペースはあとから調整すれば良いので最初は適当でOKです。
ワークスペースを用意したあとこのスクリプトを実行すると、ツールの切り替え時にワークスペースが自動的に先に作った物に切り替わります。
継続して利用する場合、アプリケーションフォルダ内のScript/starup scriptsフォルダに放り込んでおくとよろしいかと思います。

gitの方に上がっています。細かい修正等がちょこちょこ入るかもしれませんからそちらを参照していただいたほうが良いかもしれません。

https://github.com/ten-A/Extend_Script_experimentals/blob/master/workspaceSwitcherForID3.jsx

ten_a

Graphic Designer, Scripter and Coder. Adobe Community Professional.

シェアする