[javascript]photoshopの独自GUI、ボタンを押したら実行する記述方法

gui_photoshop_topimage

前回作ったダイアログウィンドウのボタンやリストのGUIパーツは、今の段階では押しも引いても何も反応しない只の飾りです。今回は、今はまだ只の飾り状態になってるGUIパーツを意味のあるモノにしていこうと思います。

前回の記事:
[photoshop]javascriptでPhotoshopのダイアログウィンドウを表示

 

ボタンを押したら実行される機能

「[実行]ボタンを押すと、開いてる画像にフィルターがかかる」

これが組み込もうとしてる機能です。

そして2つ選択肢を入れようと思います。

  • [実行]ボタンを押す前にラジオボタンで、複製を実行してその複製した画像にフィルターをかけるのか、もしくは、複製しない、最初から開いている画像にフィルターをかけるのか。
  • 2種類のフィルターがドロップダウンリストにある、そのどちらかを選んでから[実行]ボタンを押すと、ラジオボタンで選択された画像ドキュメント、複製画像もしくは元々開かれてる画像に、選ばれたフィルターがかかる。

他には、[実行][キャンセル]ボタンを押すとウィンドウが閉じる。

あともう一つ、ウィンドウが立ち上がると、既に開いているフィルターをかける対象の画像ドキュメントのファイル名をエディットテキストの窓に表示する。

 

javascriptで実行部分を付け足す

 
var activeDocument_name = activeDocument.name;//アクティブになっているドキュメントの名前を取得								


var gUIWindow = new Window('dialog','テストウィンドウ');

 gUIWindow.bounds = [200,100,580,280];

gUIWindow.activeDocPnl = gUIWindow.add("panel",[10,5,370,90],"アクティブドキュメント");
gUIWindow.activeDocPnl .editText = gUIWindow.activeDocPnl .add("edittext",[10,15,345,33], activeDocument_name);
gUIWindow.activeDocPnl .editText.enabled = false

gUIWindow.activeDocPnl .radiorBtn1 = gUIWindow.activeDocPnl .add("radiobutton",[10,40,200,58], "オリジナル");
gUIWindow.activeDocPnl .radiorBtn2 = gUIWindow.activeDocPnl .add("radiobutton",[10,55,200,75], "複製");

gUIWindow.activeDocPnl .radiorBtn1.value = true;

gUIWindow.dList = gUIWindow.add("dropdownlist",[15,110,365,130],["ぼかし(ガウス)20","ダスト&スクラッチ20,10"]);
gUIWindow.dList.selection = 0;

gUIWindow.filterPnl = gUIWindow.add("panel",[10,90,370,140],"フィルターの処理");

gUIWindow.okBtn = gUIWindow.add("button",[80,145,175,170], "実行");
gUIWindow.cancelBtn = gUIWindow.add("button",[190,145,285,170], "キャンセル");

gUIWindow.okBtn.onClick= function()
{
	if(gUIWindow.activeDocPnl.radiorBtn2.value)
	{

		activeDocument.duplicate();
	}
	else{;
	}

	if(0 == gUIWindow.dList.selection)
	{
		activeDocument.activeLayer.applyGaussianBlur(20.0); //ガウス
	}
	else if(1 == gUIWindow.dList.selection)
	{
		activeDocument.activeLayer.applyDustAndScratches(20,10); //ダスト&スクラッチ
	}
	else{;}

	gUIWindow.close();

}

gUIWindow.cancelBtn.onClick = function()
{
	gUIWindow.close();
}								

gUIWindow.show();
 

付け足した部分の説明:

GUIの部分以外の説明をします。

var activeDocument_name = activeDocument.name;
既に開かれている一番手前の画像の名前を取得します。

gUIWindow.activeDocPnl .editText = gUIWindow.activeDocPnl .add(“edittext”,[10,15,345,33], activeDocument_name);
取得した画像の名前 activeDocument_name がエディットテキストの窓に表示されるようにする。

gUIWindow.okBtn.onClick= function()
実行ボタンが押された場合

if(gUIWindow.activeDocPnl.radiorBtn2.value)
ラジオボタンの2番目がチェック。
チェックされていれば複製する。

activeDocument.duplicate();
複製する

if(0 == gUIWindow.dList.selection)
ドロップダウンリストの0番の項目が選ばれているか否か

activeDocument.activeLayer.applyGaussianBlur(20.0);
フィルタ ぼかし(ガウス) を半径20.0で実行

else if(1 == gUIWindow.dList.selection)
ドロップダウンリストの1番の項目が選ばれているか否か

activeDocument.activeLayer.applyDustAndScratches(20,10);
フィルタ ダスト&スクラッチ 半径と閾値を20と10にして実行

gUIWindow.close();
ダイアログウィンドウを閉じる

gUIWindow.cancelBtn.onClick = ()
キャンセルボタンが押された場合


実行:


複製しないで ぼかし(ガウス)を実行


複製して ダスト&スクラッチ を実行

まとめ

特別難しいい事はしていません。
今回やったことは、
ボタンが押されたらfunction()で請け負ってvalueで値を受けとり、
値を元に選択をして、選択した方の効果を実行する。

これだけです。

何かしら有益な情報であればと思います。


Twitter Facebook Pocket LINE はてブ

おすすめの関連記事

コチラの記事も読まれています
あわせてよく読まれている記事