Dialog Boxes
************

Dialog Box Format
=================

A dialog box description is a list.

  * The first element of the list is a string to display in the dialog box.

  * The rest of the elements are descriptions of the dialog box's buttons. Each one is a vector of three elements:

       - The first element is the text of the button.

       - The second element is the callback.

       - The third element is t or nil, whether this button is selectable.

If the callback of a button is a symbol, then it must name a command. It will be invoked with call-interactively.  If it is a list, then it is evaluated with eval.

One (and only one) of the buttons may be nil.  This marker means that all following buttons should be flushright instead of flushleft.

The syntax, more precisely:

        form		:=  <something to pass to `eval'>
        command	:=  <a symbol or string, to pass to `call-interactively'>
        callback 	:=  command | form
        active-p	:=  <t, nil, or a form to evaluate to decide whether this
     		    button should be selectable>
        name		:=  <string>
        partition	:=  'nil'
        button	:=  '['  name callback active-p ']'
        dialog	:=  '(' name [ button ]+ [ partition [ button ]+ ] ')'

Dialog Box Functions
====================

 -- Function: popup-dialog-box dbox-desc
     This function pops up a dialog box.  DBOX-DESC describes how the dialog box will appear (see Dialog Box Format).

See Yes-or-No Queries, for functions to ask a yes/no question using a dialog box.