![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2008 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: formationEditor.h,v $ $Revision: 1.21 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DTFORMATIONEDITOR_H_ 00013 #define DTFORMATIONEDITOR_H_ 00014 00015 #include "entityEditorImpl/uiElement.h" 00016 #include "entityEditorImpl/entityEditorImplDefines.h" 00017 #include "tmqt/echHierarchy.h" 00018 #include "tmqt/tmMapArea.h" 00019 #include "tmqt/echViewOptions.h" 00020 #include "tmEventHandler/navigationHandler.h" 00021 #include "entityEditorImpl/formationSymbolFilter.h" 00022 #include "entityEditorImpl/formationGridLineDrawer.h" 00023 #include "entityEditorImpl/formationDragDropHandler.h" 00024 #include <vlpi/disEnums.h> 00025 00026 class DtNavigationWidget; 00027 class DtFormationSymbolUpdater; 00028 class DtFormationSymbolMapper; 00029 class DtFormationHierarchy; 00030 class DtFormationModelData; 00031 class DtFormationRightClickMenu; 00032 class DtVrfSubObjectParameterList; 00033 class DtVrfObjectParameters; 00034 class DtVrfSubObjectParameterEntry; 00035 class DtFormation; 00036 class DtEchelonView; 00037 class DtFormationTable; 00038 class DtFormationEntry; 00039 class QKeyEvent; 00040 00041 class DT_DLL_entityeditorimpl DtFormationEditor : public DtTMMapArea 00042 { 00043 Q_OBJECT 00044 00045 public: 00046 DtFormationEditor(QWidget* p); 00047 00048 virtual ~DtFormationEditor(); 00049 00050 virtual bool init(const DtTMFactory*, const DtString& subObjName); 00051 00053 virtual void setSubordinatesList(DtVrfObjectParameters*, DtVrfSubObjectParameterList*); 00054 00056 virtual void setForceId(DtForceType id); 00057 00059 virtual void setFormation(const QString&); 00060 00062 virtual void setFormationTable(DtFormationTable*); 00063 00065 virtual void setExpanded(const DtModelKey &key, bool expand); 00066 00069 virtual void expandPath(const QStringList&, bool expand); 00070 00072 virtual void selectPath(const QString&); 00073 00075 virtual QString selectionPath(const DtModelKey&) const; 00076 00078 virtual QString selectionPath() const; 00079 00080 virtual DtObjectType selectedObjectType() const; 00081 00082 virtual DtFormationModelData* rootNode() const { return myRootNode; }; 00083 virtual DtFormationModelData* selectedModelData() const; 00084 00085 virtual void markAllForUpdate(); 00086 00088 virtual void removeFormationEntry(DtFormationEntry*); 00089 00091 virtual DtExtent extent() const; 00092 00094 virtual int promotionIdAt(int) const; 00095 00096 virtual void repositionInFormation(int iFrom, int iTo); 00097 virtual void replaceObjectInFormation(int iPos); 00098 00100 virtual void addObjectTypeAtPosition(DtVrfSubObjectParameterEntry* entry, int pos, bool addAtPos = true); 00101 00103 virtual int nestingLevel() const; 00104 virtual void setNestingLevel(int); 00105 00107 virtual bool canExpand() const; 00108 virtual void collapseAllOneLevel(); 00109 virtual void expandAllOneLevel(); 00110 virtual void toggleBoundingBoxes(); 00111 virtual void toggleSnapToGrid(); 00112 00113 bool snapToGrid() const; 00114 bool showBoundingBoxes() const; 00115 00116 virtual void setScaleFactor(double); 00117 virtual double scaleFactor() const; 00118 00119 protected: 00120 virtual DtFormationSymbolFilter* createFilter(DtTMArea*); 00121 virtual DtFormationHierarchy* createHierarchy(); 00122 virtual DtFormationModelData* createFormationModelData(DtVrfSubObjectParameterList*, DtVrfSubObjectParameterEntry*); 00123 virtual DtFormationSymbolMapper* createSymbolMapper(); 00124 virtual DtFormationSymbolUpdater* createSymbolUpdater(); 00125 virtual DtFormationGridLineDrawer* createGridLineDrawer(); 00126 virtual DtFormationRightClickMenu* createFormationRightClickMenu(); 00127 00128 virtual void createHierarchy(DtFormationModelData*); 00129 virtual void createHierarchy(DtFormationModelData*, DtVrfSubObjectParameterEntry* subEntry); 00130 00132 virtual void setupFormation(); 00133 00134 virtual DtFormationModelData* dataFromPath(const QStringList&) const; 00135 00136 virtual void dragLeaveEvent(QDragLeaveEvent* e); 00137 virtual void dragMoveEvent(QDragMoveEvent* e); 00138 virtual void dragEnterEvent(QDragEnterEvent* e); 00139 virtual void dropEvent(QDropEvent* e); 00140 virtual bool terrainLoaded() const { return true; }; 00141 virtual void resizeEvent(QResizeEvent* e); 00142 virtual void removeModelDataEntry(DtFormationModelData* fmd); 00143 00144 signals: 00145 void edit(); 00146 void expand(); 00147 void collapse(); 00148 void setFormation(); 00149 void formationModified(); 00150 00151 public slots: 00152 virtual void zoomIn(); 00153 virtual void zoomOut(); 00154 virtual void resetToGlobalView(); 00155 virtual void panNorth(); 00156 virtual void panNortheast(); 00157 virtual void panEast(); 00158 virtual void panSoutheast(); 00159 virtual void panSouth(); 00160 virtual void panSouthwest(); 00161 virtual void panWest(); 00162 virtual void panNorthwest(); 00163 00164 virtual void setShowBoundingBoxes(bool); 00165 virtual void setSnapToGrid(bool); 00166 00167 protected slots: 00168 virtual void viewportExtentsChanged(); 00169 virtual void mouseEvent(QMouseEvent*, const DtPoint&); 00170 virtual void keyboardEvent(QKeyEvent*); 00171 virtual void redoAggregateLayering(); 00172 virtual void drawGridLines(QPainter*); 00173 virtual void postDraw(QPainter*); 00174 virtual void rightMouseContext(DtSymbolList*,QPoint); 00175 00176 protected: 00177 DtFormationSymbolFilter* myFilter; 00178 DtFormationHierarchy* myHierarchy; 00179 DtVrfSubObjectParameterList* mySubordinatesList; 00180 DtEchelonViewOptions myOptions; 00181 DtEchelonView* myEchelonView; 00182 DtFormationSymbolMapper* mySymbolMapper; 00183 DtString mySubordinateObjectsName; 00184 DtForceType myForceId; 00185 DtFormationTable* myFormationTable; 00186 QString myFormation; 00187 DtVrfObjectParameters* myParameters; 00188 DtFormationModelData* myRootNode; 00189 DtNavigationHandler myNavigationHandler; 00190 DtFormationDragDropHandler myDragDropHandler; 00191 DtFormationGridLineDrawer* myGridLineDrawer; 00192 DtNavigationWidget* myNavigationWidget; 00193 }; 00194 00195 inline bool DtFormationEditor::snapToGrid() const 00196 { 00197 return myDragDropHandler.snapToGrid(); 00198 } 00199 00200 #endif 00201