0
0

InDesign CC 2024 プラグインでダイアログを使う

Last updated at Posted at 2024-09-09

inDesignでダイアログを表示させる場合、内容を表示するだけのときと、ダイアログにtextareaなど、値を入力し、その値を使ってその後の処理を行うときで全く異なるダイアログを生成する必要があったため、メモ

環境

1, ダイアログに内容を表示しておくだけの場合

function RsDialog(text) {
  // ScriptUIダイアログを作成
  var dialog = new Window("dialog", "Results Dialog");

  // テキストエリアを追加
  var textarea = dialog.add("edittext", [0, 0, 640, 200], 'ここにテキストを入力...', {multiline: true});
  textarea.text = text;

  // OKボタンを追加
  var okButton = dialog.add("button", undefined, "OK");

  // ダイアログを表示
  okButton.onClick = function () {
    // テキストエリアの内容を取得
    dialog.destroy();
  };
  return dialog;
}
  
  // 実行
  (function(){
    new RsDialog('come').show();
  })();

2, ダイアログに入力項目を入れておく場合

1の方法で入力項目をダイアログに設置した場合、入力値は取得できるが、背景で開いているドキュメントの要素にアクセスできなかった。
ダイアログに入力された値をドキュメントに反映させるため、以下の方法を用いた

var selectedMode = 0;
var inputContent = '';

function myDialog() {
  var myDialog = app.dialogs.add({name:"My Dialog"});
	with(myDialog){
    with(myDialog.dialogColumns.add()){
      // ラジオボタンの追加
      with(dialogRows.add()){
        with(borderPanels.add()){
          var myButtons = radiobuttonGroups.add();
          with(myButtons){
              radiobuttonControls.add({staticLabel:"チェック1", checkedState:true});
              radiobuttonControls.add({staticLabel:"チェック2"});
          }
        }
      }
      // EditTextの追加
      with (dialogRows.add()) {
        var myEditText = textEditboxes.add({editContents: "", minWidth: 200});
      }
    }
  }

	var myReturn = myDialog.show();
	if (myReturn == true){
		selectedMode = myButtons.selectedButton;
        inputContent = myEditText.editContents;
		myDialog.destroy();
		myFunction();
	}
	else{
		myDialog.destroy();
    };
}

function myFunction() {
  var doc = app.activeDocument;
  alert(selectedMode + '\n' + inputContent);
}


// 実行
(function(){
  myDialog();
})();
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0