ButtonState, Button, TextButton, PushButton, RadioButton, CheckBox
- interactive buttons
#include <InterViews/button.h>
Button is a class of interactors that can set the value of
a piece of state. ButtonState is a class of objects that contain a
value and a list of buttons that can set its value. A value is either an
integer or an arbitrary pointer.
TextButton is a subclass of Button that has an
associated text label to be displayed inside or to the right of the button.
PushButton, RadioButton, and CheckBox are subclasses of
TextButton that provide particular displays for buttons. Each kind of
button will display itself differently for each of the five possible cases:
``enabled'', when the button is listening to input, ``disabled'', when the
button is not listening, ``chosen'', when the button's value is equal to its
button state's value, ``hit'', when a button that is not chosen first
receives a DownEvent, and ``same-hit'', when a button that is chosen
receives a DownEvent.
When a button receives a DownEvent, it calls the virtual Refresh()
to update its display. It then reads input waiting for an UpEvent. If the
UpEvent coordinates are also within the button, then it calls the virtual
Press(). The default Press operation sets the associated state's value to
the button's value.
A button can have a list of attached buttons. When a button is not
chosen its attached buttons are ``disabled'', meaning they ignore all input
events.
- void PushButton(const
char* text, ButtonState* s, int v)
- void PushButton(const
char* text, ButtonState* s, void* v)
- Construct a button with text in the center and a polygon on the
outside. The polygon is like a rectangle, but with rounded corners. When
chosen, the entire button is drawn with foreground and background colors
reversed.
- void
RadioButton(const char* text, ButtonState* s, int v)
- void
RadioButton(const char* text, ButtonState* s, void* v)
- Construct a button with a circle on the left and text on the right.
When hit, a second circle is drawn inside the first. When chosen, a filled
circle is drawn inside the outer circle.
- void CheckBox(const
char* text, ButtonState* s, int on, int off)
- void CheckBox(const
char* text, ButtonState* s, void* on, void* off)
- Construct a button with a rectangle on the left and text on the
right. When hit, a second rectangle is drawn inside the first. When
chosen, two diagonal lines are drawn connecting the opposite corners of
the rectangle. When a checkbox is pressed the first time, it sets s
to off if the value is on and sets s to on
otherwise. Subsequent presses swap the values of the checkbox and
s.
- void
Attach(Button*)
- Add to this button's list of associated buttons. These buttons are enabled
when the button is chosen and disabled when it is not chosen.
- void
Detach(Button*)
- Remove a button from this button's list of associated buttons.
- void
Disable()
- Stop listening to input events. Disabled buttons are typically ``grayed
out'' by drawing a half-filled rectangle in the background.
- void
Enable()
- Start listening to input events.
- void
Choose()
- Make the button as chosen, enabling any associated buttons.
- void
Handle(Event&)
- If the event type is DownEvent and the button is enabled, call Refresh and
read events until an UpEvent occurs. If the button is the target of the
UpEvent, then call Press.
- virtual void
Press()
- Take the appropriate action for the button being pressed. The default is
to set the associated state to the button's value, which will trigger all
related buttons to update their display.
- virtual void
Refresh()
- Update the button display.
- void
SetDimensions(int width, int height)
- Specify the natural size of the button. The default size is a function of
the size of the text. This routine is obsolete; use Interactor::Reshape
instead.
- void
UnChoose()
- Mark the button as not chosen, disabling any associated buttons.
Event(3I), Interactor(3I)