k_ikiの雑記帳

DTPのこと、創作のことなど、思いつくまま

textWrap2.jsx

きのうのヤツを少しだけ汎用的っぽく。ホントに少しだけ(^^;
21日にアップしたんだけど、それからまたちょっと書き直した。
 
mgさんの diary NET. 1mg より
InDesign+ScriptUI_ダイアログ外骨格をInDesignでつくる
を利用してダイアログのレイアウトを少しだけ整えて、textWrapType*1 と textWrapSide も選択できるようにした。
 

/*
	2010.04.22/09:00作成
	(C)CopyRight  k_iki  http://d.hatena.ne.jp/k_iki/
	スクリプト作成環境:Windows XP sp3 / InDesign CS3 v5.0.4
	
	選択中のページアイテムに回り込みを設定
	*回り込み方法の反転=非対応
	*輪郭オプション=非対応
*/

////////////////////////////////////////////エラー処理 
function myerror(mess) { 
  if (arguments.length > 0) { alert(mess); }
  exit();
}

////////////////ドキュメントと選択オブジェクトの有無をチェック
if (app.documents.length == 0) {myerror("ドキュメントが開かれていません")}
var myDoc = app.activeDocument;
if (myDoc.selection.length == 0) {myerror("オブジェクトを1つ以上選択してください")}

////////////////ダイアログ
var dlg=new Window('dialog', 'textWrap' , [0, 0, 250, 266]);
dlg.center();
dlg.add('statictext' , [85, 25, 100, 41] , '上' , {multiline : true});
var m_top = dlg.add('edittext' , [105, 23, 155, 41] , '0' , {multiline : false});
dlg.add('statictext' , [20, 55, 35, 71] , '左' , {multiline : true});
var m_left = dlg.add('edittext' , [40, 53, 90, 71] , '0' , {multiline : false});
dlg.add('statictext' , [150, 55, 165, 71] , '右' , {multiline : true});
var m_right = dlg.add('edittext' , [170, 53, 220, 71] , '0' , {multiline : false});
dlg.add('statictext' , [85, 85, 100, 101] , '下' , {multiline : true});
var m_bottom = dlg.add('edittext' , [105, 83, 155, 101] , '0' , {multiline : false});
dlg.add('statictext' , [25, 121, 125, 137] , '回り込みモード' , {multiline : true});
var modeList = dlg.add('dropdownlist' , [25, 141, 225, 159] , ["境界線ボックスで回り込む","オブジェクトのシェイプで回り込む","オブジェクトを挟んで回り込む","次の段へテキストを送る","回り込みなし"]);
modeList.selection=0;
dlg.add('statictext' , [25, 174, 125, 190] , '回り込みサイド' , {multiline : true});
var sideList = dlg.add('dropdownlist' , [25, 194, 225, 212] , ["左右両サイド","最大領域","左サイド","右サイド","ノド元から離れたサイド","ノド元に向かったサイド"]);
sideList.selection=0;
dlg.add('button' , [92, 232, 157, 256] , 'ok' , {name: 'ok'});
if(dlg.show()==true){
	var ue = m_top.text;
	var hidari = m_left.text;
	var migi = m_right.text;
	var sita = m_bottom.text;
	var myMode = modeList.selection.index;
	var mySide = sideList.selection.index;
	if (myMode == 0) {
		var my_Mode = 1651729523;
	} else if (myMode == 1) {
		var my_Mode = 1835233134;
	} else if (myMode == 2) {
		var my_Mode = 1650552420;
	} else if (myMode == 3) {
		var my_Mode = 1853384306;
	} else {
		var my_Mode = 1852796517;
	}
	if (mySide == 0) {
		var my_Side = 1953981043;
	} else if (mySide == 1) {
		var my_Side = 1953975411;
	} else if (mySide == 2) {
		var my_Side = 1953983603;
	} else if (mySide == 3) {
		var my_Side = 1953985139;
	} else if (mySide == 4) {
		var my_Side = 1953980787;
	} else {
		var my_Side = 1953985651;
	}
} else {
	myerror("処理を中断しました");
}

////////////////実行
var sel = app.selection;
for (var i=0; i<sel.length; i++){
	sel[i].textWrapPreferences.textWrapType = my_Mode;  //CS4: textWrapMode
	sel[i].textWrapPreferences.textWrapSide = my_Side;
	sel[i].textWrapPreferences.textWrapOffset = ([ue,hidari,sita,migi]);
}

*1:CS4におけるtextWrapMode