00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef COIN_SOSEARCHACTION_H
00021 #define COIN_SOSEARCHACTION_H
00022
00023 #include <Inventor/actions/SoAction.h>
00024 #include <Inventor/actions/SoSubAction.h>
00025 #include <Inventor/SbName.h>
00026 #include <Inventor/lists/SoPathList.h>
00027
00028
00029 class COIN_DLL_API SoSearchAction : public SoAction {
00030 typedef SoAction inherited;
00031
00032 SO_ACTION_HEADER(SoSearchAction);
00033
00034 public:
00035 SoSearchAction(void);
00036 virtual ~SoSearchAction();
00037
00038 static void initClass(void);
00039
00040 enum LookFor { NODE = 1, TYPE = 2, NAME = 4 };
00041 enum Interest { FIRST, LAST, ALL };
00042
00043 void setNode(SoNode * const node);
00044 SoNode * getNode(void) const;
00045 void setType(const SoType type, const SbBool chkderived = TRUE);
00046 SoType getType(SbBool & chkderived) const;
00047 void setName(const SbName name);
00048 SbName getName(void) const;
00049 void setFind(const int what);
00050 int getFind(void) const;
00051 void setInterest(const Interest interest);
00052 Interest getInterest(void) const;
00053 void setSearchingAll(const SbBool searchall);
00054 SbBool isSearchingAll(void) const;
00055 SoPath * getPath(void) const;
00056 SoPathList & getPaths(void);
00057 void reset(void);
00058
00059 void setFound(void);
00060 SbBool isFound(void) const;
00061 void addPath(SoPath * const path);
00062
00063 protected:
00064 virtual void beginTraversal(SoNode * node);
00065
00066 private:
00067 int lookfor;
00068 Interest interest;
00069 SbBool searchall, chkderived;
00070 SoNode * node;
00071 SoType type;
00072 SbName name;
00073 SoPath * path;
00074 SoPathList paths;
00075 };
00076
00077 #endif // !COIN_SOSEARCHACTION_H