2011年10月18日火曜日

【習作】ラジオボタン

ドキュメント全体のテキストフレーム処理をラジオボタンにしてみた。



var d_Obj=app.dialogs.add({name:"テキストフレーム処理"});
var d_Column=d_Obj.dialogColumns.add();
var rbg=d_Column.radiobuttonGroups.add();
rbg.radiobuttonControls.add({staticLabel:"テキストをBlackに"});
rbg.radiobuttonControls.add({staticLabel:"テキストを正体に"});
rbg.radiobuttonControls.add({staticLabel:"フレームをフィット"});
rbg.radiobuttonControls.add({staticLabel:"テキストBlack&正体に"});
rbg.radiobuttonControls.add({staticLabel:"テキストBlack&フレームフィット"});
rbg.radiobuttonControls.add({staticLabel:"テキスト正体&フレームフィット"});
rbg.radiobuttonControls.add({staticLabel:"全て処理",checkState:false});
d_Obj.show();

var inObj = app.activeDocument;
for(var i=0 ; i<inObj.allPageItems.length; i++) {
if(inObj.allPageItems[i].constructor.name =="TextFrame") {
switch(rbg.selectedButton) {
case 0 : inObj.allPageItems[i].parentStory.fillColor="Black"; break ;
case 1 : inObj.allPageItems[i].parentStory.horizontalScale=100;
inObj.allPageItems[i].parentStory.verticalScale=100; break ;
case 2 : inObj.allPageItems[i].fit(FitOptions.FRAME_TO_CONTENT); break ;
case 3 : inObj.allPageItems[i].parentStory.fillColor="Black";
inObj.allPageItems[i].parentStory.horizontalScale=100;
inObj.allPageItems[i].parentStory.verticalScale=100; break ;
case 4 : inObj.allPageItems[i].parentStory.fillColor="Black";
inObj.allPageItems[i].fit(FitOptions.FRAME_TO_CONTENT); break ;
case 5 : inObj.allPageItems[i].parentStory.horizontalScale=100;
inObj.allPageItems[i].parentStory.verticalScale=100;
inObj.allPageItems[i].fit(FitOptions.FRAME_TO_CONTENT); break ;
case 6 : inObj.allPageItems[i].parentStory.fillColor="Black";
inObj.allPageItems[i].parentStory.horizontalScale=100;
inObj.allPageItems[i].parentStory.verticalScale=100;
inObj.allPageItems[i].fit(FitOptions.FRAME_TO_CONTENT); break ;
default : break ;
}
}
}


で、選択アイテムだけを処理するとなると結構ムズイ。
カネムーさんのpageItemsとallPageItemsをパクらせていただきました。
パクっただけで読み解けてません(^^;

var d_Obj=app.dialogs.add({name:"選択テキストフレーム処理"});
var d_Column=d_Obj.dialogColumns.add();
var rbg=d_Column.radiobuttonGroups.add();
rbg.radiobuttonControls.add({staticLabel:"テキストをBlackに"});
rbg.radiobuttonControls.add({staticLabel:"テキストを正体に"});
rbg.radiobuttonControls.add({staticLabel:"フレームをフィット"});
rbg.radiobuttonControls.add({staticLabel:"テキストBlack&正体に"});
rbg.radiobuttonControls.add({staticLabel:"テキストBlack&フレームフィット"});
rbg.radiobuttonControls.add({staticLabel:"テキスト正体&フレームフィット"});
rbg.radiobuttonControls.add({staticLabel:"全て処理",checkState:false});
d_Obj.show();

selObjs=app.activeDocument.selection;
groupLoop=function(objs){
for(var i=0; i<objs.length; i++){
var obj=objs[i].getElements()[0];
if(obj.constructor.name=="Group"){
var groupObjs=obj.pageItems;
arguments.callee(groupObjs);
}else{
if(obj.constructor.name=="TextFrame"){
switch(rbg.selectedButton) {
case 0 : obj.parentStory.fillColor="Black"; break ;
case 1 : obj.parentStory.horizontalScale=100;
obj.parentStory.verticalScale=100; break ;
case 2 : obj.fit(FitOptions.FRAME_TO_CONTENT); break ;
case 3 : obj.parentStory.fillColor="Black";
obj.parentStory.horizontalScale=100;
obj.parentStory.verticalScale=100; break ;
case 4 : obj.parentStory.fillColor="Black";
obj.fit(FitOptions.FRAME_TO_CONTENT); break ;
case 5 : obj.parentStory.horizontalScale=100;
obj.parentStory.verticalScale=100;
obj.fit(FitOptions.FRAME_TO_CONTENT); break ;
case 6 : obj.parentStory.fillColor="Black";
obj.parentStory.horizontalScale=100;
obj.parentStory.verticalScale=100;
obj.fit(FitOptions.FRAME_TO_CONTENT); break ;
default : break ;
}
}
}
}
}

groupLoop(selObjs);

0 件のコメント:

コメントを投稿