Provided by: libcoin80-doc_3.1.4~abc9f50-4ubuntu2_all bug

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
       virtual SoType getTypeId (void) const
           Returns the type identification of an object derived from a class inheriting SoBase.
           This is used for run-time type checking and 'downward' casting.
       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 SoType getClassTypeId (void)
       static void initClass (void)

   Protected Member Functions
       virtual const SoFieldData * getFieldData (void) const
       virtual ~SoEventCallback ()
       virtual void handleEvent (SoHandleEventAction *action)

   Static Protected Member Functions
       static const SoFieldData ** getFieldDataPtr (void)

   Additional Inherited Members

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.

Member Function Documentation

   SoType SoEventCallback::getTypeId (void) const [virtual]
       Returns the type identification of an object derived from a class inheriting SoBase. This
       is used for run-time type checking and 'downward' casting. Usage example:

       void foo(SoNode * node)
       {
         if (node->getTypeId() == SoFile::getClassTypeId()) {
           SoFile * filenode = (SoFile *)node;  // safe downward cast, knows the type
         }
       }

       For application programmers wanting to extend the library with new nodes, engines,
       nodekits, draggers or others: this method needs to be overridden in all subclasses. This
       is typically done as part of setting up the full type system for extension classes, which
       is usually accomplished by using the pre-defined macros available through for instance
       Inventor/nodes/SoSubNode.h (SO_NODE_INIT_CLASS and SO_NODE_CONSTRUCTOR for node classes),
       Inventor/engines/SoSubEngine.h (for engine classes) and so on.

       For more information on writing Coin extensions, see the class documentation of the
       toplevel superclasses for the various class groups.

       Implements SoBase.

   const SoFieldData * SoEventCallback::getFieldData (void) const [protected],  [virtual]
       Returns a pointer to the class-wide field data storage object for this instance. If no
       fields are present, returns NULL.

       Reimplemented from SoFieldContainer.

   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()

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

       See Also:
           setPath()

   void SoEventCallback::addEventCallback (SoTypeeventtype, 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.

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

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

   const SoEvent * SoEventCallback::getEvent (void) const
       Returns 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.

   const SoPickedPoint * SoEventCallback::getPickedPoint (void) const
       Returns 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.

   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.

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

   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.

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

       See Also:
           grabEvents()

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

       Reimplemented from SoNode.

Author

       Generated automatically by Doxygen for Coin from the source code.