簡易コンソール - [[PS_Script]]
目次
デバッグ用簡易コンソール
レンダー乙女とかで書いた簡易コンソール(同じもの)です。
下側のテキストボックスにコマンドを打ち込んで、大きなボタンを押すと実行してリザルトを上のボックスに表示します。エラーメッセージも同様に上のボックスに表示。
ファイル読み書きは、下のボックスが対象です。上側のボックスの内容を保存したい場合は、コピペしてください。
このコンソールをPhotoshopで使用する場合は、AEとちょっぴり使い勝手が変わります。
CSで使う場合は、スクリプトフォルダに*.jsで保存します。(CS2以降は*.jsx)
Photoshopのスクリプト環境ではこのコンソールはパレットではなくダイアログで動くので、コンソール使用中に通常のGUIでドキュメントを操作することはできません。
コンソールを終了するには、エスケープキーを押してください。
後はまぁ、大方AEとおんなじ感じです。
ソース採録
//(お試しコンソール)
// Nekomataya/kiyo 2005.11.07
// 改行コード調整追加 11.08
// ファイル読み込み追加 11.09
// mac上での表示の改善・簡易GUIライブラリ試験 11.17
// 調整 11.23 これでおわりかな
// 保存対応することにした。一応
// ついでにPhotoshop対応 inDesignとか他のCS組はもってないのでワカリマセン。12/21
try{if(app.isProfessionalVersion)
{
app.name="Adobe AfterEffects";
var isWindows=(system.osName.match(/Windows/))?true:false;
}else{
isWindows=false;
};
if(isWindows){var LineFeed="\x0d\x0a"}else{var LineFeed="\x0d"};
}catch(ERR){
isWindows =true;
}
/*
edittextに初期状態で256バイトでペーストや手入力が打ち止めになる現象がある。
スクリプトでのデータ追加を行うと動的にメモリが確保されているようなので、
これは、edittextに無理やり空白を追加してフラッシュするメソッド。
このバグが解消したら不要。 引数はループ回数。1回アタリ1kb
AE7.0 256バイトではなくなったが同バグ依然有り。さらに削除操作後にキー入力不全追加
ただし、コンソール機能はオリジナルのスクリプトエディタがあるので、このツール自体は
お役御免
*/
function getScript()
{
if(isWindows){
var scriptfile = File.openDialog("読み込むスクリプトを選んでください","JSX-Script(*.jsx *.js):*.JSX;*.JS");
}else{
var scriptfile = File.openDialog("読み込むスクリプトを選んでください");
}
if (scriptfile && scriptfile.name.match(/^[a-z_\-\#0-9]+\.jsx?$/i)){
var myOpenfile = new File(scriptfile.fsName);
myOpenfile.open("r");
myContent = myOpenfile.read();
return myContent.replace(/(\r\n?|\n)/g,LineFeed);
}else {return false;};
}
function addBuf_(KB)
{
var xStr="";
for(m=0;m<KB;m++){for(n=0;n<1024;n++) xStr+=" "};
this.text +=xStr;
this.text ="";
return this.text;
};
function saveText()
{
if (! commandBox.text){alert("保存するデータがありません");return false;}
if(isWindows)
{
var mySavefile = File.saveDialog("書き出しのファイル名を指定してください","nasXPSheet(*.js *.jsx *.txt):*.JS;*.JSX;*.TXT");
}else{
var mySavefile = File.saveDialog("書き出しのファイル名を指定してください","");
}
if(! mySavefile){return};
if(mySavefile.exists)
{
if(! confirm("同名のファイルがすでにあります.\n上書きしてよろしいですか?")){return false;};
}
if (mySavefile && mySavefile.name.match(/^[a-z_\-\#0-9]+\.(jsx?|txt)$/i)){
var myOpenfile = new File(mySavefile.fsName);
myOpenfile.open("w");
myOpenfile.write(commandBox.text);
myOpenfile.close();
}else {
alert("拡張子は js/jsx/txt を指定してください。")
return false;
};
}
// GUI Setup
//簡易GUIライブラリ
var leftMargin=12;
var rightMargin=24;
var topMargin=2;
var bottomMargin=24;
var leftPadding=8;
var rightPadding=8;
var topPadding=2;
var bottomPadding=2;
var colUnit=120;
var lineUnit=24;
var quartsOffset=(isWindows)? 0:4;
function nasGrid(col,line,width,height){
left=(col*colUnit)+leftMargin+leftPadding;
top=(line*lineUnit)+topMargin+topPadding;
right=left+width-rightPadding;
bottom=(height <= lineUnit)?top+height-bottomPadding-quartsOffset:top+height-bottomPadding;
return [left,top,right,bottom];
}
myWinsize=[512,480]; myWinOffset=[239,40];
if (app.name=="Adobe AfterEffects"){
var testConsole= new Window("palette","nas-Console",[myWinOffset[0],myWinOffset[1],myWinsize[0]+myWinOffset[0],myWinsize[1]+myWinOffset[1]]);
}else{
var testConsole= new Window("dialog","nas-Console",[myWinOffset[0],myWinOffset[1],myWinsize[0]+myWinOffset[0],myWinsize[1]+myWinOffset[1]]);
}
var titleLabel=testConsole.add("statictext",nasGrid(0,0,480,24),"試験コンソール nas(u) tools (Nekomataya/2005)",{multiline:false});titleLabel.justify="right";
var resultBox=testConsole.add("edittext",nasGrid(0,1,480,192),"",{multiline:true});
if(app.name=="Adobe AfterEffects"){resultBox.addBuf=addBuf_;}
var commandBox=testConsole.add("edittext",nasGrid(0,11,480,192),"",{multiline:true});
if(app.name=="Adobe AfterEffects"){commandBox.addBuf=addBuf_;}
actButton=testConsole.add("button",nasGrid(0,9,480,24),"evalCommand");
cluButton=testConsole.add("button",nasGrid(0,10,120,24),"clearResult");
clbButton=testConsole.add("button",nasGrid(1,10,120,24),"clearCommand");
loadButton=testConsole.add("button",nasGrid(2,10,120,24),"load");
saveButton=testConsole.add("button",nasGrid(3,10,120,24),"save");
actButton.onClick = function (){try{resultBox.text += eval(commandBox.text)+LineFeed;}catch(err){resultBox.text +=err.toString()+LineFeed;}};
cluButton.onClick = function (){resultBox.text ="";};
clbButton.onClick = function (){commandBox.text ="";};
loadButton.onClick = function (){newContents=getScript();if(newContents){commandBox.text=newContents;}};
saveButton.onClick = function (){saveText();};
// closeButton.onClick = function (){this.parent.close();};
testConsole.show();
if(app.name=="Adobe AfterEffects")
{ resultBox.addBuf(20);
commandBox.addBuf(10);
}
commandBox.text="/*\tこのボックスにコードを書き込んでください\t*/"+LineFeed;
//理由はわからないが初期状態だと256bでペーストが打ち止めになるのでスクリプト側からedittextの拡張をかけてやる。
CS2以降なら、拡張ツールキットのエディタが使えるのでこれを使わなくても平気…
でもちょこっとオブジェクトの動作を確認するときとか割と便利です。
Powered by YukiWiki 2.1.2a / Modified by Nekomataya.

