Managing Events: Accelerators
An accelerator manages a single user event that occurs in the container to which the accelerator is attached. An accelerator is the direct connection from this single user event to a function call. You can declare a given function to be called if an appropriate event occurs. If the appropriate event occurs, the accelerator triggers a visible response from the container to which it is attached.
You can also install an instance of the IlvContainerAccelerator class in an accelerator list. This instance contains the description of the event to be watched for, and a member function of this class is called when this event occurs.
For more details, see:
Member Functions
Several member functions deal with accelerators:
-
addAccelerator Installs a new accelerator in the container. In the example below, the function Quit is triggered when one event matches the keyboard event “release Q key.”
IlvRect size(0, 0, 300, 300); IlvContainer* cont = new IlvContainer(display, "Cont", "My Window", size, IlTrue, IlFalse); cont->addAccelerator(Quit, IlvKeyUp, ’Q’, 0);
|
-
removeAccelerator Removes the association between the event description given in the argument and the action previously set by addAccelerator.
-
getAccelerator Queries a container for a particular accelerator action and user argument.
Implementing Accelerators: IlvContainerAccelerator
If you need to add parameters to a callback function, you can implement accelerators by means of class subtyping, through the IlvContainerAccelerator class.
The member functions dealing with this class are the following:
-
addAccelerator Installs an IlvContainerAccelerator object in the container. The previous example can thus be written in the following way:
IlvContainerAccelerator* acc = new IlvContainerAccelerator(Quit, IlvKeyUp, 'Q', 0); cont->addAccelerator(acc); |
-
removeAccelerator Removes the given accelerator argument from the container list. The accelerator is not deleted.
-
getAccelerator Returns a pointer to the IlvContainerAccelerator instance that matches the given event argument, or 0 if no matching accelerator exists.
Predefined Container Accelerators
Views provides a number of predefined accelerators to allow your programs to easily manipulate the visible aspect of the objects that are stored in a container:
Event Type |
Key or Button |
Action |
IlvKeyDown |
i |
Sets the transformer to identity. |
IlvKeyDown |
<Right> |
Moves the view to the left. |
IlvKeyDown |
<Left> |
Moves the view to the right. |
IlvKeyDown |
<Down> |
Moves the view to the top (decreasing x) |
IlvKeyDown |
<Up> |
Moves the view to the bottom. (increasing x) |
IlvKeyDown |
Z |
Zooms into the view. |
IlvKeyDown |
U |
Zooms out from the view. |
IlvKeyDown |
R |
Rotates the view 90 degrees counterclockwise. |
IlvKeyDown |
f |
Computes a new transformer so that every object can be seen. |