Gadgets are objects that make up an interface: the menus, buttons, sliders, check lists, tool bars, menu bars, and so on. Gadget classes may support three protocols, value, items, and activate.
value protocol respond to the gadget-value message, a value-changed callback, and have a setter function associated with them.
items protocol respond to gadget-items and have a gadget setter function associated with them.
activate protocol have an activation callback associated with them.
Gadgets have a set of slots, or properties, associated with them: gadget-label, gadget-value, gadget-items, and gadget-enabled? Every gadget has some or all of these properties.
gadget-label This slot holds the label that appears on the gadget on the screen. If a gadget does not have a label, the gadget-label function returns #f.
gadget-value This slot holds the value(s) of the gadget. If a gadget does not have any values, the gadget-value function returns #f.
gadget-items This slot is a list of the contents of the gadget. If the gadget does not have items, for example a button, gadget-items returns nothing.
gadget-enabled?
gadget-enabled? slot.
An introduction to the protocols supported by different sorts of gadget can also be found in the Building Applications Using DUIM book.