![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2012 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: displayDefinitionWidget.h,v $ $Revision: 1.21 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 #pragma once 00012 00013 #include <vrvUtil/signalslib.h> 00014 #include "entityEditorImpl/entityEditorImplDefines.h" 00015 #include "entityEditorImpl/visualEditors.h" 00016 #include "entityEditorImpl/uiElement.h" 00017 #include <ngutil/entityMapperKey.h> 00018 #include <vlpi/entityType.h> 00019 00020 #include <vrvCore/DtWindow.h> 00021 #include <vrvCore/DtSelectionManager.h> 00022 00023 #include <QWidget> 00024 00025 class DtVrfObjectParameters; 00026 class DtModelSetEntry; 00027 class DtUiElementEvent; 00028 class QComboBox; 00029 class QHBoxLayout; 00030 class QGroupBox; 00031 class QLabel; 00032 class QPushButton; 00033 class DtModelDefinitionEditor; 00034 class DtSymbolEditor; 00035 class DtMarkerVisualizer; 00036 class QCheckBox; 00037 00038 namespace makVrf 00039 { 00040 class DtEntityFacadeCollection; 00041 } 00042 00043 namespace makVrv 00044 { 00045 class DtDe; 00046 class DtPluginManager; 00047 class DtOsgAdapterQtWidget; 00048 class DtElementDefinitionManager; 00049 class DtElementDefinitionNew; 00050 class DtChannelManager; 00051 class DtChannel; 00052 class DtObserver; 00053 } 00054 00056 class DT_DLL_entityeditorimpl DtDisplayWidget : public QWidget 00057 { 00058 Q_OBJECT 00059 00060 public: 00061 00063 DtDisplayWidget(makVrv::DtDe* de, QWidget * parent = 0, Qt::WindowFlags f = 0 ); 00064 00066 virtual ~DtDisplayWidget(); 00067 00068 makVrv::DtOsgAdapterQtWidget* adapterWidget(); 00069 00070 virtual void init(); 00071 00072 virtual void buildAdapterWidget(); 00073 00074 virtual void buildTicker(); 00075 00076 const std::vector<makVrv::DtObserver*> observers() const 00077 { 00078 return myObservers; 00079 } 00080 00081 std::vector<makVrv::DtObserver*> observers() 00082 { 00083 return myObservers; 00084 } 00085 00086 const std::vector<int>& modelSets() const 00087 { 00088 return myModelSets; 00089 } 00090 00091 int observerMode(int i) const 00092 { 00093 std::map<int, int>::const_iterator iter = myModeKeyMap.find(i); 00094 00095 if (iter != myModeKeyMap.end()) 00096 { 00097 return iter->second; 00098 } 00099 00100 return 0; 00101 } 00102 00103 const std::map<int, int>& modeMap() const 00104 { 00105 return myModeKeyMap; 00106 } 00107 00108 boost::signal<void ()> signal_channelsInitialized; 00109 00110 protected: 00111 00112 virtual void createIg(); 00113 00114 virtual void preIgInitialize(); 00115 00116 virtual void overrideIgFunctionality(); 00117 00118 virtual void igInitialize(); 00119 00120 virtual void postIgInitialize(); 00121 virtual void initializeChannels(); 00122 00123 virtual void createChannels(); 00124 virtual void resizeEvent( QResizeEvent* event); 00125 00126 protected: 00127 makVrv::DtDe* myDe; 00128 makVrv::DtOsgAdapterQtWidget* myAdapterWidget; 00129 std::vector<int> myModelSets; 00130 std::map<int, int> myModeKeyMap; 00131 std::vector<makVrv::DtObserver*> myObservers; 00132 }; 00133 00134 class DT_DLL_entityeditorimpl DtDisplayWidgetCreator : public makVrv::DtWindowCreator 00135 { 00136 00137 public: 00138 00139 DtDisplayWidgetCreator(DtDisplayWidget* pWidget); 00140 00142 virtual makVrv::DtWindow* create(makVrv::DtDe& de, makVrv::DtWindowConfiguration& wc); 00143 00144 protected: 00145 00146 DtDisplayWidget* myWidget; 00147 00148 }; 00149 00150 class DT_DLL_entityeditorimpl DtDisplayDefinitionWidget : public QWidget 00151 { 00152 Q_OBJECT 00153 00154 public: 00155 DtDisplayDefinitionWidget(QWidget* p); 00156 00157 virtual ~DtDisplayDefinitionWidget(); 00158 00159 virtual void init(); 00160 00161 virtual void edit(const DtEntityMapperKey&, bool move = true, bool fromSelection = false); 00162 virtual void clearContents(); 00163 00164 static DtDisplayDefinitionWidget* create(QWidget*); 00165 00166 virtual void revertExisting(const DtEntityMapperKey& key); 00167 00168 virtual void updateStatus(); 00169 00170 virtual void preSimulationModelSetSave(); 00171 00172 virtual void simulationModelSetLoaded(); 00173 00174 virtual void cloneEntry(const DtEntityType& oldType, const DtEntityType& newType, DtModelSetEntry*); 00175 virtual void uiEvent(const DtUiElementEvent&); 00176 00177 protected: 00178 virtual void postInitialize(); 00179 00182 virtual void setupVisualBases(const makVrv::DtElementDefinitionNew*); 00183 00184 virtual void setupEditor(int set); 00185 00186 virtual void createNewEntry(const DtEntityType& newType, DtModelSetEntry* model, const DtEntityType& basedOnType = DtEntityType()); 00187 00188 virtual DtVector visualPlacementFor(int set, const DtString&) const; 00189 virtual double groundHeight(const DtVector&) const; 00190 00191 virtual void positionToObject(int observer, bool allIs2D); 00192 virtual void createOrUpdatePositionMarker(const DtUiElementEvent&); 00193 virtual void destroyPositionMarker(const DtUiElementEvent&); 00194 virtual void setBoundingVolume(const DtUiElementEvent&); 00195 00198 virtual void mergeVisualizerAttributes(int modelSet, const makVrv::DtVisualizerDefinitionSet& source, makVrv::DtElementDefinitionNew* target) const; 00199 00201 virtual void createEntryIfNoEntry(const DtEntityType&); 00202 virtual void createEntityIfNoEntry(const DtEntityType&); 00203 virtual void createAggregateIfNoEntry(const DtEntityType&); 00204 00205 virtual void createEditors(bool allIs2D); 00206 00207 public slots: 00208 virtual void forcesModified(); 00209 virtual void setMarkerLabelsVisible(bool); 00210 virtual void setBoundingVolumesVisible(bool); 00211 00212 protected slots: 00213 virtual void visualBaseChanged(int); 00214 virtual void visualizerModified(); 00215 virtual void modelDefinitionModified(); 00216 virtual void opdEntryAdded(DtVrfObjectParameters* entry, DtModelSetEntry* model); 00217 virtual void markerVisibilityChanged(); 00218 virtual void boundingVolumesVisibilityChanged(); 00219 00220 signals: 00221 void visualsModified(); 00222 void uiElementEvent(const DtUiElementEvent&); 00223 void redisplayListIcons(); 00224 00225 public: 00226 DtDisplayWidget* myDisplayWidget; 00227 QLabel* myVisualBasesLabel; 00228 QComboBox* myVisualBases; 00229 QHBoxLayout* myMainLayout; 00230 QGroupBox* myGroupBox; 00231 00232 protected: 00233 makVrv::DtDe* myDe; 00234 DtEntityMapperKey myKey; 00235 QHBoxLayout* myEditorLayout; 00236 QHBoxLayout* myTitleLayout; 00237 00238 typedef std::vector<makVrf::DtEntityFacadeCollection*> Facades; 00239 00240 Facades myFacades; 00241 00242 bool myShowingAggregate; 00243 makVrv::DtElementDefinitionNew* myElementDefinition; 00244 makVrv::DtElementDefinitionManager* myManager; 00245 00246 typedef std::pair<makVrv::DtElementDefinitionManager*, makVrv::DtElementDefinitionNew*> ElementDefinitionPair; 00247 typedef std::map<std::string, ElementDefinitionPair> ElementDefinitionMap; 00248 00249 ElementDefinitionMap myElementDefinitionMap; 00250 00251 std::map<int, DtVisualEditor*> myEditors; 00252 std::vector<QLabel*> myTitles; 00253 00254 bool myModelDefinitionModified; 00255 bool myEntityModified; 00256 bool myAggregateModified; 00257 00258 typedef std::pair<DtVector, DtTaitBryan> CameraInfo; 00259 typedef std::map<int, CameraInfo> CameraMap; 00260 CameraMap myCameraInfo; 00261 00262 typedef std::map<int, DtMarkerVisualizer*> Markers; 00263 Markers myMarkers; 00264 00265 QCheckBox* myMarkerLabelsVisible; 00266 QCheckBox* myBoundingVolumesVisible; 00267 DtUiElementEvent myLastBoundingVolume; 00268 00269 bool myHaveWarned; 00270 };