




 
Here is a very simple example that displays a 
Cancel
 button in a dialog, and when that button is pressed the dialog is cancelled. Note that 
display-dialog
 must receive an interface, so an interface is created for the button by using the function 
make-container
.
(display-dialog
(make-container
(make-instance
'push-button
:text "Press this button to cancel"
:callback 'abort-dialog)
:title "My Dialog"))
 
 
The function 
abort-dialog
 cancels the dialog returning the values 
nil
 and 
nil
, which represent a return result of 
nil
 and the fact that the dialog was cancelled, respectively. Note also that 
abort-dialog
 accepts any values and just ignores them.
The next problem is to create a dialog that can return a result. Use the function 
exit-dialog
 which returns the value passed to it from the dialog. The example below shows a simple string prompter.
(display-dialog
(make-container
(make-instance
'text-input-pane
:callback-type :data
:callback 'exit-dialog)
:title "Enter a string:"))
Both of these examples are very simple, so here is a slightly more complicated one which creates a column containing both a text-input-pane and a Cancel button.
(display-dialog
(make-container
(list
(make-instance
'text-input-pane
:callback-type :data
:callback 'exit-dialog)
(make-instance
'push-button
:text "Cancel"
:callback 'abort-dialog))
:title "Enter a string:"))
Note that this looks very similar to the dialog created by 
prompt-for-string
 except for the fact that it does not provide the standard 
OK
 button.
It would be simple to add an 
OK
 button in the code above, but since almost every dialog needs these standard buttons, the CAPI provides a higher level function called 
popup-confirmer
 that adds the standard buttons for you. Also it arranges for the 
OK
 and 
Cancel
 buttons to respond to the 
Return
 and 
Escape
 keys respectively. 
popup-confirmer
 is discussed in the next section.
CAPI User Guide (Unix version) - 30 Aug 2011