trusty (3) SoSelection.3iv.gz

Provided by: inventor-doc_2.1.5-10-18_all bug

NAME

       SoSelection — manages a list of selected objects

INHERITS FROM

       SoBase > SoFieldContainer > SoNode > SoGroup > SoSeparator > SoSelection

SYNOPSIS

       #include <Inventor/nodes/SoSelection.h>

     typedef void        SoSelectionPathCB(void *userData, SoPath *path)
     typedef void        SoSelectionClassCB(void *userData, SoSelection *sel)
     typedef SoPath *    SoSelectionPickCB(void *userData, const SoPickedPoint *pick)

     enum Policy {
          SoSelection::SINGLE  Left  mouse pick on object clears selection, then selects object. Left mouse pick
                                    on nothing clears selection. Only one object may be selected at a time.
          SoSelection::TOGGLE  Left mouse pick on object toggles  its  selection  status.  Left  mouse  pick  on
                                    nothing does nothing. Multiple objects may be selected.
          SoSelection::SHIFT   When  shift  key  is  down,  selection  policy  is  TOGGLE. When shift key is up,
                                    selection policy is SINGLE. Multiple objects may be selected.
     }

          Fields from class SoSelection:

     SoSFEnum            policy

          Fields from class SoSeparator:

     SoSFEnum            renderCaching
     SoSFEnum            boundingBoxCaching
     SoSFEnum            renderCulling
     SoSFEnum            pickCulling

          Methods from class SoSelection:

                         SoSelection()
                         SoSelection(int nChildren)
     static SoType       getClassTypeId()
     void                select(const SoPath *path)
     void                select(SoNode *node)
     void                deselect(const SoPath *path)
     void                deselect(int which)
     void                deselect(SoNode *node)
     void                toggle(const SoPath *path)
     void                toggle(SoNode *node)
     SbBool              isSelected(const SoPath *path) const
     SbBool              isSelected(SoNode *node) const
     void                deselectAll()
     int                 getNumSelected() const
     const SoPathList *  getList() const
     SoPath *            getPath(int index) const
     SoPath *            operator [](int i) const
     void                addSelectionCallback(SoSelectionPathCB *f, void *userData = NULL)
     void                removeSelectionCallback(SoSelectionPathCB *f, void *userData = NULL)
     void                addDeselectionCallback(SoSelectionPathCB *f, void *userData = NULL)
     void                removeDeselectionCallback(SoSelectionPathCB *f, void *userData = NULL)
     void                addStartCallback(SoSelectionClassCB *f, void *userData = NULL)
     void                removeStartCallback(SoSelectionClassCB *f, void *userData = NULL)
     void                addFinishCallback(SoSelectionClassCB *f, void *userData = NULL)
     void                removeFinishCallback(SoSelectionClassCB *f, void *userData = NULL)
     void                setPickFilterCallback(SoSelectionPickCB   *f,   void   *userData   =    NULL,    SbBool
                              callOnlyIfSelectable = TRUE)
     void                setPickMatching(SbBool pickTwice)
     SbBool              getPickMatching() const

          Methods from class SoSeparator:

     static void         setNumRenderCaches(int howMany)
     static int          getNumRenderCaches()

          Methods from class SoGroup:

     void                addChild(SoNode *child)
     void                insertChild(SoNode *child, int newChildIndex)
     SoNode *            getChild(int index) const
     int                 findChild(const SoNode *child) const
     int                 getNumChildren() const
     void                removeChild(int index)
     void                removeChild(SoNode *child)
     void                removeAllChildren()
     void                replaceChild(int index, SoNode *newChild)
     void                replaceChild(SoNode *oldChild, SoNode *newChild)

          Methods from class SoNode:

     void                setOverride(SbBool state)
     SbBool              isOverride() const
     SoNode *            copy(SbBool copyConnections = FALSE) const
     virtual SbBool      affectsState() const
     static SoNode *     getByName(const SbName &name)
     static int          getByName(const SbName &name, SoNodeList &list)

          Methods from class SoFieldContainer:

     void                setToDefaults()
     SbBool              hasDefaultValues() const
     SbBool              fieldsAreEqual(const SoFieldContainer *fc) const
     void                copyFieldValues(const SoFieldContainer *fc, SbBool copyConnections = FALSE)
     SbBool              set(const char *fieldDataString)
     void                get(SbString &fieldDataString)
     virtual int         getFields(SoFieldList &resultList) const
     virtual SoField *   getField(const SbName &fieldName) const
     SbBool              getFieldName(const SoField *field, SbName &fieldName) const
     SbBool              isNotifyEnabled() const
     SbBool              enableNotify(SbBool flag)

          Methods from class SoBase:

     void                ref()
     void                unref() const
     void                unrefNoDelete() const
     void                touch()
     virtual SoType      getTypeId() const
     SbBool              isOfType(SoType type) const
     virtual void        setName(const SbName &name)
     virtual SbName      getName() const

DESCRIPTION

       SoSelection  defines  a  node  which  can  be  inserted into a scene graph and will generate and manage a
       selection list from picks on any node in the subgraph below it. Nodes are selected  based  on  a  current
       selection  policy.   Callback  functions  report back to the application when a path has been selected or
       deselected. The selection list can also be managed programmatically.

       When handling events, SoSelection makes sure that the mouse release event was over the same object as the
       mouse  press  event  before  changing the list of selected objects. This allows users to mouse down on an
       object, change their mind and move the cursor off the object,  then  release  the  mouse  button  without
       altering the selection.

       The selection can be highlighted automatically through the SoXtRenderArea, or the application can provide
       custom highlights. Please see the  chapter  "Creating  a  Selection  Highlight  Style"  in  the  Inventor
       Toolmaker.

FIELDS

     SoSFEnum            policy
          Selection   policy   that   is  followed  in  response  to  user  interaction.  This  can  be  set  to
          SoSelection::SINGLE, SoSelection::TOGGLE, or SoSelection::SHIFT.

METHODS

                         SoSelection()
          Creates a selection node with the default settings.

                         SoSelection(int nChildren)
          Constructor that specifies the approximate number of children.

     static SoType       getClassTypeId()
          Return the type id for the SoSelection class.

     void                select(const SoPath *path)
          Select the passed path by adding it to the selection list. The selection node must lie  in  the  path.
          The  path  is  copied  and  truncated  such  that  the  selection node is the head of the path. If the
          selection node does not lie in the path, the selection list remains unchanged. This method ignores the
          current selection policy.

     void                select(SoNode *node)
          Select  the passed node by creating a path to it, and adding the path to the selection list by calling
          select(path). If there is more than one instance of node beneath the selection node, the created  path
          will be the first instance found.

     void                deselect(const SoPath *path)
          Deselect the passed path by removing it from the selection list.

     void                deselect(int which)
          Deselect a path by removing it from the selection list. The argument which specifies which path in the
          list to be removed.

     void                deselect(SoNode *node)
          Deselect the passed node by creating a path to it, and removing the node from the  selection  list  by
          calling  deselect(path).  If  there  is more than one instance of node beneath the selection node, the
          created path will be the first instance found.

     void                toggle(const SoPath *path)
          Toggle the selection status of the passed path — if the path is in the selection list, it is  removed;
          if not in the list, it is added.

     void                toggle(SoNode *node)
          Toggle the selection status of the passed node by creating a path to it, then calling toggle(path). If
          there is more than one instance of node beneath the selection node, the created path will be the first
          instance found.

     SbBool              isSelected(const SoPath *path) const
          Returns TRUE if the passed path is selected, that is, if it is in the selection list.

     SbBool              isSelected(SoNode *node) const
          Returns  TRUE  if  the passed node is selected by creating a path to it, then calling isSelected(). If
          there is more than one instance of node beneath the selection node, the created path will be the first
          instance found.

     void                deselectAll()
          Deselect all paths in the selection list, that is, clear the list.

     int                 getNumSelected() const
          Return the number of paths in the selection list.

     const SoPathList *  getList() const
          Return the list of selected paths.

     SoPath *            getPath(int index) const
     SoPath *            operator [](int i) const
          Return the ith path in the selection list.

     void                addSelectionCallback(SoSelectionPathCB *f, void *userData = NULL)
     void                removeSelectionCallback(SoSelectionPathCB *f, void *userData = NULL)
          The  selection  callbacks  are  invoked  every  time  an  object  is selected, whether it be from user
          interaction or from method call. The callbacks are invoked after the object  has  been  added  to  the
          selection list.

     void                addDeselectionCallback(SoSelectionPathCB *f, void *userData = NULL)
     void                removeDeselectionCallback(SoSelectionPathCB *f, void *userData = NULL)
          The  deselection  callbacks  are  invoked  every time an object is deselected, whether it be from user
          interaction or from method call. This is invoked after the object has been removed from the  selection
          list.

     void                addStartCallback(SoSelectionClassCB *f, void *userData = NULL)
     void                removeStartCallback(SoSelectionClassCB *f, void *userData = NULL)
          The  start  callbacks  are  invoked when the user has initiated an interactive change to the selection
          list (by picking objects). This will  be  followed  by  invocations  of  the  select  and/or  deselect
          callbacks,  finally  followed  by each finish callback. A start callback can be used, for instance, to
          save the current selection for later restoration (e.g. undo/redo). The start callbacks are not  called
          when the selection list is changed programmatically.

     void                addFinishCallback(SoSelectionClassCB *f, void *userData = NULL)
     void                removeFinishCallback(SoSelectionClassCB *f, void *userData = NULL)
          The  finish callbacks are invoked when the user has finished interactively changing the selection list
          (by picking objects). This was preceded by an invocation of each start callback,  and  invocations  of
          the  select  and/or deselect callbacks. The finish callbacks are not called when the selection list is
          changed programmatically.

     void                setPickFilterCallback(SoSelectionPickCB   *f,   void   *userData   =    NULL,    SbBool
                              callOnlyIfSelectable = TRUE)
          The pick filter callback is invoked when a pick has occurred and the selection node is about to change
          the selection list. The callback function returns the path that the selection  node  should  use  when
          selecting  and  deselecting.  If no pick callback is registered (the default), the selection node will
          use the path returned by SoPickedPoint::getPath() on the picked point associated with the event  being
          processed.  The  returned  path  should  not  be  ref'd  -  selection  will ref() and unref() it. (See
          SoPath::unrefNoDelete().)

          Note that a picked object may or may not be a child of the selection node. A selection node will  only
          select paths that pass through it. Possible return values from the callback:

          [a] NULL — selection behaves as if nothing was picked (i.e. for SINGLE and SHIFT policies, this clears
          the selection list). Handle event action traversal halts.

          [b] Path — this path will be selected/deselected according to the selection policy (it must lie  under
          the selection node). Handle event action traversal halts.

          [c]  Path  containing  only  the selection node — apply the selection policy as if nothing was picked.
          Handle event action traversal continues.

          [d] Path not passing through the selection node — selection ignores this pick event and no  change  is
          made to the selection list. Handle event action traversal continues.

          A  simple  way  to tell selection to ignore the pick is to return an SoPath with no nodes in it. (i.e.
          return new SoPath;) Selection will always ref the path returned by the callback, make a  copy  of  the
          path, then unref the path.

          The  callOnlyIfSelectable  argument,  when  set to TRUE, means the pick callback function will only be
          invoked on picks which pass through the selection node. When FALSE, all picks will be  passed  to  the
          callback whether they pass through the selection or not.

     void                setPickMatching(SbBool pickTwice)
     SbBool              getPickMatching() const
          SoSelection  will  pick  once on mouse down and once on mouse up, and make sure the picks match before
          changing the selection list. This allows the user to pick down on an object,  change  their  mind  and
          drag  off  the object, release the mouse button and not affect the selection. Pass TRUE to enable this
          behavior. Pass FALSE to disable this,  meaning  whatever  is  picked  on  a  mouse  release  is  added
          to/removed from the selection list. Default is pick-matching on.

FILE FORMAT/DEFAULTS

       Selection {
          renderCaching       AUTO
          boundingBoxCaching  AUTO
          renderCulling       AUTO
          pickCulling         AUTO
          policy              SHIFT
     }

SEE ALSO

       SoEventCallback, SoXtRenderArea, SoBoxHighlightRenderAction, SoLineHighlightRenderAction

                                                                                              SoSelection(3IV)()