SoEventCallback.3coin2

Langue: en

Version: 378123 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

Sommaire

NAME

SoEventCallback -

The SoEventCallback class provides functionality for catching events.

Use SoEventCallback nodes in the scenegraph for catching user interaction events with the scenegraph's render canvas.

SYNOPSIS


#include <Inventor/nodes/SoEventCallback.h>

Inherits SoNode.

Public Member Functions


SoEventCallback (void)

void setPath (SoPath *path)

const SoPath * getPath (void)

void addEventCallback (SoType eventtype, SoEventCallbackCB *f, void *userdata=NULL)

void removeEventCallback (SoType eventtype, SoEventCallbackCB *f, void *userdata=NULL)

SoHandleEventAction * getAction (void) const

const SoEvent * getEvent (void) const

const SoPickedPoint * getPickedPoint (void) const

void setHandled (void)

SbBool isHandled (void) const

void grabEvents (void)

void releaseEvents (void)

Static Public Member Functions


static void initClass (void)

Protected Member Functions


virtual ~SoEventCallback ()

virtual void handleEvent (SoHandleEventAction *action)

Detailed Description

The SoEventCallback class provides functionality for catching events.

Use SoEventCallback nodes in the scenegraph for catching user interaction events with the scenegraph's render canvas.

This is how event handling works in Coin: when the user interacts with the render canvas, for instance by using the mouse pointer or by hitting the keyboard, the GUI interface toolkit (ie SoQt, SoWin, SoXt, Sc21 ...) will catch the event and translate it from a windowsystem-specific event to a generic Coin event. (For the types of generic Coin events, see the classes derived from SoEvent.) This event will then be wrapped inside a SoHandleEventAction and applied to the scenegraph. All this happens within the So[Qt|Xt|Win|...] toolkit.

The SoHandleEventAction then traverses the scenegraph, delivering the event to any node type which 'is interested' in it. The SoEventCallback nodetype catches the action and forwards the event to a callback function set up by the application programmer.

Be careful about which position in the scenegraph you insert SoEventCallback nodes if you are also using any of the built-in Coin library elements which are interested in user interaction events (like for instance the dragger and manipulator classes and the SoSelection nodes). These Coin elements might catch the event for themselves, short-circuiting the SoHandleEventAction traversal so the event will never reach the SoEventCallback node(s) you insert.

FILE FORMAT/DEFAULTS:

     EventCallback {
     }
 
 


 

Constructor & Destructor Documentation

SoEventCallback::SoEventCallback (void)Constructor.

SoEventCallback::~SoEventCallback () [protected, virtual]Destructor.

References SoBase::unref().

Member Function Documentation

void SoEventCallback::initClass (void) [static]Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.

Reimplemented from SoNode.

void SoEventCallback::setPath (SoPath * pathptr)Sets the path that must be picked before the registered callbacks are invoked. If NULL, callbacks will be invoked for every event that matches the callback event type.

See also:

getPath()

References SoPath::copy(), SoBase::getRefCount(), SoDebugError::postWarning(), SoBase::ref(), and SoBase::unref().

const SoPath * SoEventCallback::getPath (void)Returns the path that must be picked before callbacks are invoked.

See also:

setPath()

void SoEventCallback::addEventCallback (SoType eventtype, SoEventCallbackCB * f, void * userdata = NULL)Set up a callback function f which will be invoked for the given eventtype. userdata will be given as the first argument to the function.

References SbList< Type >::append().

void SoEventCallback::removeEventCallback (SoType eventtype, SoEventCallbackCB * f, void * userdata = NULL)Unregister the given callback function f.

References SbList< Type >::getLength(), SoDebugError::postWarning(), and SbList< Type >::remove().

SoHandleEventAction * SoEventCallback::getAction (void) constReturns the SoHandleEventAction instance currently traversing the scene graph with the SoEvent-derived event object.

const SoEvent * SoEventCallback::getEvent (void) constReturns a pointer to the event object which is currently being sent through the scenegraph.

If your application code handles the event, you probably want to call SoEventCallback::setHandled() to notify the SoHandleEventAction that it should stop traversing the scenegraph with the event.

References SoHandleEventAction::getEvent().

const SoPickedPoint * SoEventCallback::getPickedPoint (void) constReturns the picked point for the current handle event traversal.

This is obviously only related to events which can be considered 'pick-style' events, like mousebutton presses.

References SoHandleEventAction::getPickedPoint().

void SoEventCallback::setHandled (void)Use this method from a callback function to notify the node that the event has been handled.

The rest of the callbacks registered with the node will still be called, but further SoEventCallback nodes in the scene will not be notified about the event, neither will any other Coin elements in the scenegraph (like for instance SoDragger objects, SoSelection nodes or manipulators).

Since callbacks registered within the same SoEventCallback node will still be invoked after the event has been handled, it is likely that you should use SoEventCallback::isHandled() to check for this condition from your callback functions.

References SoDebugError::postWarning(), and SoHandleEventAction::setHandled().

SbBool SoEventCallback::isHandled (void) constCheck whether or not the event from the SoHandleEventAction has been handled.

References SoHandleEventAction::isHandled(), and SoDebugError::postWarning().

void SoEventCallback::grabEvents (void)Set up the node so all future events (until releaseEvents() is called) in Coin will be directly forwarded to this node.

References SoDebugError::postWarning(), and SoHandleEventAction::setGrabber().

void SoEventCallback::releaseEvents (void)Do not grab event handling any more.

See also:

grabEvents()

References SoDebugError::postWarning(), and SoHandleEventAction::releaseGrabber().

void SoEventCallback::handleEvent (SoHandleEventAction * action) [protected, virtual]Invokes the registered callback functions.

Reimplemented from SoNode.

References SoPath::containsPath(), SoHandleEventAction::getEvent(), SbList< Type >::getLength(), SoPickedPoint::getPath(), SoHandleEventAction::getPickedPoint(), SoEvent::getTypeId(), SoType::isDerivedFrom(), and SoDebugError::postWarning().

Author

Generated automatically by Doxygen for Coin from the source code.