ダイアログボックスとはポップアップメニューの一種です。外見は多少異なり常にフレーム中央に表示されて、階層を1つしかもたず1つ以上のボタンがあります。ユーザーが“yes”、“no”、および別のいくつかの候補で応答ができる質問を尋ねるのがダイアログボックスの主な用途です。単一のボタンではユーザーに重要な情報の確認を強いることもできます。関数y-or-n-p
やyes-or-no-p
は、マウスのクリックで呼び出されたコマンドから呼び出された際には、キーボードのかわりにダイアログボックスを使用します。
この関数はポップアップダイアログボックスを表示してユーザーが何を選択したかの指標をリターンする。引数contentsは提供する選択肢を指定する。これは以下のフォーマットをもつ:
(title (string . value)...)
これはx-popup-menu
にたいして単一のpaneを指定するリストのように見える。
リターン値は選択された候補のvalue。
x-popup-menu
の場合と同じように、このリストの要素はコンスセル(string
. value)
のかわりに単なる文字列かもしれない。これは選択不可のボックスを作成する。
このリスト内にnil
がある場合には、それは左手側と右手側のアイテムを分ける。つまりnil
より前のアイテムは左、nil
より後のアイテムは右に表示される。リスト内にnil
を含めない場合には、およそ半数ずつが両サイドに表示される。
ダイアログボックスは常にフレームの中央に表示される。引数positionはどのフレームかを指定する。可能な値はx-popup-menu
の場合と同様だが、正確な座標や個別のウィンドウは問題ではなくフレームだけが問題となる。
headerが非nil
ならボックスのフレームタイトルは‘Information’、それ以外は‘Question’になる。前者はmessage-box
(message-boxを参照)にたいして使用される(テキスト端末上ではボックスタイトルは表示されない)。
いくつかの構成ではEmacsは本当のダイアログボックスを表示できないので、かわりにフレーム中央のポップアップメニュー内に同じアイテムを表示する。
たとえばウィンドウマネージャーを使用して有効な選択を行うことなくユーザーがダイアログボックスを取り除いた場合には、通常はquitしてx-popup-dialog
はリターンしない。