InDesignでJavaScript その9。
任意の場所にguide.jsxのバージョンアップ。
●アクティブなスプレッドにガイドを引けるように修正
●ダイアログの見た目を変更
●キャンセルを押すまでダイアログが消えないように修正
●縦横を選択していない場合にアラートを出すように修正
ガイドの作成はドキュメントの定規の開始位置に影響されるようなので、JavaScript起動時にドキュメントの設定を一旦退避して、ページに変更してからガイドを作成するようにしてみた。
/*
★任意の場所にguide.jsx★
☆ver.1.1☆
Copyright [偽善者こうちゃん]
[2007.01.11] {
ver.1.1作成
アクティブなスプレッドにガイドを引けるように修正
ダイアログの見た目を変更
キャンセルを押すまでダイアログが消えないように修正
縦横を選択していない場合にアラートを出すように修正
}
[2006.10.30] {
ver.1.0作成
}
任意の場所にguideを引くためのJavaScript。
勉強用に作ったのでサンプルとして使わないほうが…。
なお、このJavaScriptを使用して損害をこうむっても
私は知りませんので、あしからず。
偽善者こうちゃん
http://macneko.blog77.fc2.com/
*/
//ドキュメントを開いているかチェック
if (app.documents.length != 0) {
//開いていたら
guidelineAdd();
} else {
//開いていなかったら
alert("ドキュメントを開いてから実行してください");
}
function guidelineAdd() {
//変数に代入
var docObj = app.activeDocument;
//activePage、activeSpreadはactiveWindowのプロパティ
var mySpred = app.activeWindow.activeSpread;
//ドキュメントのrulerOriginを保存
var oldRular = docObj.viewPreferences.rulerOrigin ;
//ドキュメントのrulerOriginをページに変更(10進法で指定)
docObj.viewPreferences.rulerOrigin = 1380143215 ;
//キャンセル押すまでダイアログを出し続けるための仕掛け
var myAns = true ;
while (myAns == true) {
// ダイアログの土台の生成とタイトル名の付与
var myDialog = app.dialogs.add({name:"ガイド作成設定", canCancel : true});
// 生成したダイアログの中身を構築
with (myDialog) {
with (dialogColumns.add()) {
with (borderPanels.add()) {
with(dialogColumns.add()) {
staticTexts.add({staticLabel : "ガイドを引く座標:"});
}
with(dialogColumns.add()) {
//座標値地を入力するフィールドの作成
var zahyo = realEditboxes.add({editValue :10, minWidth : 180});
}
}
with (borderPanels.add()) {
with(dialogColumns.add()) {
//ガイドを引く場所をラジオボタンで設定するためにラジオボタンを作成
var MyguideGroups = radiobuttonGroups.add();
with (MyguideGroups) {
//ガイドを引く場所をラジオボタンで設定する
var verticalG= radiobuttonControls.add({staticLabel:"縦"});
var horizonG = radiobuttonControls.add({staticLabel:"横"});
}
}
}
}
}
var myAns = myDialog.show()
//ダイアログを表示
if (myAns == true) {
var Gzahyo = zahyo.editValue;
switch(MyguideGroups.selectedButton) {
//選択したボタンにあわせてキーワードを代入
//switchは「●●の場合△△する」という使い方ができる
case 0 : var GuideAline = "verticalG"; break ;
case 1 : var GuideAline = "horizonG"; break ;
default : alert("縦方向か横方向か選択してください") ; break ;
}
with(mySpred){ //
switch(GuideAline) {
case "verticalG" :
guides.add(undefined,{orientation:HorizontalOrVertical.vertical,location:Gzahyo});
break ;
case "horizonG" :
guides.add(undefined,{orientation:HorizontalOrVertical.horizontal,location:Gzahyo});
break ;
default : break ;
}
}
}
}
myDialog.destroy();
//ドキュメントのrulerOriginをもとに戻す
docObj.viewPreferences.rulerOrigin = oldRular ;
}