[Photoshopスクリプト] ラジオボタンとコマンドボタンを載せたダイアログ操作

[Photoshopスクリプト] ラジオボタンとコマンドボタンを載せたダイアログ操作

似たような動作を1つずつショートカットに割り当てちゃうと、キーももったいないし使うにも覚えるのめんどくさいなと思い、ダイアログで選べたらいいなぁと思って作ったものの箱部分です。メモっておくと汎用性高そうな気がして。


こういうものを作ります

仕様

上の画像のとおり、複数のラジオボタンが設置されたウィンドウを表示して、選択された項目に対応する動きをします。キャンセルボタンをクリックされたら何もしません。

なお、作成時の環境は Win7/10、CC2019 です。

準備

.jsxファイルの作成と実行までの方法はこちらの記事をご参照ください。

参考

めちゃめちゃお世話になりました! ありがとうございます!

コード

//キャンセル検出フラグ
var cancel = false;

//ウィンドウ設定([左からの座標, 上からの座標, 幅, 高さ]で指定)
win = new Window("dialog", "サンプル", [0, 0, 300, 180]);
//コマンドボタン
okbtn = win.add("button", { width:100, height:25, x:50, y:120 }, "OK");
cancelbtn = win.add("button", { width:100, height:25, x:150, y:120 }, "キャンセル");
//ラジオボタン
win.rBtn1 = win.add("radiobutton", { width:0, height:0, x:50, y:25 }, "タスク1");
win.rBtn2 = win.add("radiobutton",{ width:0, height:0, x:50, y:50 }, "タスク2");
win.rBtn3 = win.add("radiobutton",{ width:0, height:0, x:50, y:75 }, "タスク3");
//既定値の設定
win.rBtn1.value = true;

//OKボタンがクリックされたとき
okbtn.onClick = function () {
	win.close();
}
//キャンセルボタンがクリックされたとき
cancelbtn.onClick = function () {
	cancel = true;
	win.close();
}

//ウィンドウ表示
win.center();
win.show();

//ウィンドウが閉じた後の処理
if ( cancel == false ){
	if ( win.rBtn1.value == true ){
		task1(); //タスク1実行
	}
	if ( win.rBtn2.value == true ){
		task2(); //タスク2実行
	}
	if ( win.rBtn3.value == true ){
		task3(); //タスク3実行
	}
}

//タスク1
function task1(){
	alert("タスク1実行");
}
//タスク2
function task2(){
	alert("タスク2実行");
}
//タスク3
function task3(){
	alert("タスク3実行");
}

5行目でダイアログの大きさを決めていますが、左/上からの座標をゼロにしているのでこのままだと画面左上の指定になっています。画面中央に表示するためのコードは27行目です。

コマンドボタンはwidthheightでボタンの大きさが変わりますが、ラジオボタンは変化なかったのでゼロにしています。私の環境だけだったらアレなので確認のうえ適宜ご修正くださいませ。

フォトショのプログラミング、たのしいです! JavaScriptはいままでそんなにやってこなかったのですが、違う言語もやってみると頭の体操みたいでおもしろいですね。

公開日:2019/07/25

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)

YouTubeでQ&Aコンテンツを企画しています

運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。