And, generally, it is best to use prebuilt Motif dialog facilities when possible because this practice maintains consistency across applications. I personally like the X toolkit and the Motif widget set. The one aspect of Motif that really bugs me is the failure to provide an extensible dialog widget of any kind. The procedural abstraction provided by the dialog convenience functions is awkward at best. With the prebuilt dialogs, it is relatively difficult and somewhat perverse to create dialog boxes with varying numbers of buttons and labels.
Programmers often have to unmanage specific buttons or change a command button's label.
In the latter case, programmers must thereafter reference the now-modified button with the preconfigured callback nomenclature that is now incorrect and potentially misleading. With large applications this practice alone wreaks havoc on source code readability. With this in mind, let's design a general-purpose dialog object for xrolodex and other applications. For example, Figure 5 illustrates a dialog box that xrolodex might present if a user attempts to quit without saving modifications to the current database. The advantages of this type of general-purpose dialog are immediately evident.