ButtonFeedback.form
The ButtonFeedback property describes a mapping between events and feedback actions.
Events may be a single atom such as "MouseMotion" or a parenthesized list of atoms such as "Ctrl Shift Red Down". These two possibilities are illustrated in the following form:
ButtonFeedback 19890713 (
( (user event atoms) "FeedbackString")
(special feedback atom "FeedbackString") )
and in the following example (from a two-state button):
ButtonFeedback 19890713 (
( (Red Down) "((BeginButton)(AreaColorGray)(EndButton))")
(ChangeStateFT "((BeginButton)(AreaColorBlack)(EndButton))")
(ChangeStateTF "((BeginButton)(AreaColorWhite)(EndButton))")
)
Feedback actions may be single actions, such as an editor specific rope, or feedback handler with parameters, or a list of these, as illustrated in the following form:
ButtonFeedback 19890713 (
(special feedback atom "FeedbackString")
(special feedback atom (handler name handler parameters))
(special feedback atom ("Feedback string" (handler handler parameters)))
)
and in the following example (from a radio button):
ButtonFeedback 19890713 (
((MouseMoved MouseEntered) (Cursor bullseye))
(TurnOn ((Cursor crossHairsCircle) "((BeginButton)(AreaColorBlack)(EndButton))"))
(TurnOff "((BeginButton)(AreaColorWhite)(EndButton))")
)
More formally, the ButtonFeedback property has the form:
ButtonFeedback 19890710 (tableEntry*)
where
tableEntry  ::= (event entryAction)
event   ::= applicationEvent | (qualifier* Up) | (qualifier* Down) | MouseMotion
qualifier  ::= Red | Yellow | Blue | Control | Shift
entryAction ::= singleAction | (singleAction*)
singleAction ::= action | (handlerName parameter*)
action   ::= "<editor-specific rope>"
handlerName ::= <name of a feedback handler>
parameter  ::= <handler specific parameter>
ButtonFeedback 19890801 (
($MouseMoved (Cursor bullseye))
(($Down $Up) (Cursor crossHairs))
($TurnOn (Send BeginButton Invert EndButton))
($TurnOff {
(Cursor invisible)
(Editor BeginButton (SelectFromValue FALSE 1 TRUE 2) EndButton)
(Send BeginButton <SetLineColor Red> (SetFillColor Blue))
(Send BeginButton Normal EndButton)}))
PopUpButton (
(<5 ApplyLooks> "bold" "Makes things bold")
(<(GetButtonValue Look) ApplyLooks> "look" "makes things looks")
(<(Retarget Tioga 5 Applylooks)> "look" "makes tioga looks")