![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2003 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: createControlObjectHandler.h,v $ $Revision: 1.25 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef CREATECONTROLOBJECTHANDLER_H_ 00013 #define CREATECONTROLOBJECTHANDLER_H_ 00014 00015 #include "tmEventHandler/creationHandler.h" 00016 #include "geometry/point.h" 00017 #include "tmqt/eventSignaller.h" 00018 00019 class DtModelData; 00020 class DtSymbol; 00021 class QPointArray; 00022 class DtOverlaySymbolDescriptor; 00023 00024 typedef QWidget* (*DtDialogCreator)(QWidget* parent, const Qt::WindowFlags& flags); 00025 00026 class DtDialogCreatorInfo 00027 { 00028 public: 00029 DtDialogCreatorInfo() {}; 00030 DtDialogCreatorInfo(const DtDialogCreatorInfo& orig) : 00031 myKey(orig.myKey), myCreator(orig.myCreator) {}; 00032 00033 DtEntityMapperKey myKey; 00034 DtDialogCreator myCreator; 00035 }; 00036 00038 #include "tmEventHandler/tmEventHandlerDefines.h" 00039 class DT_DLL_tmEventHandler DtCreateControlObjectHandler : public DtCreationHandler 00040 { 00041 Q_OBJECT 00042 00043 public: 00044 00046 DtCreateControlObjectHandler(); 00047 00049 virtual ~DtCreateControlObjectHandler(); 00050 00051 virtual QWidget* createDialog(QWidget* parent); 00052 00055 static bool addDialogCreator(const DtEntityMapperKey& key, DtDialogCreator fcn); 00056 00059 static void cleanupDialogCreators(); 00060 virtual void setCreationObject(DtEntityMapperKey obj, int frc); 00061 00064 virtual void setVertices(const QVector<DtPoint>& pnt); 00065 virtual void setName(const QString& name); 00066 00067 static void setDefaultNameLabel(const QString&); 00068 static QString defaultNameLabel(); 00069 00070 public slots: 00073 virtual void create(QVector<DtPoint>& points, QString name, QString label, 00074 QColor color, int forceType, int appearance, bool publish, 00075 QString attachTo, DtArchivableObject* userData, bool createDone = true); 00076 00077 virtual void completeEdit(QString name, QString label, QColor color, 00078 int forceType, int appearance, bool publish, DtArchivableObject* userData); 00079 virtual void cancel(); 00080 virtual bool mouseEvent(DtTMMapArea* area, QMouseEvent* evnt, const DtPoint& pnt); 00081 virtual void updateTempSymbol(); 00082 virtual void redrawSymbol(); 00083 virtual void clearHideSymbol(); 00085 virtual void done(); 00086 00087 signals: 00088 void selectedPoint(const DtPoint& p); 00089 00094 void userComplete(bool finish); 00095 00096 protected: 00098 virtual QWidget* createWidgetFor(const DtEntityMapperKey& key, QWidget* parent); 00099 00101 virtual void setWorkingName() = 0; 00102 00105 virtual void additionalTempSymbolModifications(QPolygon& pts); 00106 00108 virtual void initDialog(QWidget* w); 00109 00113 virtual void initDialogConnections(); 00114 00116 virtual void initCreateConnections(); 00117 00119 virtual void initEditConnections(); 00120 00121 virtual void pointSelected(const DtPoint& p); 00122 00123 virtual void activate(); 00124 virtual void deactivate(); 00125 virtual void stop(const DtPoint& pnt); 00126 00129 virtual DtSymbol* createTempSymbol(DtTMMapArea* area); 00130 00131 virtual DtSymbol* createSymbol(DtTMMapArea* area); 00132 00133 virtual void getVertices(QVector<DtPoint>& modelPoints) const; 00134 00135 virtual bool canPublish() const; 00136 virtual bool isPublished() const; 00137 00139 virtual void setCaption(QWidget* w); 00140 00142 virtual QString defaultName() const; 00143 00145 virtual void sendUserComplete(bool finish = false); 00146 00147 virtual bool userDefinedAction(DtUserDefinedType iAction, void* usr); 00148 00151 virtual bool complete() const; 00152 00154 virtual bool finishOnCreate() const; 00155 00156 virtual void disconnectDialogConnections(); 00157 virtual void disconnectEditConnections(); 00158 virtual void disconnectCreateConnections(); 00159 00161 virtual int publishedEditTimeout() const; 00162 00163 virtual const char* eventSignalName() { return DtCreateControlObjectWidgetEvent; }; 00164 00165 virtual QPixmap createCursor(); 00166 00167 virtual void dialogDestroyedEvent(); 00168 00169 protected: 00170 QVector<DtPoint> myPointList; 00171 QString myObjectName; 00172 QString myLabelName; 00173 bool myFinalPointSelected; 00174 DtSymbol* myHideSymbol; 00175 DtOverlaySymbolDescriptor* myDescription; 00176 bool myDeleteDescription; 00177 bool myFirstClick; 00178 00181 DtArchivableObject* myUserData; 00182 00184 static QList<DtDialogCreatorInfo*> myDialogCreators; 00185 static QString theDefaultNameLabel; 00186 }; 00187 00188 #endif //CREATECONTROLOBJECTHANDLER_H_