![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2002 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: objectSelector.h,v $ $Revision: 1.10 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef DTOBJECTSELECTOR_H_ 00013 #define DTOBJECTSELECTOR_H_ 00014 00015 #include "tmqt/symbolSelector.h" 00016 #include "tmqt/selectionFilters.h" 00017 #include "ngutil/dtqlist.h" 00018 00019 class DtSymbol; 00020 00023 00024 #include "tmqt/tmqtDefines.h" 00025 class DT_DLL_tmqt DtObjectSelector : public DtSymbolSelector 00026 { 00027 00028 Q_OBJECT 00029 00030 public: 00031 00032 enum DtSelectorType 00033 { 00034 DtNone = 0, 00035 DtRectSelector, 00036 DtCircleSelector, 00037 DtCirclePointsSelector, 00038 DtCircleInscribedPointsSelector, 00039 DtSinglePointSelector, 00040 DtMAXSelectorType 00041 }; 00042 00044 DtObjectSelector(); 00045 00047 virtual ~DtObjectSelector(); 00048 00050 virtual void selectSymbols(DtModelDataIter *iter, Qt::KeyboardModifiers keyState, Qt::MouseButtons mouseState); 00051 00053 static DtObjectSelector* create(); 00054 00058 virtual void setSelectionFilter(const DtFilter&); 00059 virtual const DtFilter* selectionFilter() const; 00060 00062 virtual void revalidateSelectedKeys(DtModelDataIter *iter); 00063 00065 virtual void clearFilter(); 00066 00069 virtual DtSymbol* symbolAtLocation(DtModelDataIter* iter, const DtPoint& pnt); 00070 00073 virtual void backupSelectionFilter(); 00074 virtual bool restoreSelectionFilter(); 00075 00076 private: 00078 DtObjectSelector(const DtObjectSelector& orig); 00079 00081 DtObjectSelector& operator=(const DtObjectSelector& orig); 00082 00083 00084 protected: 00087 virtual bool isValidForSelectionMode(const DtModelData* data); 00088 00091 virtual bool isValidForSelectionMode(const DtSymbol* symbol); 00092 00095 virtual bool isValidForMode(const DtModelData* data, const DtSymbol *s); 00096 00098 virtual void select(DtModelDataIter* iter, QVector<DtModelKey>& keys, 00099 Qt::KeyboardModifiers keyState, Qt::MouseButtons mouseState); 00100 00102 virtual bool isInRectangle(const DtModelData* data, DtSymbol* s, 00103 const QPoint& start, const QPoint& end) const; 00104 virtual bool isInPoint(const DtModelData* data, DtSymbol* s, 00105 const QPoint& start, const QPoint& end) const; 00106 virtual bool isInCircle(const DtModelData* data, DtSymbol* s, 00107 const QPoint& start, const QPoint& end) const; 00108 virtual bool isInRectCircle(const DtModelData* data, DtSymbol* s, 00109 const QPoint& start, const QPoint& end) const; 00110 00112 virtual bool selectForMode(const DtModelData* data, DtSymbol* s, const QPoint& start, const QPoint& end) const; 00113 00117 virtual void postProcessForMode(DtModelDataIter* iter, const QPoint& start, const QPoint& end, QVector<DtModelKey>& keys); 00118 virtual void postProcessRectangleMode(DtModelDataIter* iter, const QPoint& start, const QPoint& end, QVector<DtModelKey>& keys); 00119 00121 virtual void highlightSymbols(QVector<DtModelKey>* display = NULL); 00122 virtual bool passesFinalSelectionTest(const DtSymbol* s); 00123 00126 virtual void removeSingleSelectionItems(DtModelDataIter *iter, QVector<DtModelKey>&); 00127 virtual bool isSingleSelectionItem(DtModelData* data, DtSymbol* s) const; 00128 00129 protected: 00130 DtFilter* mySelectionFilter; 00131 DtPtrQList<DtFilter*> myFilterBackups; 00132 }; 00133 00134 #endif //DTOBJECTSELECTOR_H_ 00135