Every button has a button type, which defines default values for the button’s properties. Button types are arranged in a hierarchy, with specialized types inheriting from more general types, so that it’s easy to define special-purpose types of buttons for specific tasks.
define-button-typename &rest properties
Define a button type called name (a symbol).
The remaining arguments
form a sequence of property value pairs, specifying default
property values for buttons with this type (a button’s type may be set
by giving it a
type property when creating the button, using
:type keyword argument).
In addition, the keyword argument
:supertype may be used to
specify a button-type from which name inherits its default
property values. Note that this inheritance happens only when
name is defined; subsequent changes to a supertype are not
reflected in its subtypes.
define-button-type to define default properties for
buttons is not necessary—buttons without any specified type use the
button—but it is encouraged, since
doing so usually makes the resulting code clearer and more efficient.